LCOV - code coverage report
Current view: top level - isdb - SAXS.cpp (source / functions) Hit Total Coverage
Test: plumed test coverage Lines: 5227 6861 76.2 %
Date: 2024-10-18 14:00:25 Functions: 21 23 91.3 %

          Line data    Source code
       1             : /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
       2             :    Copyright (c) 2017-2023 The plumed team
       3             :    (see the PEOPLE file at the root of the distribution for a list of names)
       4             : 
       5             :    See http://www.plumed.org for more information.
       6             : 
       7             :    This file is part of plumed, version 2.
       8             : 
       9             :    plumed is free software: you can redistribute it and/or modify
      10             :    it under the terms of the GNU Lesser General Public License as published by
      11             :    the Free Software Foundation, either version 3 of the License, or
      12             :    (at your option) any later version.
      13             : 
      14             :    plumed is distributed in the hope that it will be useful,
      15             :    but WITHOUT ANY WARRANTY; without even the implied warranty of
      16             :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      17             :    GNU Lesser General Public License for more details.
      18             : 
      19             :    You should have received a copy of the GNU Lesser General Public License
      20             :    along with plumed.  If not, see <http://www.gnu.org/licenses/>.
      21             : +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
      22             : /*
      23             :  This class was originally written by Alexander Jussupow
      24             :  Arrayfire implementation by Alexander Jussupow and CC
      25             :  Extension for the middleman algorithm (now removed) by Max Muehlbauer
      26             :  Refactoring for hySAXS Martini form factors for Nucleic Acids by Cristina Paissoni
      27             :  Refactoring for hySAS OneBead form factors with solvent correction by Federico Ballabio and Riccardo Capelli
      28             :  Resolution function by Henrique Musseli Cezar
      29             : */
      30             : 
      31             : #include "MetainferenceBase.h"
      32             : #include "core/ActionRegister.h"
      33             : #include "core/ActionSet.h"
      34             : #include "core/GenericMolInfo.h"
      35             : #include "tools/MolDataClass.h"
      36             : #include "tools/Communicator.h"
      37             : #include "tools/Pbc.h"
      38             : #include "tools/PDB.h"
      39             : #include "tools/Tools.h"
      40             : #include "tools/IFile.h"
      41             : 
      42             : #include <map>
      43             : #include <iterator>
      44             : #include <iostream>
      45             : #include <algorithm>
      46             : #include <cctype>
      47             : 
      48             : #ifdef __PLUMED_HAS_ARRAYFIRE
      49             : #include <arrayfire.h>
      50             : #include <af/util.h>
      51             : #ifdef __PLUMED_HAS_ARRAYFIRE_CUDA
      52             : #include <cuda_runtime.h>
      53             : #include <cublas_v2.h>
      54             : #include <af/cuda.h>
      55             : #elif __PLUMED_HAS_ARRAYFIRE_OCL
      56             : #include <af/opencl.h>
      57             : #endif
      58             : #endif
      59             : 
      60             : #ifndef M_PI
      61             : #define M_PI           3.14159265358979323846
      62             : #endif
      63             : 
      64             : namespace PLMD {
      65             : namespace isdb {
      66             : 
      67             : //+PLUMEDOC ISDB_COLVAR SAXS
      68             : /*
      69             : Calculates SAXS intensity.
      70             : 
      71             : SAXS intensities are calculated for a set of scattering vectors using QVALUE keywords numbered from 1.
      72             : Form factors can be assigned either by polynomial expansion of any order by using the PARAMETERS keywords, or
      73             : automatically matched to atoms using the ATOMISTIC flag by reading a PDB file. Alternatively to the atomistic
      74             : representation, two types of coarse-grained mapping are available:
      75             : - MARTINI.
      76             : - ONEBEAD.
      77             : 
      78             : Whether for PARAMETERS, ATOMISTIC, and ONEBEAD the user must provide an all-atom PDB file via MOLINFO before the
      79             : SAXS instruction. MARTINI requires a mapping scheme consisting of a PDB file that contains both the all-atom
      80             : and MARTINI representations, and a bead position file (e.g., bead1: CENTER ATOMS=1,5,7,11,12 WEIGHTS=14,12,12,
      81             : 12,16).
      82             : 
      83             : ONEBEAD scheme consists in a single-bead per amino acid residue or three-bead for nucleic acid residue (one for
      84             : the phosphate group, one for the pentose sugar, one for the nucleobase). PLUMED creates a virtual bead on which
      85             : the SAXS calculations are performed, centred on the COM of all atoms belonging to the bead. It is possible to
      86             : account for the contribution of the solvation layer to the SAXS intensity by adding a correction term for the
      87             : solvent accessible beads only: the form factors of the amino acids / phosphate groups / pentose sugars /
      88             : nucleobases with a SASA (computed via LCPO algorithm) greater than a threshold are corrected according to an
      89             : electron density term. Both the surface cut-off threshold and the electron density term can be set by the user
      90             : with the SASA_CUTOFF and SOLVATION_CORRECTION keywords. Moreover, SASA stride calculation can be modified using
      91             : SOLVATION_STRIDE, which is set to 10 steps by default.
      92             : ONEBEAD requires an additional PDB file to perform mapping conversion, which must be provided via TEMPLATE
      93             : keyword. This PDB file should only include the atoms for which the SAXS intensity will be computed.
      94             : The AMBER OL3 (RNA) and OL15 (DNA) naming is required for nucleic acids.
      95             : Three additional bead types are available for DNA and RNA besides phosphate group, pentose sugar, and nucleobase:
      96             : - 5'-end pentose sugar capped with an hydroxyl moiety at C5' (the residue name in the PDB must be followed by
      97             : "5", e.g., DC5 or C5 for cytosine in DNA and RNA, respectively);
      98             : - 5'-phosphorylated end with an additional hydroxyl moiety at P (the residue name in the PDB must be followed by
      99             : "T", e.g., DCT or CT for cytosine in DNA and RNA, respectively);
     100             : - 3'-end pentose sugar capped with an hydroxyl moiety at C3' (the residue name in the PDB must be followed by
     101             : "3", e.g., DC3 or C3 for cytosine in DNA and RNA, respectively).
     102             : An additional bead type is available for proteins:
     103             : - Cysteine residue involved in disulfide bridge (the residue in the PDB must be named CYX).
     104             : 
     105             : Experimental reference intensities can be added using the EXPINT keywords. All these values must be normalised
     106             : to the SAXS intensity at q = 0. To facilitate this operation, the SCALE_EXPINT keyword can be used to provide
     107             : the intensity at q = 0. Each EXPINT is divided by SCALE_EXPINT.
     108             : The maximum QVALUE for ONEBEAD is set to 0.3 inverse angstroms.
     109             : The solvent density, that by default is set to 0.334 electrons per cubic angstrom (bulk water), can be modified
     110             : using the SOLVDENS keyword.
     111             : 
     112             : The ABSOLUTE flag can be used in order to calculate intensities in the absolute scale. It is only available for
     113             : the ATOMISTIC scheme and cannot be used with SCALE_EXPINT.
     114             : 
     115             : By default SAXS is calculated using Debye on CPU, by adding the GPU flag it is possible to solve the equation on
     116             : a GPU if the ARRAYFIRE libraries are installed and correctly linked.
     117             : \ref METAINFERENCE can be activated using DOSCORE and the other relevant keywords.
     118             : 
     119             : \par Examples
     120             : in the following example the SAXS intensities are calculated using single-bead per residue approximation, with a
     121             : SASA threshold of 1 square nanometer and a solvation term of 0.04. Each experimental intensity is divided by
     122             : 1.4002, which is the corresponding theoretical intensity value at q = 0. The form factors are selected according
     123             : to the PDB file specified by TEMPLATE keyword.
     124             : 
     125             : \plumedfile
     126             : MOLINFO STRUCTURE=template_AA.pdb
     127             : 
     128             : SAXS ...
     129             : LABEL=SAXS
     130             : ATOMS=1-355
     131             : ONEBEAD
     132             : TEMPLATE=template_AA.pdb
     133             : SOLVDENS=0.334
     134             : SOLVATION_CORRECTION=0.04
     135             : SOLVATION_STRIDE=1
     136             : SASA_CUTOFF=1.0
     137             : SCALE_EXPINT=1.4002
     138             : QVALUE1=0.03 EXPINT1=1.0902
     139             : QVALUE2=0.06 EXPINT2=0.790632
     140             : QVALUE3=0.09 EXPINT3=0.453808
     141             : QVALUE4=0.12 EXPINT4=0.254737
     142             : QVALUE5=0.15 EXPINT5=0.154928
     143             : QVALUE6=0.18 EXPINT6=0.0921503
     144             : QVALUE7=0.21 EXPINT7=0.052633
     145             : QVALUE8=0.24 EXPINT8=0.0276557
     146             : QVALUE9=0.27 EXPINT9=0.0122775
     147             : QVALUE10=0.30 EXPINT10=0.00880634
     148             : ... SAXS
     149             : 
     150             : PRINT ARG=(SAXS\.q-.*),(SAXS\.exp-.*) FILE=saxsdata STRIDE=1
     151             : 
     152             : \endplumedfile
     153             : 
     154             : */
     155             : //+ENDPLUMEDOC
     156             : 
     157             : //+PLUMEDOC ISDB_COLVAR SANS
     158             : /*
     159             : Calculates SANS intensity.
     160             : 
     161             : SANS intensities are calculated for a set of scattering vectors using QVALUE keywords numbered from 1.
     162             : Form factors are automatically assigned to atoms using the ATOMISTIC flag by reading a PDB file, by reading
     163             : the scattering lengths with the PARAMETERS keyword from input or with the PARAMETERSFILE keyword or, alternatively,
     164             : a ONEBEAD coarse-grained implementation is available.
     165             : 
     166             : Both for ATOMISTIC and ONEBEAD the user must provide an all-atom PDB file via MOLINFO before the SANS instruction.
     167             : 
     168             : ONEBEAD scheme consists in a single-bead per amino acid residue or three-bead for nucleic acid residue (one for
     169             : the phosphate group, one for the pentose sugar, one for the nucleobase). PLUMED creates a virtual bead on which
     170             : the SANS calculations are performed, centred on the COM of all atoms belonging to the bead. It is possible to
     171             : account for the contribution of the solvation layer to the SANS intensity by adding a correction term for the
     172             : solvent accessible beads only: the form factors of the amino acids / phosphate groups / pentose sugars /
     173             : nucleobases with a SASA (computed via LCPO algorithm) greater than a threshold are corrected according to an
     174             : electron density term. Both the surface cut-off threshold and the electron density term can be set by the user
     175             : with the SASA_CUTOFF and SOLVATION_CORRECTION keywords. Moreover, SASA stride calculation can be modified using
     176             : SOLVATION_STRIDE, which is set to 10 steps by default. The deuteration of the solvent-exposed residues is chosen
     177             : with a probability equal to the deuterium concentration in the buffer. The deuterated residues are updated with a
     178             : stride equal to SOLVATION_STRIDE. The fraction of deuterated water can be set with DEUTER_CONC, the default value
     179             : is 0.
     180             : ONEBEAD requires an additional PDB file to perform mapping conversion, which must be provided via TEMPLATE
     181             : keyword. This PDB file should only include the atoms for which the SANS intensity will be computed.
     182             : The AMBER OL3 (RNA) and OL15 (DNA) naming is required for nucleic acids.
     183             : Two additional bead types are available for DNA and RNA besides phosphate group, pentose sugar, and nucleobase:
     184             : - 5'-end pentose sugar capped with an hydroxyl moiety at C5' (the residue name in the PDB must be followed by "5",
     185             : e.g., DC5 or C5 for cytosine in DNA and RNA, respectively);
     186             : - 5'-phosphorylated end with an additional hydroxyl moiety at P (the residue name in the PDB must be followed by
     187             : "T", e.g., DCT or CT for cytosine in DNA and RNA, respectively);
     188             : - 3'-end pentose sugar capped with an hydroxyl moiety at C3' (the residue name in the PDB must be followed by "3",
     189             : e.g., DC3 or C3 for cytosine in DNA and RNA, respectively).
     190             : An additional bead type is available for proteins:
     191             : - Cysteine residue involved in disulfide bridge (the residue in the PDB must be named CYX).
     192             : 
     193             : PLEASE NOTE: at the moment, we DO NOT explicitly take into account deuterated residues in the ATOMISTIC
     194             : representation, but we correct the solvent contribution via the DEUTER_CONC keyword.
     195             : 
     196             : Experimental reference intensities can be added using the EXPINT keywords. All these values must be normalised
     197             : to the SANS intensity at q = 0. To facilitate this operation, the SCALE_EXPINT keyword can be used to provide
     198             : the intensity at q = 0. Each EXPINT is divided by SCALE_EXPINT.
     199             : The maximum QVALUE for ONEBEAD is set to 0.3 inverse angstroms.
     200             : The solvent density, that by default is set to 0.334 electrons per cubic angstrom (bulk water), can be modified
     201             : using the SOLVDENS keyword.
     202             : 
     203             : The ABSOLUTE flag can be used in order to calculate intensities in the absolute scale. It is only available for
     204             : the ATOMISTIC scheme and cannot be used with SCALE_EXPINT.
     205             : 
     206             : By default SANS is calculated using Debye on CPU, by adding the GPU flag it is possible to solve the equation on a
     207             : GPU if the ARRAYFIRE libraries are installed and correctly linked.
     208             : \ref METAINFERENCE can be activated using DOSCORE and the other relevant keywords.
     209             : 
     210             : \par Examples
     211             : in the following example the SANS intensities are calculated at atomistic resolution. The form factors are assigned
     212             : according to the PDB file specified in the MOLINFO. Each experimental intensity is divided by 1.4002, which is the
     213             : corresponding theoretical intensity value at q = 0. The deuterated water fraction is set to 48%.
     214             : 
     215             : \plumedfile
     216             : MOLINFO STRUCTURE=template_AA.pdb
     217             : 
     218             : SANS ...
     219             : LABEL=SANS
     220             : ATOMS=1-355
     221             : ATOMISTIC
     222             : SCALE_EXPINT=1.4002
     223             : DEUTER_CONC=0.48
     224             : QVALUE1=0.03 EXPINT1=1.0902
     225             : QVALUE2=0.06 EXPINT2=0.790632
     226             : QVALUE3=0.09 EXPINT3=0.453808
     227             : QVALUE4=0.12 EXPINT4=0.254737
     228             : QVALUE5=0.15 EXPINT5=0.154928
     229             : QVALUE6=0.18 EXPINT6=0.0921503
     230             : QVALUE7=0.21 EXPINT7=0.052633
     231             : QVALUE8=0.24 EXPINT8=0.0276557
     232             : QVALUE9=0.27 EXPINT9=0.0122775
     233             : QVALUE10=0.30 EXPINT10=0.00880634
     234             : ... SANS
     235             : 
     236             : PRINT ARG=(SANS\.q-.*),(SANS\.exp-.*) FILE=sansdata STRIDE=1
     237             : 
     238             : \endplumedfile
     239             : 
     240             : */
     241             : //+ENDPLUMEDOC
     242             : 
     243             : class SAXS :
     244             :   public MetainferenceBase
     245             : {
     246             : private:
     247             :   enum { H, C, N, O, P, S, NTT };
     248             :   enum { ALA_BB, ARG_BB, ARG_SC1, ARG_SC2, ASN_BB, ASN_SC1, ASP_BB, ASP_SC1, CYS_BB, CYS_SC1,
     249             :          GLN_BB, GLN_SC1, GLU_BB, GLU_SC1, GLY_BB, HIS_BB, HIS_SC1, HIS_SC2, HIS_SC3, ILE_BB,
     250             :          ILE_SC1, LEU_BB, LEU_SC1, LYS_BB, LYS_SC1, LYS_SC2, MET_BB, MET_SC1, PHE_BB, PHE_SC1,
     251             :          PHE_SC2, PHE_SC3, PRO_BB, PRO_SC1, SER_BB, SER_SC1, THR_BB, THR_SC1, TRP_BB, TRP_SC1,
     252             :          TRP_SC2, TRP_SC3, TRP_SC4, TYR_BB, TYR_SC1, TYR_SC2, TYR_SC3, VAL_BB, VAL_SC1, A_BB1,
     253             :          A_BB2, A_BB3, A_SC1, A_SC2, A_SC3, A_SC4, A_3TE, A_5TE, A_TE3, A_TE5, C_BB1, C_BB2,
     254             :          C_BB3, C_SC1, C_SC2, C_SC3, C_3TE, C_5TE, C_TE3, C_TE5, G_BB1, G_BB2, G_BB3, G_SC1,
     255             :          G_SC2, G_SC3, G_SC4, G_3TE, G_5TE, G_TE3, G_TE5, U_BB1, U_BB2, U_BB3, U_SC1, U_SC2,
     256             :          U_SC3, U_3TE, U_5TE, U_TE3, U_TE5, DA_BB1, DA_BB2, DA_BB3, DA_SC1, DA_SC2, DA_SC3,
     257             :          DA_SC4, DA_3TE, DA_5TE, DA_TE3, DA_TE5, DC_BB1, DC_BB2, DC_BB3, DC_SC1, DC_SC2, DC_SC3,
     258             :          DC_3TE, DC_5TE, DC_TE3, DC_TE5, DG_BB1, DG_BB2, DG_BB3, DG_SC1, DG_SC2, DG_SC3, DG_SC4,
     259             :          DG_3TE, DG_5TE, DG_TE3, DG_TE5, DT_BB1, DT_BB2, DT_BB3, DT_SC1, DT_SC2, DT_SC3, DT_3TE,
     260             :          DT_5TE, DT_TE3, DT_TE5, NMARTINI
     261             :        };
     262             :   enum { TRP,
     263             :          TYR,
     264             :          PHE,
     265             :          HIS,
     266             :          HIP,
     267             :          ARG,
     268             :          LYS,
     269             :          CYS,
     270             :          CYX,
     271             :          ASP,
     272             :          GLU,
     273             :          ILE,
     274             :          LEU,
     275             :          MET,
     276             :          ASN,
     277             :          PRO,
     278             :          GLN,
     279             :          SER,
     280             :          THR,
     281             :          VAL,
     282             :          ALA,
     283             :          GLY,
     284             :          BB_PO2,
     285             :          BB_PO3,
     286             :          BB_DNA,
     287             :          BB_DNA_5,
     288             :          BB_DNA_3,
     289             :          BB_RNA,
     290             :          BB_RNA_5,
     291             :          BB_RNA_3,
     292             :          BASE_A,
     293             :          BASE_C,
     294             :          BASE_T,
     295             :          BASE_G,
     296             :          BASE_U,
     297             :          NONEBEAD
     298             :        };
     299             :   struct SplineCoeffs {
     300             :     double a;
     301             :     double b;
     302             :     double c;
     303             :     double d;
     304             :     double x;
     305             :   };
     306             :   bool saxs;
     307             :   bool absolute;
     308             :   bool pbc;
     309             :   bool serial;
     310             :   bool gpu;
     311             :   bool onebead;
     312             :   bool resolution;
     313             :   bool isFirstStep;
     314             :   int  deviceid;
     315             :   unsigned nres;
     316             :   std::vector<unsigned> atoi;
     317             :   std::vector<unsigned> atoms_per_bead;
     318             :   std::vector<double>   atoms_masses;
     319             :   std::vector<double>   q_list;
     320             :   std::vector<double>   FF_rank;
     321             :   std::vector<std::vector<double> > FF_value_vacuum;
     322             :   std::vector<std::vector<double> > FF_value_solv;
     323             :   std::vector<std::vector<double> > FF_value_mixed;
     324             :   std::vector<std::vector<double> > FF_value;
     325             :   std::vector<std::vector<float> >  FFf_value;
     326             :   // SANS:
     327             :   std::vector<std::vector<double> > FF_value_vacuum_H;
     328             :   std::vector<std::vector<double> > FF_value_solv_H;
     329             :   std::vector<std::vector<double> > FF_value_mixed_H;
     330             :   std::vector<std::vector<double> > FF_value_vacuum_D;
     331             :   std::vector<std::vector<double> > FF_value_mixed_D;
     332             : 
     333             :   std::vector<std::vector<double> > LCPOparam;
     334             :   std::vector<unsigned> residue_atom;
     335             : 
     336             :   double rho, rho_corr, sasa_cutoff;
     337             :   double deuter_conc;
     338             :   unsigned solv_stride;
     339             :   std::vector<double> Iq0_vac;
     340             :   std::vector<double> Iq0_solv;
     341             :   std::vector<double> Iq0_mix;
     342             :   double Iq0;
     343             : 
     344             :   // SANS:
     345             :   std::vector<double> Iq0_vac_H;
     346             :   std::vector<double> Iq0_solv_H;
     347             :   std::vector<double> Iq0_mix_H;
     348             :   std::vector<double> Iq0_vac_D;
     349             :   std::vector<double> Iq0_mix_D;
     350             :   unsigned int Nj;
     351             :   std::vector<std::vector<double> > qj_list;
     352             :   std::vector<std::vector<double> > Rij;
     353             :   std::vector<double> sigma_res;
     354             : 
     355             :   // Chebyshev polynomial coefficients for i0e(x) used for resolution function
     356             :   // values taken from cephes library
     357             :   const std::vector<double> A = {
     358             :     -4.41534164647933937950E-18,
     359             :       3.33079451882223809783E-17,
     360             :       -2.43127984654795469359E-16,
     361             :       1.71539128555513303061E-15,
     362             :       -1.16853328779934516808E-14,
     363             :       7.67618549860493561688E-14,
     364             :       -4.85644678311192946090E-13,
     365             :       2.95505266312963983461E-12,
     366             :       -1.72682629144155570723E-11,
     367             :       9.67580903537323691224E-11,
     368             :       -5.18979560163526290666E-10,
     369             :       2.65982372468238665035E-9,
     370             :       -1.30002500998624804212E-8,
     371             :       6.04699502254191894932E-8,
     372             :       -2.67079385394061173391E-7,
     373             :       1.11738753912010371815E-6,
     374             :       -4.41673835845875056359E-6,
     375             :       1.64484480707288970893E-5,
     376             :       -5.75419501008210370398E-5,
     377             :       1.88502885095841655729E-4,
     378             :       -5.76375574538582365885E-4,
     379             :       1.63947561694133579842E-3,
     380             :       -4.32430999505057594430E-3,
     381             :       1.05464603945949983183E-2,
     382             :       -2.37374148058994688156E-2,
     383             :       4.93052842396707084878E-2,
     384             :       -9.49010970480476444210E-2,
     385             :       1.71620901522208775349E-1,
     386             :       -3.04682672343198398683E-1,
     387             :       6.76795274409476084995E-1
     388             :     };
     389             :   const std::vector<double> B = {
     390             :     -7.23318048787475395456E-18,
     391             :       -4.83050448594418207126E-18,
     392             :       4.46562142029675999901E-17,
     393             :       3.46122286769746109310E-17,
     394             :       -2.82762398051658348494E-16,
     395             :       -3.42548561967721913462E-16,
     396             :       1.77256013305652638360E-15,
     397             :       3.81168066935262242075E-15,
     398             :       -9.55484669882830764870E-15,
     399             :       -4.15056934728722208663E-14,
     400             :       1.54008621752140982691E-14,
     401             :       3.85277838274214270114E-13,
     402             :       7.18012445138366623367E-13,
     403             :       -1.79417853150680611778E-12,
     404             :       -1.32158118404477131188E-11,
     405             :       -3.14991652796324136454E-11,
     406             :       1.18891471078464383424E-11,
     407             :       4.94060238822496958910E-10,
     408             :       3.39623202570838634515E-9,
     409             :       2.26666899049817806459E-8,
     410             :       2.04891858946906374183E-7,
     411             :       2.89137052083475648297E-6,
     412             :       6.88975834691682398426E-5,
     413             :       3.36911647825569408990E-3,
     414             :       8.04490411014108831608E-1
     415             :     };
     416             : 
     417             :   void calculate_gpu(std::vector<Vector> &pos, std::vector<Vector> &deriv);
     418             :   void calculate_cpu(std::vector<Vector> &pos, std::vector<Vector> &deriv);
     419             :   void getMartiniFFparam(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &parameter);
     420             :   void getOnebeadparam(const PDB &pdb, const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &parameter_vac, std::vector<std::vector<long double> > &parameter_mix, std::vector<std::vector<long double> > &parameter_solv, const std::vector<unsigned> & residue_atom);
     421             :   unsigned getOnebeadMapping(const PDB &pdb, const std::vector<AtomNumber> &atoms);
     422             :   double calculateAFF(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double rho);
     423             :   std::map<std::string, std::vector<double> > setupLCPOparam();
     424             :   void readLCPOparam(const std::vector<std::vector<std::string> > &AtomResidueName, unsigned natoms);
     425             :   void calcNlist(std::vector<std::vector<int> > &Nlist);
     426             :   void sasa_calculate(std::vector<bool> &solv_res);
     427             :   // SANS:
     428             :   void getOnebeadparam_sansH(const PDB &pdb, const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &parameter_vac_H, std::vector<std::vector<long double> > &parameter_mix_H, std::vector<std::vector<long double> > &parameter_solv_H);
     429             :   void getOnebeadparam_sansD(const PDB &pdb, const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &parameter_vac_D, std::vector<std::vector<long double> > &parameter_mix_D);
     430             :   double calculateAFFsans(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double deuter_conc);
     431             :   void resolution_function();
     432             :   std::vector<SplineCoeffs> spline_coeffs(std::vector<double> &x, std::vector<double> &y);
     433             :   inline double interpolation(std::vector<SplineCoeffs> &coeffs, double x);
     434             :   inline double i0e(double x);
     435             :   double chbevl(double x, const std::vector<double> &coeffs);
     436             : 
     437             : public:
     438             :   static void registerKeywords( Keywords& keys );
     439             :   explicit SAXS(const ActionOptions&);
     440             :   void calculate() override;
     441             :   void update() override;
     442             : };
     443             : 
     444             : PLUMED_REGISTER_ACTION(SAXS,"SAXS")
     445             : PLUMED_REGISTER_ACTION(SAXS,"SANS")
     446             : 
     447          48 : void SAXS::registerKeywords(Keywords& keys) {
     448          48 :   MetainferenceBase::registerKeywords(keys);
     449          96 :   keys.addFlag("NOPBC",false,"Ignore the periodic boundary conditions when calculating distances");
     450          96 :   keys.addFlag("SERIAL",false,"Perform the calculation in serial - for debug purpose");
     451          96 :   keys.add("compulsory","DEVICEID","-1","Identifier of the GPU to be used");
     452          96 :   keys.addFlag("GPU",false,"Calculate SAXS using ARRAYFIRE on an accelerator device");
     453          96 :   keys.addFlag("ABSOLUTE",false,"Absolute intensity: the intensities for each q-value are not normalised for the intensity at q=0.");
     454          96 :   keys.addFlag("ATOMISTIC",false,"Calculate SAXS for an atomistic model");
     455          96 :   keys.addFlag("MARTINI",false,"Calculate SAXS for a Martini model");
     456          96 :   keys.addFlag("ONEBEAD",false,"calculate SAXS for a single bead model");
     457          96 :   keys.add("compulsory","TEMPLATE","template.pdb","A PDB file is required for ONEBEAD mapping");
     458          96 :   keys.add("atoms","ATOMS","The atoms to be included in the calculation, e.g. the whole protein");
     459          96 :   keys.add("numbered","QVALUE","Selected scattering lengths in inverse angstroms are given as QVALUE1, QVALUE2, ...");
     460          96 :   keys.add("numbered","PARAMETERS","Used parameter Keywords like PARAMETERS1, PARAMETERS2. These are used to calculate the form factor for the \\f$i\\f$th atom/bead");
     461          96 :   keys.add("optional","PARAMETERSFILE","Read the PARAMETERS from a file");
     462          96 :   keys.add("compulsory","DEUTER_CONC","0.","Fraction of deuterated solvent");
     463          96 :   keys.add("compulsory","SOLVDENS","0.334","Density of the solvent to be used for the correction of atomistic form factors");
     464          96 :   keys.add("compulsory","SOLVATION_CORRECTION","0.0","Solvation layer electron density correction (ONEBEAD only)");
     465          96 :   keys.add("compulsory","SASA_CUTOFF","1.0","SASA value to consider a residue as exposed to the solvent (ONEBEAD only)");
     466          96 :   keys.add("numbered","EXPINT","Add an experimental value for each q value");
     467          96 :   keys.add("numbered","SIGMARES","Variance of Gaussian distribution describing the deviation in the scattering angle for each q value");
     468          96 :   keys.add("compulsory","N","10","Number of points in the resolution function integral");
     469          96 :   keys.add("compulsory","SOLVATION_STRIDE","10","Number of steps between every new residues solvation estimation via LCPO (ONEBEAD only)");
     470          96 :   keys.add("compulsory","SCALE_EXPINT","1.0","Scaling value for experimental data normalization");
     471          96 :   keys.addOutputComponent("q","default","The # SAXS of q");
     472          96 :   keys.addOutputComponent("exp","EXPINT","The # experimental intensity");
     473          48 : }
     474             : 
     475          44 : SAXS::SAXS(const ActionOptions&ao):
     476             :   PLUMED_METAINF_INIT(ao),
     477          44 :   saxs(true),
     478          44 :   absolute(false),
     479          44 :   pbc(true),
     480          44 :   serial(false),
     481          44 :   gpu(false),
     482          44 :   onebead(false),
     483          44 :   isFirstStep(true),
     484          44 :   deviceid(-1)
     485             : {
     486          44 :   if( getName().find("SAXS")!=std::string::npos) { saxs=true; }
     487          14 :   else if( getName().find("SANS")!=std::string::npos) { saxs=false; }
     488             : 
     489             :   std::vector<AtomNumber> atoms;
     490          88 :   parseAtomList("ATOMS",atoms);
     491          44 :   unsigned size = atoms.size();
     492             : 
     493          44 :   parseFlag("SERIAL",serial);
     494             : 
     495          44 :   bool nopbc=!pbc;
     496          44 :   parseFlag("NOPBC",nopbc);
     497          44 :   pbc=!nopbc;
     498          44 :   if(pbc)      log.printf("  using periodic boundary conditions\n");
     499          28 :   else         log.printf("  without periodic boundary conditions\n");
     500             : 
     501          44 :   parseFlag("GPU",gpu);
     502             : #ifndef  __PLUMED_HAS_ARRAYFIRE
     503          44 :   if(gpu) error("To use the GPU mode PLUMED must be compiled with ARRAYFIRE");
     504             : #endif
     505             : 
     506          44 :   parse("DEVICEID",deviceid);
     507             : #ifdef  __PLUMED_HAS_ARRAYFIRE
     508             :   if(gpu&&comm.Get_rank()==0) {
     509             :     // if not set try to check the one set by the API
     510             :     if(deviceid==-1) deviceid=plumed.getGpuDeviceId();
     511             :     // if still not set use 0
     512             :     if(deviceid==-1) deviceid=0;
     513             : #ifdef  __PLUMED_HAS_ARRAYFIRE_CUDA
     514             :     af::setDevice(afcu::getNativeId(deviceid));
     515             : #elif   __PLUMED_HAS_ARRAYFIRE_OCL
     516             :     af::setDevice(afcl::getNativeId(deviceid));
     517             : #else
     518             :     af::setDevice(deviceid);
     519             : #endif
     520             :     af::info();
     521             :   }
     522             : #endif
     523             : 
     524          44 :   bool atomistic=false;
     525          44 :   parseFlag("ATOMISTIC",atomistic);
     526          44 :   if(atomistic) log.printf("  using ATOMISTIC form factors\n");
     527          44 :   bool martini=false;
     528          44 :   parseFlag("MARTINI",martini);
     529          44 :   if(martini) log.printf("  using MARTINI form factors\n");
     530          44 :   onebead=false;
     531          44 :   parseFlag("ONEBEAD",onebead);
     532          44 :   if(onebead) log.printf("  using ONEBEAD form factors\n");
     533             :   bool fromfile=false;
     534             :   std::string parametersfile;
     535          88 :   parse("PARAMETERSFILE",parametersfile);
     536          44 :   if (parametersfile.length() != 0) fromfile=true;
     537           4 :   if(fromfile) log.printf("  will read form factors from file\n");
     538          44 :   parseFlag("ABSOLUTE",absolute);
     539             : 
     540          44 :   if(martini&&atomistic) error("You cannot use MARTINI and ATOMISTIC at the same time");
     541          44 :   if(martini&&onebead) error("You cannot use MARTINI and ONEBEAD at the same time");
     542          44 :   if(onebead&&atomistic) error("You cannot use ONEBEAD and ATOMISTIC at the same time");
     543          44 :   if((martini)&&(!saxs)) error("MARTINI cannot be used with SANS");
     544          44 :   if((fromfile)&&((atomistic)||(martini)||(onebead))) {
     545           0 :     error("You cannot read parameters from file and use ATOMISTIC/MARTINI/ONEBEAD");
     546             :   }
     547             : 
     548             :   unsigned ntarget=0;
     549             :   for(unsigned i=0;; ++i) {
     550             :     double t_list;
     551         976 :     if( !parseNumbered( "QVALUE", i+1, t_list) ) break;
     552         444 :     if(t_list<=0.) error("QVALUE cannot be less or equal to zero!\n");
     553         444 :     if(onebead&&t_list>0.3) error("ONEBEAD mapping QVALUE must be smaller or equal to 0.3");
     554         444 :     q_list.push_back(t_list);
     555         444 :     ntarget++;
     556         444 :   }
     557             :   const unsigned numq = ntarget;
     558             : 
     559         488 :   for(unsigned i=0; i<numq; ++i) {
     560         444 :     if(q_list[i]==0.) error("it is not possible to set q=0\n");
     561         444 :     if(i>0&&q_list[i]<q_list[i-1]) error("QVALUE must be in ascending order");
     562         444 :     log.printf("  my q: %lf \n",q_list[i]);
     563             :   }
     564             : 
     565          44 :   rho = 0.334;
     566          44 :   parse("SOLVDENS", rho);
     567          44 :   log.printf("  Solvent density: %lf\n", rho);
     568             : 
     569          44 :   double scale_expint=1.;
     570          44 :   parse("SCALE_EXPINT",scale_expint);
     571             : 
     572          44 :   if((!atomistic&&absolute)||(absolute&&scale_expint!=1)) error("ABSOLUTE can be used only combined with ATOMISTIC without SCALE_EXPINT");
     573          56 :   if(atomistic) log.printf("  Scale for intensities: %s\n", absolute ? "absolute" : "normalised");
     574             : 
     575          44 :   double correction = 0.00;
     576          44 :   parse("SOLVATION_CORRECTION", correction);
     577          44 :   rho_corr=rho-correction;
     578          44 :   if(onebead) log.printf("  Solvation density contribution: %lf\n", correction);
     579          44 :   if((atomistic||martini||fromfile)&&(rho_corr!=rho)) log.printf("  Solvation density contribution is taken into account in ONEBEAD only\n");
     580             : 
     581          44 :   solv_stride = 10;
     582          44 :   parse("SOLVATION_STRIDE", solv_stride);
     583          44 :   if(solv_stride < 1.) error("SOLVATION_STRIDE must be greater than 0");
     584          44 :   if(onebead&&(rho_corr!=rho)) log.printf("  SASA calculation stride: %u\n", solv_stride);
     585             : 
     586          44 :   sasa_cutoff = 1.0;
     587          44 :   parse("SASA_CUTOFF", sasa_cutoff);
     588          44 :   if(sasa_cutoff <= 0.) error("SASA_CUTOFF must be greater than 0");
     589             : 
     590          44 :   deuter_conc = 0.;
     591          44 :   parse("DEUTER_CONC", deuter_conc);
     592          44 :   if ((deuter_conc)&&(fromfile)) error("DEUTER_CONC cannot be used with PARAMETERSFILE");
     593          44 :   if(deuter_conc < 0. || deuter_conc > 1.) error("DEUTER_CONC must be in 0-1 range");
     594          44 :   if ((atomistic||onebead)&&(!saxs)) log.printf("  Solvent deuterium fraction: %lf/1.000000\n", deuter_conc);
     595             : 
     596          44 :   PDB pdb;
     597          44 :   if(onebead) {
     598             :     std::string template_name;
     599          16 :     parse("TEMPLATE",template_name);
     600          16 :     log.printf("  Template for ONEBEAD mapping conversion: %s\n", template_name.c_str());
     601          16 :     if( !pdb.read(template_name,usingNaturalUnits(),1.) ) plumed_merror("missing input file " + template_name);
     602             :   }
     603             : 
     604             :   // preliminary mapping for onebead representation
     605          44 :   if(onebead) {
     606          16 :     LCPOparam.resize(size);
     607          16 :     nres = getOnebeadMapping(pdb, atoms);
     608          16 :     if(saxs) {
     609          10 :       Iq0_vac.resize(nres);
     610          10 :       Iq0_solv.resize(nres);
     611          10 :       Iq0_mix.resize(nres);
     612             :     } else { // SANS
     613           6 :       Iq0_vac_H.resize(nres);
     614           6 :       Iq0_solv_H.resize(nres);
     615           6 :       Iq0_mix_H.resize(nres);
     616           6 :       Iq0_vac_D.resize(nres);
     617           6 :       Iq0_mix_D.resize(nres);
     618             :     }
     619          16 :     atoi.resize(nres);
     620             :   } else {
     621          28 :     atoi.resize(size);
     622             :   }
     623             : 
     624          44 :   Iq0=0;
     625             :   std::vector<std::vector<long double> > FF_tmp;
     626             :   std::vector<std::vector<long double> > FF_tmp_vac;
     627             :   std::vector<std::vector<long double> > FF_tmp_mix;
     628             :   std::vector<std::vector<long double> > FF_tmp_solv;
     629             :   // SANS
     630             :   std::vector<std::vector<long double> > FF_tmp_vac_H;
     631             :   std::vector<std::vector<long double> > FF_tmp_mix_H;
     632             :   std::vector<std::vector<long double> > FF_tmp_solv_H;
     633             :   std::vector<std::vector<long double> > FF_tmp_vac_D;
     634             :   std::vector<std::vector<long double> > FF_tmp_mix_D;
     635             :   std::vector<std::vector<long double> > parameter_H;
     636             :   std::vector<std::vector<long double> > parameter_D;
     637             : 
     638          44 :   if(!atomistic&&!martini&&!onebead&&!fromfile) { // read PARAMETERS from PLUMED file
     639           4 :     if (saxs) {
     640             :       // read in parameter std::vector
     641             :       std::vector<std::vector<long double> > parameter;
     642           4 :       parameter.resize(size);
     643             :       ntarget=0;
     644          36 :       for(unsigned i=0; i<size; ++i) {
     645          64 :         if( !parseNumberedVector( "PARAMETERS", i+1, parameter[i]) ) break;
     646          32 :         ntarget++;
     647             :       }
     648           4 :       if( ntarget!=size ) error("found wrong number of parameter std::vectors");
     649           4 :       FF_tmp.resize(numq,std::vector<long double>(size));
     650          36 :       for(unsigned i=0; i<size; ++i) {
     651          32 :         atoi[i]=i;
     652         128 :         for(unsigned k=0; k<numq; ++k) {
     653         480 :           for(unsigned j=0; j<parameter[i].size(); ++j) {
     654         384 :             FF_tmp[k][i]+= parameter[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     655             :           }
     656             :         }
     657             :       }
     658          36 :       for(unsigned i=0; i<size; ++i) Iq0+=parameter[i][0];
     659           4 :       Iq0 *= Iq0;
     660           4 :     }
     661             :     else { // SANS
     662             :       std::vector<long double> parameter;
     663           0 :       parameter.resize(size);
     664             :       ntarget=0;
     665           0 :       for(unsigned i=0; i<size; ++i) {
     666           0 :         if( !parseNumbered( "PARAMETERS", i+1, parameter[i]) ) break;
     667           0 :         ntarget++;
     668             :       }
     669           0 :       if( ntarget!=size ) error("found wrong number of parameter std::vectors");
     670           0 :       FF_tmp.resize(numq,std::vector<long double>(size));
     671           0 :       for(unsigned i=0; i<size; ++i) {
     672           0 :         atoi[i]=i;
     673           0 :         for(unsigned k=0; k<numq; ++k) {
     674           0 :           FF_tmp[k][i]+= parameter[i];
     675             :         }
     676             :       }
     677           0 :       for(unsigned i=0; i<size; ++i) Iq0+=parameter[i];
     678           0 :       Iq0 *= Iq0;
     679             :     }
     680          40 :   } else if (fromfile) { // read PARAMETERS from user-provided file
     681           4 :     log.printf("  Reading PARAMETERS from file: %s\n", parametersfile.c_str());
     682           4 :     if (saxs) {
     683           0 :       FF_tmp.resize(numq,std::vector<long double>(size));
     684             :       std::vector<std::vector<long double> > parameter;
     685           0 :       parameter.resize(size);
     686             : 
     687           0 :       IFile ifile;
     688           0 :       ifile.open(parametersfile);
     689             :       std::string line;
     690             : 
     691             :       ntarget=0;
     692           0 :       while(ifile.getline(line)) {
     693           0 :         Tools::ltrim(line);
     694           0 :         Tools::trimComments(line);
     695           0 :         if (line.empty()) continue;
     696           0 :         if (ntarget > size) error("PARAMETERSFILE has more PARAMETERS than there are scattering centers");
     697           0 :         std::string num; Tools::convert(ntarget+1,num);
     698           0 :         std::vector<std::string> lineread{line};
     699           0 :         if (!Tools::parseVector(lineread, "PARAMETERS"+num, parameter[ntarget], -1)) error("Missing PARAMETERS or PARAMETERS not sorted");
     700             :         ntarget++;
     701           0 :       }
     702           0 :       if( ntarget!=size ) error("found wrong number of PARAMETERS in file");
     703             : 
     704           0 :       for(unsigned i=0; i<size; ++i) {
     705           0 :         atoi[i]=i;
     706           0 :         for(unsigned k=0; k<numq; ++k) {
     707           0 :           for(unsigned j=0; j<parameter[i].size(); ++j) {
     708           0 :             FF_tmp[k][i]+= parameter[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     709             :           }
     710             :         }
     711             :       }
     712           0 :       for(unsigned i=0; i<size; ++i) Iq0+=parameter[i][0];
     713           0 :       Iq0 *= Iq0;
     714           0 :     } else { // SANS
     715           4 :       FF_tmp.resize(numq,std::vector<long double>(size));
     716             : 
     717           4 :       IFile ifile;
     718           4 :       ifile.open(parametersfile);
     719             :       std::string line;
     720             : 
     721             :       ntarget=0;
     722        1084 :       while(ifile.getline(line)) {
     723        1080 :         Tools::ltrim(line);
     724        1080 :         Tools::trimComments(line);
     725        1080 :         if (line.empty()) continue;
     726        1080 :         if (ntarget > size) error("PARAMETERSFILE has more PARAMETERS than there are scattering centers");
     727        1080 :         std::string num; Tools::convert(ntarget+1,num);
     728        2160 :         std::vector<std::string> lineread{line};
     729             :         long double scatlen;
     730        1080 :         atoi[ntarget]=ntarget;
     731        2160 :         if (!Tools::parse(lineread, "PARAMETERS"+num, scatlen, -1)) error("Missing PARAMETERS or PARAMETERS not sorted");
     732       17280 :         for(unsigned k=0; k<numq; ++k) {
     733       16200 :           FF_tmp[k][ntarget] = scatlen;
     734             :         }
     735             :         ntarget++;
     736        1080 :       }
     737           4 :       if( ntarget!=size ) error("found wrong number of PARAMETERS in file");
     738        1084 :       for(unsigned i=0; i<size; ++i) Iq0+=FF_tmp[0][i];
     739           4 :       Iq0 *= Iq0;
     740           4 :     }
     741          36 :   } else if(onebead) {
     742          16 :     if(saxs) {
     743             :       // read built-in ONEBEAD parameters
     744          10 :       FF_tmp_vac.resize(numq,std::vector<long double>(NONEBEAD));
     745          10 :       FF_tmp_mix.resize(numq,std::vector<long double>(NONEBEAD));
     746          10 :       FF_tmp_solv.resize(numq,std::vector<long double>(NONEBEAD));
     747          10 :       std::vector<std::vector<long double> > parameter_vac(NONEBEAD);
     748          10 :       std::vector<std::vector<long double> > parameter_mix(NONEBEAD);
     749          10 :       std::vector<std::vector<long double> > parameter_solv(NONEBEAD);
     750          10 :       getOnebeadparam(pdb, atoms, parameter_vac, parameter_mix, parameter_solv, residue_atom);
     751         360 :       for(unsigned i=0; i<NONEBEAD; ++i) {
     752        3500 :         for(unsigned k=0; k<numq; ++k) {
     753       25200 :           for(unsigned j=0; j<parameter_vac[i].size(); ++j) {
     754       22050 :             FF_tmp_vac[k][i]+= parameter_vac[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     755             :           }
     756       25200 :           for(unsigned j=0; j<parameter_mix[i].size(); ++j) {
     757       22050 :             FF_tmp_mix[k][i]+= parameter_mix[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     758             :           }
     759       25200 :           for(unsigned j=0; j<parameter_solv[i].size(); ++j) {
     760       22050 :             FF_tmp_solv[k][i]+= parameter_solv[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     761             :           }
     762             :         }
     763             :       }
     764        2166 :       for(unsigned i=0; i<nres; ++i) {
     765        2156 :         Iq0_vac[i]=parameter_vac[atoi[i]][0];
     766        2156 :         Iq0_mix[i]=parameter_mix[atoi[i]][0];
     767        2156 :         Iq0_solv[i]=parameter_solv[atoi[i]][0];
     768             :       }
     769          10 :     } else { // SANS
     770             :       // read built-in ONEBEAD parameters
     771           6 :       FF_tmp_vac_H.resize(numq,std::vector<long double>(NONEBEAD));
     772           6 :       FF_tmp_mix_H.resize(numq,std::vector<long double>(NONEBEAD));
     773           6 :       FF_tmp_solv_H.resize(numq,std::vector<long double>(NONEBEAD));
     774           6 :       FF_tmp_vac_D.resize(numq,std::vector<long double>(NONEBEAD));
     775           6 :       FF_tmp_mix_D.resize(numq,std::vector<long double>(NONEBEAD));
     776           6 :       std::vector<std::vector<long double> > parameter_vac_H(NONEBEAD);
     777           6 :       std::vector<std::vector<long double> > parameter_mix_H(NONEBEAD);
     778           6 :       std::vector<std::vector<long double> > parameter_solv_H(NONEBEAD);
     779           6 :       std::vector<std::vector<long double> > parameter_vac_D(NONEBEAD);
     780           6 :       std::vector<std::vector<long double> > parameter_mix_D(NONEBEAD);
     781           6 :       getOnebeadparam_sansH(pdb, atoms, parameter_vac_H, parameter_mix_H, parameter_solv_H);
     782           6 :       getOnebeadparam_sansD(pdb, atoms, parameter_vac_D, parameter_mix_D);
     783         216 :       for(unsigned i=0; i<NONEBEAD; ++i) {
     784        2100 :         for(unsigned k=0; k<numq; ++k) {
     785       15120 :           for(unsigned j=0; j<parameter_vac_H[i].size(); ++j) { // same number of parameters
     786       13230 :             FF_tmp_vac_H[k][i]+= parameter_vac_H[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     787       13230 :             FF_tmp_vac_D[k][i]+= parameter_vac_D[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     788             :           }
     789       15120 :           for(unsigned j=0; j<parameter_mix_H[i].size(); ++j) {
     790       13230 :             FF_tmp_mix_H[k][i]+= parameter_mix_H[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     791       13230 :             FF_tmp_mix_D[k][i]+= parameter_mix_D[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     792             :           }
     793       15120 :           for(unsigned j=0; j<parameter_solv_H[i].size(); ++j) {
     794       13230 :             FF_tmp_solv_H[k][i]+= parameter_solv_H[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     795             :           }
     796             :         }
     797             :       }
     798        1316 :       for(unsigned i=0; i<nres; ++i) {
     799        1310 :         Iq0_vac_H[i]=parameter_vac_H[atoi[i]][0];
     800        1310 :         Iq0_mix_H[i]=parameter_mix_H[atoi[i]][0];
     801        1310 :         Iq0_solv_H[i]=parameter_solv_H[atoi[i]][0];
     802        1310 :         Iq0_vac_D[i]=parameter_vac_D[atoi[i]][0];
     803        1310 :         Iq0_mix_D[i]=parameter_mix_D[atoi[i]][0];
     804             :       }
     805           6 :     }
     806          20 :   } else if(martini) {
     807             :     // read built-in MARTINI parameters
     808          16 :     FF_tmp.resize(numq,std::vector<long double>(NMARTINI));
     809             :     std::vector<std::vector<long double> > parameter;
     810           8 :     parameter.resize(NMARTINI);
     811           8 :     getMartiniFFparam(atoms, parameter);
     812        1072 :     for(unsigned i=0; i<NMARTINI; ++i) {
     813       17024 :       for(unsigned k=0; k<numq; ++k) {
     814      127680 :         for(unsigned j=0; j<parameter[i].size(); ++j) {
     815      111720 :           FF_tmp[k][i]+= parameter[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     816             :         }
     817             :       }
     818             :     }
     819        8400 :     for(unsigned i=0; i<size; ++i) Iq0+=parameter[atoi[i]][0];
     820           8 :     Iq0 *= Iq0;
     821          20 :   } else if(atomistic) {
     822          12 :     FF_tmp.resize(numq,std::vector<long double>(NTT));
     823          12 :     if(saxs) Iq0=calculateAFF(atoms, FF_tmp, rho);
     824           4 :     else Iq0=calculateAFFsans(atoms, FF_tmp, deuter_conc);
     825          12 :     Iq0 *= Iq0;
     826             :   }
     827             : 
     828             : 
     829             :   std::vector<double> expint;
     830          44 :   expint.resize( numq );
     831             :   ntarget=0;
     832         236 :   for(unsigned i=0; i<numq; ++i) {
     833         440 :     if( !parseNumbered( "EXPINT", i+1, expint[i] ) ) break;
     834         192 :     ntarget++;
     835             :   }
     836         236 :   std::transform(expint.begin(), expint.begin() + ntarget, expint.begin(), [scale_expint](double x) { return x / scale_expint; });
     837             :   bool exp=false;
     838          44 :   if(ntarget!=numq && ntarget!=0) error("found wrong number of EXPINT values");
     839          44 :   if(ntarget==numq) exp=true;
     840          44 :   if(getDoScore()&&!exp) error("with DOSCORE you need to set the EXPINT values");
     841             : 
     842          44 :   sigma_res.resize( numq );
     843          44 :   resolution=false;
     844             :   ntarget=0;
     845         104 :   for(unsigned i=0; i<numq; ++i) {
     846         200 :     if( !parseNumbered( "SIGMARES", i+1, sigma_res[i] ) ) break;
     847          60 :     ntarget++;
     848             :   }
     849          44 :   if(ntarget!=numq && ntarget!=0) error("found wrong number of SIGMARES values");
     850          44 :   if(ntarget==numq) resolution=true;
     851             : 
     852          44 :   if(gpu && resolution) error("Resolution function is not supported in GPUs");
     853             : 
     854          44 :   Nj = 10;
     855          44 :   parse("N", Nj);
     856          44 :   if (Nj < 2) error("N should be larger than 1");
     857          44 :   if (resolution) log.printf("  Resolution function with N: %d\n", Nj);
     858             : 
     859          44 :   if(!gpu) {
     860          44 :     FF_rank.resize(numq);
     861             :     unsigned n_atom_types;
     862          44 :     if(onebead) {
     863          16 :       FF_value.resize(nres,std::vector<double>(numq));
     864             :       n_atom_types=NONEBEAD;
     865          16 :       if(saxs) {
     866          10 :         FF_value_vacuum.resize(n_atom_types,std::vector<double>(numq));
     867          10 :         FF_value_solv.resize(n_atom_types,std::vector<double>(numq));
     868          20 :         FF_value_mixed.resize(n_atom_types,std::vector<double>(numq));
     869             :       } else {
     870           6 :         FF_value_vacuum_H.resize(n_atom_types,std::vector<double>(numq));
     871           6 :         FF_value_solv_H.resize(n_atom_types,std::vector<double>(numq));
     872           6 :         FF_value_mixed_H.resize(n_atom_types,std::vector<double>(numq));
     873           6 :         FF_value_vacuum_D.resize(n_atom_types,std::vector<double>(numq));
     874          12 :         FF_value_mixed_D.resize(n_atom_types,std::vector<double>(numq));
     875             :       }
     876             :     } else {
     877          56 :       FF_value.resize(size,std::vector<double>(numq));
     878             :     }
     879         488 :     for(unsigned k=0; k<numq; ++k) {
     880         444 :       if(!onebead) {
     881      523104 :         for(unsigned i=0; i<size; ++i) FF_value[i][k] = static_cast<double>(FF_tmp[k][atoi[i]])/(std::sqrt(Iq0));
     882      523104 :         for(unsigned i=0; i<size; ++i) FF_rank[k] += FF_value[i][k]*FF_value[i][k];
     883             :       } else {
     884         144 :         if(saxs) {
     885        3240 :           for(unsigned i=0; i<n_atom_types; ++i) {
     886        3150 :             FF_value_vacuum[i][k] = static_cast<double>(FF_tmp_vac[k][i]);
     887        3150 :             FF_value_mixed[i][k] = static_cast<double>(FF_tmp_mix[k][i]);
     888        3150 :             FF_value_solv[i][k] = static_cast<double>(FF_tmp_solv[k][i]);
     889             :           }
     890             :         } else { // SANS
     891        1944 :           for(unsigned i=0; i<n_atom_types; ++i) {
     892        1890 :             FF_value_vacuum_H[i][k] = static_cast<double>(FF_tmp_vac_H[k][i]);
     893        1890 :             FF_value_mixed_H[i][k] = static_cast<double>(FF_tmp_mix_H[k][i]);
     894        1890 :             FF_value_solv_H[i][k] = static_cast<double>(FF_tmp_solv_H[k][i]);
     895        1890 :             FF_value_vacuum_D[i][k] = static_cast<double>(FF_tmp_vac_D[k][i]);
     896        1890 :             FF_value_mixed_D[i][k] = static_cast<double>(FF_tmp_mix_D[k][i]);
     897             :           }
     898             :         }
     899             :       }
     900             :     }
     901             :   } else {
     902             :     unsigned n_atom_types;
     903           0 :     if(onebead) {
     904           0 :       FFf_value.resize(numq,std::vector<float>(nres));
     905             :       n_atom_types=NONEBEAD;
     906           0 :       if(saxs) {
     907           0 :         FF_value_vacuum.resize(n_atom_types,std::vector<double>(numq));
     908           0 :         FF_value_solv.resize(n_atom_types,std::vector<double>(numq));
     909           0 :         FF_value_mixed.resize(n_atom_types,std::vector<double>(numq));
     910             :       } else { // SANS
     911           0 :         FF_value_vacuum_H.resize(n_atom_types,std::vector<double>(numq));
     912           0 :         FF_value_solv_H.resize(n_atom_types,std::vector<double>(numq));
     913           0 :         FF_value_mixed_H.resize(n_atom_types,std::vector<double>(numq));
     914           0 :         FF_value_vacuum_D.resize(n_atom_types,std::vector<double>(numq));
     915           0 :         FF_value_mixed_D.resize(n_atom_types,std::vector<double>(numq));
     916             :       }
     917             :     } else {
     918           0 :       FFf_value.resize(numq,std::vector<float>(size));
     919             :     }
     920           0 :     for(unsigned k=0; k<numq; ++k) {
     921           0 :       if(!onebead) {
     922           0 :         for(unsigned i=0; i<size; ++i) {
     923           0 :           FFf_value[k][i] = static_cast<float>(FF_tmp[k][atoi[i]])/(std::sqrt(Iq0));
     924             :         }
     925             :       } else {
     926           0 :         if(saxs) {
     927           0 :           for(unsigned i=0; i<n_atom_types; ++i) {
     928           0 :             FF_value_vacuum[i][k] = static_cast<double>(FF_tmp_vac[k][i]);
     929           0 :             FF_value_mixed[i][k] = static_cast<double>(FF_tmp_mix[k][i]);
     930           0 :             FF_value_solv[i][k] = static_cast<double>(FF_tmp_solv[k][i]);
     931             :           }
     932             :         } else { // SANS
     933           0 :           for(unsigned i=0; i<n_atom_types; ++i) {
     934           0 :             FF_value_vacuum_H[i][k] = static_cast<double>(FF_tmp_vac_H[k][i]);
     935           0 :             FF_value_mixed_H[i][k] = static_cast<double>(FF_tmp_mix_H[k][i]);
     936           0 :             FF_value_solv_H[i][k] = static_cast<double>(FF_tmp_solv_H[k][i]);
     937           0 :             FF_value_vacuum_D[i][k] = static_cast<double>(FF_tmp_vac_D[k][i]);
     938           0 :             FF_value_mixed_D[i][k] = static_cast<double>(FF_tmp_mix_D[k][i]);
     939             :           }
     940             :         }
     941             :       }
     942             :     }
     943             :   }
     944             : 
     945          44 :   if(!getDoScore()) {
     946         408 :     for(unsigned i=0; i<numq; ++i) {
     947         372 :       std::string num; Tools::convert(i,num);
     948         744 :       addComponentWithDerivatives("q-"+num);
     949         744 :       componentIsNotPeriodic("q-"+num);
     950             :     }
     951          36 :     if(exp) {
     952         128 :       for(unsigned i=0; i<numq; ++i) {
     953         120 :         std::string num; Tools::convert(i,num);
     954         240 :         addComponent("exp-"+num);
     955         120 :         componentIsNotPeriodic("exp-"+num);
     956         120 :         Value* comp=getPntrToComponent("exp-"+num);
     957         120 :         comp->set(expint[i]);
     958             :       }
     959             :     }
     960             :   } else {
     961          80 :     for(unsigned i=0; i<numq; ++i) {
     962          72 :       std::string num; Tools::convert(i,num);
     963         144 :       addComponent("q-"+num);
     964         144 :       componentIsNotPeriodic("q-"+num);
     965             :     }
     966          80 :     for(unsigned i=0; i<numq; ++i) {
     967          72 :       std::string num; Tools::convert(i,num);
     968         144 :       addComponent("exp-"+num);
     969          72 :       componentIsNotPeriodic("exp-"+num);
     970          72 :       Value* comp=getPntrToComponent("exp-"+num);
     971          72 :       comp->set(expint[i]);
     972             :     }
     973             :   }
     974             : 
     975             :   // convert units to nm^-1
     976         488 :   for(unsigned i=0; i<numq; ++i) {
     977         444 :     q_list[i]=q_list[i]*10.0;    // factor 10 to convert from A^-1 to nm^-1
     978         444 :     if (resolution) sigma_res[i]=sigma_res[i]*10.0;
     979             :   }
     980             : 
     981             :   // compute resolution function after converting units
     982          44 :   if (resolution) {
     983           4 :     qj_list.resize(numq, std::vector<double>(Nj));
     984           4 :     Rij.resize(numq, std::vector<double>(Nj));
     985             :     // compute Rij and qj_list
     986           4 :     resolution_function();
     987             :   }
     988             : 
     989          44 :   log<<"  Bibliography ";
     990          44 :   if(onebead) {
     991          32 :     log<<plumed.cite("Ballabio, Paissoni, Bollati, de Rosa, Capelli, Camilloni, J. Chem. Theory Comput., 19, 22, 8401-8413 (2023)");
     992             :   }
     993          44 :   if(martini) {
     994          16 :     log<<plumed.cite("Niebling, Björling, Westenhoff, J. Appl. Crystallogr., 47, 1190–1198 (2014)");
     995          16 :     log<<plumed.cite("Paissoni, Jussupow, Camilloni, J. Appl. Crystallogr., 52, 394-402 (2019)");
     996             :   }
     997          44 :   if(atomistic) {
     998          24 :     log<<plumed.cite("Fraser, MacRae, Suzuki, J. Appl. Crystallogr., 11, 693–694 (1978)");
     999          24 :     log<<plumed.cite("Brown, Fox, Maslen, O'Keefe, Willis, International Tables for Crystallography, C, 554–595 (International Union of Crystallography, 2006)");
    1000             :   }
    1001          44 :   if(resolution) {
    1002           8 :     log<<plumed.cite("Pedersen, Posselt, Mortensen, J. Appl. Crystallogr., 23, 321–333 (1990)");
    1003             :   }
    1004             : 
    1005          88 :   log<< plumed.cite("Bonomi, Camilloni, Bioinformatics, 33, 3999 (2017)");
    1006          44 :   log<<"\n";
    1007             : 
    1008          44 :   requestAtoms(atoms, false);
    1009             : 
    1010          44 :   if(getDoScore()) {
    1011           8 :     setParameters(expint);
    1012           8 :     Initialise(numq);
    1013             :   }
    1014          44 :   setDerivatives();
    1015          44 :   checkRead();
    1016          88 : }
    1017             : 
    1018             : // calculates SASA neighbor list
    1019          12 : void SAXS::calcNlist(std::vector<std::vector<int> > &Nlist)
    1020             : {
    1021             :   unsigned natoms = getNumberOfAtoms();
    1022       42680 :   for(unsigned i = 0; i < natoms; ++i) {
    1023       42668 :     if (LCPOparam[i].size()>0) {
    1024    36236236 :       for (unsigned j = 0; j < i; ++j) {
    1025    36216204 :         if (LCPOparam[j].size()>0) {
    1026    16741476 :           double Delta_ij_mod = modulo(delta(getPosition(i), getPosition(j)))*10.;
    1027    16741476 :           double overlapD = LCPOparam[i][0]+LCPOparam[j][0];
    1028    16741476 :           if(Delta_ij_mod < overlapD) {
    1029      391272 :             Nlist.at(i).push_back(j);
    1030      391272 :             Nlist.at(j).push_back(i);
    1031             :           }
    1032             :         }
    1033             :       }
    1034             :     }
    1035             :   }
    1036             : 
    1037          12 : }
    1038             : 
    1039             : // calculates SASA according to LCPO algorithm
    1040          12 : void SAXS::sasa_calculate(std::vector<bool> &solv_res) {
    1041             :   unsigned natoms = getNumberOfAtoms();
    1042          12 :   std::vector<std::vector<int> > Nlist(natoms);
    1043          12 :   calcNlist(Nlist);
    1044          12 :   std::vector<double> sasares(nres, 0.);
    1045             : 
    1046          12 :   #pragma omp parallel num_threads(OpenMP::getNumThreads())
    1047             :   {
    1048             :     std::vector<double> private_sasares(nres, 0.);
    1049             :     #pragma omp for
    1050             :     for (unsigned i = 0; i < natoms; ++i) {
    1051             :       if (LCPOparam[i].size() > 1 && LCPOparam[i][1] > 0.0) {
    1052             :         double Aij = 0.0;
    1053             :         double Aijk = 0.0;
    1054             :         double Ajk = 0.0;
    1055             :         double ri = LCPOparam[i][0];
    1056             :         double S1 = 4.*M_PI*ri*ri;
    1057             :         for (unsigned j = 0; j < Nlist[i].size(); ++j) {
    1058             :           double d_ij = modulo(delta( getPosition(i), getPosition(Nlist[i][j]) ))*10.;
    1059             :           double rj = LCPOparam[Nlist[i][j]][0];
    1060             :           double Aijt = (2.*M_PI*ri*(ri-d_ij/2.-((ri*ri-rj*rj)/(2.*d_ij))));
    1061             :           double Ajkt = 0.0;
    1062             :           for (unsigned k = 0; k < Nlist[Nlist[i][j]].size(); ++k) {
    1063             :             if (std::find (Nlist[i].begin(), Nlist[i].end(), Nlist[Nlist[i][j]][k]) !=  Nlist[i].end()) {
    1064             :               double d_jk = modulo(delta( getPosition(Nlist[i][j]), getPosition(Nlist[Nlist[i][j]][k]) ))*10.;
    1065             :               double rk = LCPOparam[Nlist[Nlist[i][j]][k]][0];
    1066             :               double sjk =  (2.*M_PI*rj*(rj-d_jk/2.-((rj*rj-rk*rk)/(2.*d_jk))));
    1067             :               Ajkt += sjk;
    1068             :             }
    1069             :           }
    1070             :           Aijk += (Aijt * Ajkt);
    1071             :           Aij += Aijt;
    1072             :           Ajk += Ajkt;
    1073             :         }
    1074             :         double sasai = (LCPOparam[i][1]*S1+LCPOparam[i][2]*Aij+LCPOparam[i][3]*Ajk+LCPOparam[i][4]*Aijk);
    1075             :         if (sasai > 0) {
    1076             :           private_sasares[residue_atom[i]] += sasai / 100.0;
    1077             :         }
    1078             :       }
    1079             :     }
    1080             :     #pragma omp critical
    1081             :     { // combining private_sasares into sasares
    1082             :       for (unsigned i = 0; i < nres; ++i) {
    1083             :         sasares[i] += private_sasares[i];
    1084             :       }
    1085             :     }
    1086             :   }
    1087        2632 :   for(unsigned i=0; i<nres; ++i) { // updating solv_res based on sasares
    1088        2620 :     if(sasares[i]>sasa_cutoff) solv_res[i] = 1;
    1089             :     else solv_res[i] = 0;
    1090             :   }
    1091          12 : }
    1092             : 
    1093           0 : void SAXS::calculate_gpu(std::vector<Vector> &pos, std::vector<Vector> &deriv)
    1094             : {
    1095             : #ifdef __PLUMED_HAS_ARRAYFIRE
    1096             :   unsigned size;
    1097             :   if(onebead) size = nres;
    1098             :   else size = getNumberOfAtoms();
    1099             :   const unsigned numq = q_list.size();
    1100             : 
    1101             :   std::vector<float> sum;
    1102             :   sum.resize(numq);
    1103             : 
    1104             :   std::vector<float> dd;
    1105             :   dd.resize(size*3*numq);
    1106             : 
    1107             :   // on gpu only the master rank run the calculation
    1108             :   if(comm.Get_rank()==0) {
    1109             :     std::vector<float> posi;
    1110             :     posi.resize(3*size);
    1111             :     #pragma omp parallel for num_threads(OpenMP::getNumThreads())
    1112             :     for (unsigned i=0; i<size; ++i) {
    1113             :       const Vector tmp = pos[i];
    1114             :       posi[3*i]   = static_cast<float>(tmp[0]);
    1115             :       posi[3*i+1] = static_cast<float>(tmp[1]);
    1116             :       posi[3*i+2] = static_cast<float>(tmp[2]);
    1117             :     }
    1118             : 
    1119             :     // create array a and b containing atomic coordinates
    1120             : #ifdef  __PLUMED_HAS_ARRAYFIRE_CUDA
    1121             :     af::setDevice(afcu::getNativeId(deviceid));
    1122             : #elif   __PLUMED_HAS_ARRAYFIRE_OCL
    1123             :     af::setDevice(afcl::getNativeId(deviceid));
    1124             : #else
    1125             :     af::setDevice(deviceid);
    1126             : #endif
    1127             :     // 3,size,1,1
    1128             :     af::array pos_a = af::array(3, size, &posi.front());
    1129             :     // size,3,1,1
    1130             :     pos_a = af::moddims(pos_a.T(), size, 3, 1);
    1131             :     // size,3,1,1
    1132             :     af::array pos_b = pos_a(af::span, af::span);
    1133             :     // size,1,3,1
    1134             :     pos_a = af::moddims(pos_a, size, 1, 3);
    1135             :     // 1,size,3,1
    1136             :     pos_b = af::moddims(pos_b, 1, size, 3);
    1137             : 
    1138             :     // size,size,3,1
    1139             :     af::array pos_a_t = af::tile(pos_a, 1, size, 1);
    1140             :     // size,size,3,1: for some reason we need this
    1141             :     pos_a_t = af::moddims(pos_a_t, size, size, 3);
    1142             :     // size,size,3,1
    1143             :     af::array pos_b_t = af::tile(pos_b, size, 1, 1);
    1144             :     // size,size,3,1: for some reason we need this
    1145             :     pos_b_t = af::moddims(pos_b_t, size, size, 3);
    1146             :     // size,size,3,1
    1147             :     af::array xyz_dist = pos_a_t - pos_b_t;
    1148             :     // size,size,1,1
    1149             :     af::array square = af::sum(xyz_dist*xyz_dist,2);
    1150             :     // size,size,1,1
    1151             :     af::array dist_sqrt = af::sqrt(square);
    1152             :     // replace the zero of square with one to avoid nan in the derivatives (the number does not matter because this are multiplied by zero)
    1153             :     af::replace(square,!(af::iszero(square)),1.);
    1154             :     // size,size,3,1
    1155             :     xyz_dist = xyz_dist / af::tile(square, 1, 1, 3);
    1156             :     // numq,1,1,1
    1157             :     af::array sum_device   = af::constant(0, numq, f32);
    1158             :     // numq,size,3,1
    1159             :     af::array deriv_device = af::constant(0, numq, size, 3, f32);
    1160             : 
    1161             :     for (unsigned k=0; k<numq; ++k) {
    1162             :       // calculate FF matrix
    1163             :       // size,1,1,1
    1164             :       af::array AFF_value(size, &FFf_value[k].front());
    1165             :       // size,size,1,1
    1166             :       af::array FFdist_mod = af::tile(AFF_value(af::span), 1, size)*af::transpose(af::tile(AFF_value(af::span), 1, size));
    1167             : 
    1168             :       // get q
    1169             :       const float qvalue = static_cast<float>(q_list[k]);
    1170             :       // size,size,1,1
    1171             :       af::array dist_q = qvalue*dist_sqrt;
    1172             :       // size,size,1
    1173             :       af::array dist_sin = af::sin(dist_q)/dist_q;
    1174             :       af::replace(dist_sin,!(af::isNaN(dist_sin)),1.);
    1175             :       // 1,1,1,1
    1176             :       sum_device(k) = af::sum(af::flat(dist_sin)*af::flat(FFdist_mod));
    1177             : 
    1178             :       // size,size,1,1
    1179             :       af::array tmp = FFdist_mod*(dist_sin - af::cos(dist_q));
    1180             :       // size,size,3,1
    1181             :       af::array dd_all = af::tile(tmp, 1, 1, 3)*xyz_dist;
    1182             :       // it should become 1,size,3
    1183             :       deriv_device(k, af::span, af::span) = af::sum(dd_all,0);
    1184             :     }
    1185             : 
    1186             :     // read out results
    1187             :     sum_device.host(&sum.front());
    1188             : 
    1189             :     deriv_device = af::reorder(deriv_device, 2, 1, 0);
    1190             :     deriv_device = af::flat(deriv_device);
    1191             :     deriv_device.host(&dd.front());
    1192             :   }
    1193             : 
    1194             :   comm.Bcast(dd, 0);
    1195             :   comm.Bcast(sum, 0);
    1196             : 
    1197             :   for(unsigned k=0; k<numq; ++k) {
    1198             :     std::string num; Tools::convert(k,num);
    1199             :     Value* val=getPntrToComponent("q-"+num);
    1200             :     val->set(sum[k]);
    1201             :     if(getDoScore()) setCalcData(k, sum[k]);
    1202             :     for(unsigned i=0; i<size; ++i) {
    1203             :       const unsigned di = k*size*3+i*3;
    1204             :       deriv[k*size+i] = Vector(2.*dd[di+0],2.*dd[di+1],2.*dd[di+2]);
    1205             :     }
    1206             :   }
    1207             : #endif
    1208           0 : }
    1209             : 
    1210         204 : void SAXS::calculate_cpu(std::vector<Vector> &pos, std::vector<Vector> &deriv)
    1211             : {
    1212             :   unsigned size;
    1213         204 :   if(onebead) size = nres;
    1214             :   else size = getNumberOfAtoms();
    1215         204 :   const unsigned numq = q_list.size();
    1216             : 
    1217         204 :   unsigned stride = comm.Get_size();
    1218         204 :   unsigned rank   = comm.Get_rank();
    1219         204 :   if(serial) {
    1220             :     stride = 1;
    1221             :     rank   = 0;
    1222             :   }
    1223         204 :   std::vector<double> sum(numq,0);
    1224         204 :   unsigned nt=OpenMP::getNumThreads();
    1225         204 :   #pragma omp parallel num_threads(nt)
    1226             :   {
    1227             :     std::vector<Vector> omp_deriv(deriv.size());
    1228             :     std::vector<double> omp_sum(numq,0);
    1229             :     #pragma omp for nowait
    1230             :     for (unsigned i=rank; i<size-1; i+=stride) {
    1231             :       Vector posi = pos[i];
    1232             :       for (unsigned j=i+1; j<size ; ++j) {
    1233             :         Vector c_distances = delta(posi,pos[j]);
    1234             :         double m_distances = c_distances.modulo();
    1235             :         c_distances = c_distances/m_distances/m_distances;
    1236             :         for (unsigned k=0; k<numq; ++k) {
    1237             :           unsigned kdx=k*size;
    1238             :           double qdist = q_list[k]*m_distances;
    1239             :           double FFF = 2.*FF_value[i][k]*FF_value[j][k];
    1240             :           double tsq = std::sin(qdist)/qdist;
    1241             :           double tcq = std::cos(qdist);
    1242             :           double tmp = FFF*(tcq-tsq);
    1243             :           Vector dd  = c_distances*tmp;
    1244             :           if(nt>1) {
    1245             :             omp_deriv[kdx+i] -=dd;
    1246             :             omp_deriv[kdx+j] +=dd;
    1247             :             omp_sum[k] += FFF*tsq;
    1248             :           } else {
    1249             :             deriv[kdx+i] -= dd;
    1250             :             deriv[kdx+j] += dd;
    1251             :             sum[k] += FFF*tsq;
    1252             :           }
    1253             :         }
    1254             :       }
    1255             :     }
    1256             :     #pragma omp critical
    1257             :     if(nt>1) {
    1258             :       for(unsigned i=0; i<deriv.size(); ++i) deriv[i]+=omp_deriv[i];
    1259             :       for(unsigned k=0; k<numq; ++k) sum[k]+=omp_sum[k];
    1260             :     }
    1261             :   }
    1262             : 
    1263         204 :   if(!serial) {
    1264         200 :     comm.Sum(&deriv[0][0], 3*deriv.size());
    1265         200 :     comm.Sum(&sum[0], numq);
    1266             :   }
    1267             : 
    1268         204 :   if (resolution) {
    1269             :     // get spline for scatering curve
    1270           4 :     std::vector<SplineCoeffs> scatt_coeffs = spline_coeffs(q_list, sum);
    1271             : 
    1272             :     // get spline for the derivatives
    1273             :     // copy the deriv to a new vector and zero deriv
    1274           4 :     std::vector<Vector> old_deriv(deriv);
    1275           4 :     memset(&deriv[0][0], 0.0, deriv.size() * sizeof deriv[0]);
    1276             : 
    1277           4 :     unsigned nt=OpenMP::getNumThreads();
    1278         274 :     for (unsigned i=rank; i<size; i+=stride) {
    1279         270 :       std::vector<double> deriv_i_x(numq);
    1280         270 :       std::vector<double> deriv_i_y(numq);
    1281         270 :       std::vector<double> deriv_i_z(numq);
    1282             : 
    1283             :       std::vector<SplineCoeffs> deriv_coeffs_x;
    1284             :       std::vector<SplineCoeffs> deriv_coeffs_y;
    1285             :       std::vector<SplineCoeffs> deriv_coeffs_z;
    1286        4320 :       for (unsigned k=0; k<numq; k++) {
    1287        4050 :         unsigned kdx = k*size;
    1288        4050 :         deriv_i_x[k] = old_deriv[kdx+i][0];
    1289        4050 :         deriv_i_y[k] = old_deriv[kdx+i][1];
    1290        4050 :         deriv_i_z[k] = old_deriv[kdx+i][2];
    1291             :       }
    1292         270 :       deriv_coeffs_x = spline_coeffs(q_list, deriv_i_x);
    1293         270 :       deriv_coeffs_y = spline_coeffs(q_list, deriv_i_y);
    1294         270 :       deriv_coeffs_z = spline_coeffs(q_list, deriv_i_z);
    1295             : 
    1296             :       // compute derivative with the smearing using the resolution function
    1297         270 :       #pragma omp parallel for num_threads(nt)
    1298             :       for (unsigned k=0; k<numq; k++) {
    1299             :         unsigned kdx = k*size;
    1300             :         double dq = qj_list[k][1] - qj_list[k][0];
    1301             :         for (unsigned j=0; j<Nj; j++) {
    1302             :           deriv[kdx+i][0] += Rij[k][j] * interpolation(deriv_coeffs_x, qj_list[k][j]) * dq;
    1303             :           deriv[kdx+i][1] += Rij[k][j] * interpolation(deriv_coeffs_y, qj_list[k][j]) * dq;
    1304             :           deriv[kdx+i][2] += Rij[k][j] * interpolation(deriv_coeffs_z, qj_list[k][j]) * dq;
    1305             :         }
    1306             :       }
    1307             :     }
    1308             : 
    1309           4 :     if(!serial) {
    1310           4 :       comm.Sum(&deriv[0][0], 3*deriv.size());
    1311             :     }
    1312             : 
    1313             :     // compute the smeared spectra using the resolution function
    1314           4 :     #pragma omp parallel for num_threads(nt)
    1315             :     for (unsigned i=0; i<numq; i++) {
    1316             :       sum[i] = 0.;
    1317             :       double dq = qj_list[i][1] - qj_list[i][0];
    1318             :       for (unsigned j=0; j<Nj; j++) {
    1319             :         sum[i] += Rij[i][j] * interpolation(scatt_coeffs, qj_list[i][j]) * dq;
    1320             :       }
    1321             :     }
    1322             :   }
    1323             : 
    1324        2088 :   for (unsigned k=0; k<numq; ++k) {
    1325        1884 :     sum[k]+=FF_rank[k];
    1326        1884 :     std::string num; Tools::convert(k,num);
    1327        1884 :     Value* val=getPntrToComponent("q-"+num);
    1328        1884 :     val->set(sum[k]);
    1329        1884 :     if(getDoScore()) setCalcData(k, sum[k]);
    1330             :   }
    1331         204 : }
    1332             : 
    1333         204 : void SAXS::calculate()
    1334             : {
    1335         204 :   if(pbc) makeWhole();
    1336             : 
    1337         204 :   const size_t size = getNumberOfAtoms();
    1338             :   const size_t numq = q_list.size();
    1339             : 
    1340             :   // these are the derivatives associated to the coarse graining
    1341         204 :   std::vector<Vector> aa_deriv(size);
    1342             : 
    1343             :   size_t beads_size = size;
    1344         204 :   if(onebead) beads_size = nres;
    1345             :   // these are the derivatives particle,q
    1346         204 :   std::vector<Vector> bd_deriv(numq*beads_size);
    1347             : 
    1348         204 :   std::vector<Vector> beads_pos(beads_size);
    1349         204 :   if(onebead) {
    1350        3482 :     for(unsigned resid=0; resid<nres; resid++) {
    1351             :       double sum_mass = 0.;
    1352        3466 :       Vector sum_pos = Vector(0,0,0);
    1353    12278134 :       for(unsigned atom_id=0; atom_id<size; atom_id++) {
    1354    12274668 :         if(residue_atom[atom_id] == resid) {
    1355       56586 :           aa_deriv[atom_id] = Vector(atoms_masses[atom_id],atoms_masses[atom_id],atoms_masses[atom_id]);
    1356       56586 :           sum_pos += atoms_masses[atom_id] * getPosition(atom_id); // getPosition(first_atom+atom_id)
    1357       56586 :           sum_mass += atoms_masses[atom_id];
    1358             :         }
    1359             :       }
    1360        3466 :       beads_pos[resid] = sum_pos/sum_mass;
    1361    12278134 :       for(unsigned atom_id=0; atom_id<size; atom_id++) {
    1362    12274668 :         if(residue_atom[atom_id] == resid) {
    1363       56586 :           aa_deriv[atom_id] /= sum_mass;
    1364             :         }
    1365             :       }
    1366             :     }
    1367             :     // SASA
    1368          16 :     std::vector<bool> solv_res(nres, 0);
    1369          16 :     if(saxs) {
    1370          10 :       if(getStep()%solv_stride == 0 || isFirstStep) {
    1371          10 :         isFirstStep = 0;
    1372          10 :         if(rho_corr!=rho) sasa_calculate(solv_res);
    1373          10 :         Iq0=0.;
    1374        2166 :         for(unsigned i=0; i<nres; ++i) {
    1375        2156 :           if(solv_res[i] == 1 ) {
    1376         260 :             Iq0 += std::sqrt((Iq0_vac[i]+(rho_corr*rho_corr)*Iq0_solv[i]-rho_corr*Iq0_mix[i]));
    1377             :           } else {
    1378        1896 :             Iq0 += std::sqrt((Iq0_vac[i]+(rho*rho)*Iq0_solv[i]-rho*Iq0_mix[i]));
    1379             :           }
    1380             :         }
    1381             :         // Form Factors
    1382         100 :         for(unsigned k=0; k<numq; ++k) {
    1383       19494 :           for(unsigned i=0; i<nres; ++i) {
    1384       19404 :             if(!gpu) {
    1385       19404 :               if(solv_res[i] == 0) { // buried
    1386       17064 :                 FF_value[i][k] = std::sqrt(std::fabs(FF_value_vacuum[atoi[i]][k] + rho*rho*FF_value_solv[atoi[i]][k] - rho*FF_value_mixed[atoi[i]][k]))/Iq0;
    1387             :               } else { // surface
    1388        2340 :                 FF_value[i][k] = std::sqrt(std::fabs(FF_value_vacuum[atoi[i]][k] + rho_corr*rho_corr*FF_value_solv[atoi[i]][k] - rho_corr*FF_value_mixed[atoi[i]][k]))/Iq0;
    1389             :               }
    1390             :             } else {
    1391           0 :               if(solv_res[i] == 0) { // buried
    1392           0 :                 FFf_value[k][i] = static_cast<float>(std::sqrt(std::fabs(FF_value_vacuum[atoi[i]][k] + rho*rho*FF_value_solv[atoi[i]][k] - rho*FF_value_mixed[atoi[i]][k]))/Iq0);
    1393             :               } else { // surface
    1394           0 :                 FFf_value[k][i] = static_cast<float>(std::sqrt(std::fabs(FF_value_vacuum[atoi[i]][k] + rho_corr*rho_corr*FF_value_solv[atoi[i]][k] - rho_corr*FF_value_mixed[atoi[i]][k]))/Iq0);
    1395             :               }
    1396             :             }
    1397             :           }
    1398             :         }
    1399          10 :         if(!gpu) {
    1400         100 :           for(unsigned k=0; k<numq; ++k) {
    1401          90 :             FF_rank[k]=0.;
    1402       19494 :             for(unsigned i=0; i<nres; ++i) {
    1403       19404 :               FF_rank[k]+=FF_value[i][k]*FF_value[i][k];
    1404             :             }
    1405             :           }
    1406             :         }
    1407             :       }
    1408             :     } else { // SANS
    1409           6 :       std::vector<bool> deut_res(nres, 0);
    1410           6 :       double solv_sc_length = 0.1*(0.580 + 2.*((1. - deuter_conc) * (-0.374) + deuter_conc * 0.667)); // per water electron (10 electrons)
    1411           6 :       double rho_sans = rho * solv_sc_length;
    1412           6 :       double rho_sans_corr = rho_corr * solv_sc_length;
    1413           6 :       if(getStep()%solv_stride == 0 || isFirstStep) {
    1414           6 :         isFirstStep = 0;
    1415           6 :         if(deuter_conc!=0.||rho != rho_corr) sasa_calculate(solv_res);
    1416           6 :         Iq0=0.;
    1417        1316 :         for(unsigned i=0; i<nres; ++i) {
    1418        1310 :           if(solv_res[i] == 1 ) {
    1419         260 :             if(rand()/RAND_MAX<deuter_conc) {
    1420           0 :               Iq0 += std::sqrt(std::fabs(Iq0_vac_D[i] + rho_sans_corr*rho_sans_corr*Iq0_solv_H[i] - rho_sans_corr*Iq0_mix_D[i]));
    1421             :               deut_res[i] = 1;
    1422             :             } else {
    1423         260 :               Iq0 += std::sqrt(std::fabs(Iq0_vac_H[i] + rho_sans_corr*rho_sans_corr*Iq0_solv_H[i] - rho_sans_corr*Iq0_mix_H[i]));
    1424             :             }
    1425             :           } else {
    1426        1050 :             Iq0 += std::sqrt(std::fabs(Iq0_vac_H[i] + rho_sans*rho_sans*Iq0_solv_H[i] - rho_sans*Iq0_mix_H[i]));
    1427             :           }
    1428             :         }
    1429             :         // Form Factors
    1430          60 :         for(unsigned k=0; k<numq; ++k) {
    1431       11844 :           for(unsigned i=0; i<nres; ++i) {
    1432       11790 :             if(!gpu) {
    1433       11790 :               if(solv_res[i] == 0) { // hydrogen
    1434        9450 :                 FF_value[i][k] = std::sqrt(std::fabs(FF_value_vacuum_H[atoi[i]][k] + rho_sans*rho_sans*FF_value_solv_H[atoi[i]][k] - rho_sans*FF_value_mixed_H[atoi[i]][k]))/Iq0;
    1435             :               } else {
    1436        2340 :                 if(deut_res[i] == 0) {
    1437        2340 :                   FF_value[i][k] = std::sqrt(std::fabs(FF_value_vacuum_H[atoi[i]][k] + rho_sans_corr*rho_sans_corr*FF_value_solv_H[atoi[i]][k] - rho_sans_corr*FF_value_mixed_H[atoi[i]][k]))/Iq0;
    1438             :                 } else {
    1439           0 :                   FF_value[i][k] = std::sqrt(std::fabs(FF_value_vacuum_D[atoi[i]][k] + rho_sans_corr*rho_sans_corr*FF_value_solv_H[atoi[i]][k] - rho_sans_corr*FF_value_mixed_D[atoi[i]][k]))/Iq0;
    1440             :                 }
    1441             :               }
    1442             :             } else {
    1443           0 :               if(solv_res[i] == 0) { // hydrogen
    1444           0 :                 FFf_value[k][i] = static_cast<float>(std::sqrt(std::fabs(FF_value_vacuum_H[atoi[i]][k] + rho_sans*rho_sans*FF_value_solv_H[atoi[i]][k] - rho_sans*FF_value_mixed_H[atoi[i]][k]))/Iq0);
    1445             :               } else {
    1446           0 :                 if(deut_res[i] == 0) {
    1447           0 :                   FFf_value[k][i] = static_cast<float>(std::sqrt(std::fabs(FF_value_vacuum_H[atoi[i]][k] + rho_sans_corr*rho_sans_corr*FF_value_solv_H[atoi[i]][k] - rho_sans_corr*FF_value_mixed_H[atoi[i]][k]))/Iq0);
    1448             :                 } else {
    1449           0 :                   FFf_value[k][i] = static_cast<float>(std::sqrt(std::fabs(FF_value_vacuum_D[atoi[i]][k] + rho_sans_corr*rho_sans_corr*FF_value_solv_H[atoi[i]][k] - rho_sans_corr*FF_value_mixed_D[atoi[i]][k]))/Iq0);
    1450             :                 }
    1451             :               }
    1452             :             }
    1453             :           }
    1454             :         }
    1455           6 :         if(!gpu) {
    1456          60 :           for(unsigned k=0; k<numq; ++k) {
    1457          54 :             FF_rank[k]=0.;
    1458       11844 :             for(unsigned i=0; i<nres; ++i) {
    1459       11790 :               FF_rank[k]+=FF_value[i][k]*FF_value[i][k];
    1460             :             }
    1461             :           }
    1462             :         }
    1463             :       }
    1464             :     }
    1465             :     // not ONEBEAD
    1466             :   } else {
    1467       81024 :     for(unsigned i=0; i<size; ++i) {
    1468       80836 :       beads_pos[i] = getPosition(i);
    1469             :     }
    1470         376 :     aa_deriv = std::vector<Vector>(size,(Vector(1,1,1)));
    1471             :   }
    1472             : 
    1473         204 :   if(gpu) calculate_gpu(beads_pos, bd_deriv);
    1474         204 :   else calculate_cpu(beads_pos, bd_deriv);
    1475             : 
    1476         204 :   if(getDoScore()) {
    1477             :     /* Metainference */
    1478         168 :     double score = getScore();
    1479         168 :     setScore(score);
    1480             :   }
    1481             : 
    1482        2088 :   for (unsigned k=0; k<numq; ++k) {
    1483        1884 :     const unsigned kdx=k*beads_size;
    1484        1884 :     Tensor deriv_box;
    1485             :     Value* val;
    1486        1884 :     if(!getDoScore()) {
    1487         372 :       std::string num; Tools::convert(k,num);
    1488         372 :       val=getPntrToComponent("q-"+num);
    1489             : 
    1490         372 :       if(onebead) {
    1491             :         unsigned atom_id=0;
    1492       31338 :         for(unsigned i=0; i<beads_size; ++i) {
    1493      540468 :           for(unsigned j=0; j<atoms_per_bead[i]; ++j) {
    1494      509274 :             setAtomsDerivatives(val, atom_id, Vector(aa_deriv[atom_id][0]*bd_deriv[kdx+i][0], \
    1495      509274 :                                 aa_deriv[atom_id][1]*bd_deriv[kdx+i][1], \
    1496      509274 :                                 aa_deriv[atom_id][2]*bd_deriv[kdx+i][2]) );
    1497      509274 :             deriv_box += Tensor(getPosition(atom_id),Vector(aa_deriv[atom_id][0]*bd_deriv[kdx+i][0], \
    1498      509274 :                                 aa_deriv[atom_id][1]*bd_deriv[kdx+i][1], \
    1499     1018548 :                                 aa_deriv[atom_id][2]*bd_deriv[kdx+i][2]) );
    1500      509274 :             atom_id++;
    1501             :           }
    1502             :         }
    1503             :       } else {
    1504      501636 :         for(unsigned i=0; i<beads_size; ++i) {
    1505      501408 :           setAtomsDerivatives(val, i, Vector(bd_deriv[kdx+i][0], \
    1506      501408 :                                              bd_deriv[kdx+i][1], \
    1507      501408 :                                              bd_deriv[kdx+i][2]) );
    1508     1002816 :           deriv_box += Tensor(getPosition(i),Vector(bd_deriv[kdx+i][0], \
    1509      501408 :                               bd_deriv[kdx+i][1], \
    1510     1002816 :                               bd_deriv[kdx+i][2]) );
    1511             :         }
    1512             :       }
    1513             :     } else {
    1514        1512 :       val=getPntrToComponent("score");
    1515        1512 :       if(onebead) {
    1516             :         unsigned atom_id=0;
    1517           0 :         for(unsigned i=0; i<beads_size; ++i) {
    1518           0 :           for(unsigned j=0; j<atoms_per_bead[i]; ++j) {
    1519           0 :             setAtomsDerivatives(val, atom_id, Vector(aa_deriv[atom_id][0]*bd_deriv[kdx+i][0]*getMetaDer(k),
    1520           0 :                                 aa_deriv[atom_id][1]*bd_deriv[kdx+i][1]*getMetaDer(k),
    1521           0 :                                 aa_deriv[atom_id][2]*bd_deriv[kdx+i][2]*getMetaDer(k)) );
    1522           0 :             deriv_box += Tensor(getPosition(atom_id),Vector(aa_deriv[atom_id][0]*bd_deriv[kdx+i][0]*getMetaDer(k),
    1523           0 :                                 aa_deriv[atom_id][1]*bd_deriv[kdx+i][1]*getMetaDer(k),
    1524           0 :                                 aa_deriv[atom_id][2]*bd_deriv[kdx+i][2]*getMetaDer(k)) );
    1525           0 :             atom_id++;
    1526             :           }
    1527             :         }
    1528             :       } else {
    1529      450828 :         for(unsigned i=0; i<beads_size; ++i) {
    1530      449316 :           setAtomsDerivatives(val, i, Vector(bd_deriv[kdx+i][0]*getMetaDer(k),
    1531      449316 :                                              bd_deriv[kdx+i][1]*getMetaDer(k),
    1532      449316 :                                              bd_deriv[kdx+i][2]*getMetaDer(k)) );
    1533      898632 :           deriv_box += Tensor(getPosition(i),Vector(bd_deriv[kdx+i][0]*getMetaDer(k),
    1534      449316 :                               bd_deriv[kdx+i][1]*getMetaDer(k),
    1535      898632 :                               bd_deriv[kdx+i][2]*getMetaDer(k)) );
    1536             :         }
    1537             :       }
    1538             :     }
    1539        1884 :     setBoxDerivatives(val, -deriv_box);
    1540             :   }
    1541         204 : }
    1542             : 
    1543         204 : void SAXS::update() {
    1544             :   // write status file
    1545         204 :   if(getWstride()>0&& (getStep()%getWstride()==0 || getCPT()) ) writeStatus();
    1546         204 : }
    1547             : 
    1548          16 : unsigned SAXS::getOnebeadMapping(const PDB &pdb, const std::vector<AtomNumber> &atoms) {
    1549          16 :   std::vector<std::string> chains; pdb.getChainNames( chains );
    1550             :   std::vector<std::vector<std::string> > AtomResidueName;
    1551             : 
    1552             :   // cycle over chains
    1553          42 :   for(unsigned i=0; i<chains.size(); ++i) {
    1554             :     unsigned start, end;
    1555             :     std::string errmsg;
    1556          26 :     pdb.getResidueRange(chains[i], start, end, errmsg);
    1557          26 :     AtomResidueName.resize(2);
    1558             :     // cycle over residues
    1559        3346 :     for(unsigned res=start; res<=end; res++) {
    1560        3320 :       std::string Rname = pdb.getResidueName(res, chains[i]);
    1561        3320 :       Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
    1562        3320 :       std::vector<AtomNumber> res_atoms = pdb.getAtomsInResidue(res, chains[i]);
    1563        3320 :       std::vector<unsigned> tmp_residue_atom; tmp_residue_atom.resize(3,0);
    1564             :       // cycle over atoms
    1565       59906 :       for(unsigned a=0; a<res_atoms.size(); a++) {
    1566             :         // operations shared among all beads
    1567       56586 :         std::string Aname=pdb.getAtomName(res_atoms[a]);
    1568       56586 :         AtomResidueName[0].push_back(Aname);
    1569       56586 :         AtomResidueName[1].push_back(Rname);
    1570             :         char type;
    1571       56586 :         char first = Aname.at(0);
    1572             :         // We assume that element symbol is first letter, if not a number
    1573       56586 :         if (!isdigit(first)) {
    1574             :           type = first;
    1575             :           // otherwise is the second
    1576             :         } else {
    1577           0 :           type = Aname.at(1);
    1578             :         }
    1579       56586 :         if (type == 'H') atoms_masses.push_back(1.008);
    1580       16594 :         else if(type == 'C') atoms_masses.push_back(12.011);
    1581        4416 :         else if(type == 'N') atoms_masses.push_back(14.007);
    1582        5316 :         else if(type == 'O') atoms_masses.push_back(15.999);
    1583         132 :         else if(type == 'S') atoms_masses.push_back(32.065);
    1584          68 :         else if(type == 'P') atoms_masses.push_back(30.974);
    1585             :         else {
    1586           0 :           error("Unknown element in mass extraction\n");
    1587             :         }
    1588      113172 :         if(pdb.allowedResidue("protein",Rname)) {
    1589       54262 :           residue_atom.push_back(atoms_per_bead.size());
    1590             :         } else {
    1591             :           // check for nucleic acids
    1592             :           // Pentose bead
    1593       10450 :           if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  || Aname=="O3'"  ||
    1594        8500 :               Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  || Aname=="C1'"  || Aname=="H5'"  ||
    1595        6628 :               Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  || Aname=="H2'"  || Aname=="H2''" ||
    1596        5732 :               Aname=="H2'2" || Aname=="H1'"  || Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" ||
    1597        7634 :               Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T"  ||
    1598             :               Aname=="H3T" ) {
    1599        1262 :             residue_atom.push_back(atoms_per_bead.size()+0);
    1600        1262 :             tmp_residue_atom[0]++;
    1601             :           }
    1602             :           // Nucleobase bead
    1603        4686 :           else if(Aname=="N1"  || Aname=="N2"  || Aname=="N3"  || Aname=="N4"  || Aname=="N6"  ||
    1604        4062 :                   Aname=="N7"  || Aname=="N9"  || Aname=="C2"  || Aname=="C4"  || Aname=="C5"  ||
    1605        2736 :                   Aname=="C6"  || Aname=="C7"  || Aname=="C8"  || Aname=="O2"  || Aname=="O4"  ||
    1606        1956 :                   Aname=="O6"  || Aname=="H1"  || Aname=="H2"  || Aname=="H3"  || Aname=="H5"  ||
    1607        1020 :                   Aname=="H6"  || Aname=="H8"  || Aname=="H21" || Aname=="H22" || Aname=="H41" ||
    1608        2082 :                   Aname=="H42" || Aname=="H61" || Aname=="H62" || Aname=="H71" || Aname=="H72" ||
    1609             :                   Aname=="H73" ) {
    1610         858 :             residue_atom.push_back(atoms_per_bead.size()+1);
    1611         858 :             tmp_residue_atom[1]++;
    1612             :           }
    1613             :           // PO bead
    1614         204 :           else if(Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" || Aname=="O1P" ||
    1615         204 :                   Aname=="O2P" || Aname=="O3P" || Aname=="HP"  || Aname=="HOP3" ) {
    1616         204 :             residue_atom.push_back(atoms_per_bead.size()+2);
    1617         204 :             tmp_residue_atom[2]++;
    1618             :           }
    1619             :           // error
    1620           0 :           else error("Atom name "+Aname+" cannot be indexed to any bead. Check the PDB.");
    1621             :         }
    1622             :       }
    1623        6640 :       if(pdb.allowedResidue("protein",Rname)) {
    1624        3242 :         atoms_per_bead.push_back(res_atoms.size());
    1625             :       } else {
    1626          78 :         atoms_per_bead.push_back(tmp_residue_atom[0]);
    1627          78 :         atoms_per_bead.push_back(tmp_residue_atom[1]);
    1628          78 :         if(tmp_residue_atom[2]>0) atoms_per_bead.push_back(tmp_residue_atom[2]);
    1629             :       }
    1630             :     }
    1631             :   }
    1632          16 :   readLCPOparam(AtomResidueName, atoms.size());
    1633          16 :   return atoms_per_bead.size();
    1634          16 : }
    1635             : 
    1636           8 : void SAXS::getMartiniFFparam(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &parameter)
    1637             : {
    1638           8 :   parameter[ALA_BB].push_back(9.045);
    1639           8 :   parameter[ALA_BB].push_back(-0.098114);
    1640           8 :   parameter[ALA_BB].push_back(7.54281);
    1641           8 :   parameter[ALA_BB].push_back(-1.97438);
    1642           8 :   parameter[ALA_BB].push_back(-8.32689);
    1643           8 :   parameter[ALA_BB].push_back(6.09318);
    1644           8 :   parameter[ALA_BB].push_back(-1.18913);
    1645             : 
    1646           8 :   parameter[ARG_BB].push_back(10.729);
    1647           8 :   parameter[ARG_BB].push_back(-0.0392574);
    1648           8 :   parameter[ARG_BB].push_back(1.15382);
    1649           8 :   parameter[ARG_BB].push_back(-0.155999);
    1650           8 :   parameter[ARG_BB].push_back(-2.43619);
    1651           8 :   parameter[ARG_BB].push_back(1.72922);
    1652           8 :   parameter[ARG_BB].push_back(-0.33799);
    1653             : 
    1654           8 :   parameter[ARG_SC1].push_back(-2.796);
    1655           8 :   parameter[ARG_SC1].push_back(0.472403);
    1656           8 :   parameter[ARG_SC1].push_back(8.07424);
    1657           8 :   parameter[ARG_SC1].push_back(4.37299);
    1658           8 :   parameter[ARG_SC1].push_back(-10.7398);
    1659           8 :   parameter[ARG_SC1].push_back(4.95677);
    1660           8 :   parameter[ARG_SC1].push_back(-0.725797);
    1661             : 
    1662           8 :   parameter[ARG_SC2].push_back(15.396);
    1663           8 :   parameter[ARG_SC2].push_back(0.0636736);
    1664           8 :   parameter[ARG_SC2].push_back(-1.258);
    1665           8 :   parameter[ARG_SC2].push_back(1.93135);
    1666           8 :   parameter[ARG_SC2].push_back(-4.45031);
    1667           8 :   parameter[ARG_SC2].push_back(2.49356);
    1668           8 :   parameter[ARG_SC2].push_back(-0.410721);
    1669             : 
    1670           8 :   parameter[ASN_BB].push_back(10.738);
    1671           8 :   parameter[ASN_BB].push_back(-0.0402162);
    1672           8 :   parameter[ASN_BB].push_back(1.03007);
    1673           8 :   parameter[ASN_BB].push_back(-0.254174);
    1674           8 :   parameter[ASN_BB].push_back(-2.12015);
    1675           8 :   parameter[ASN_BB].push_back(1.55535);
    1676           8 :   parameter[ASN_BB].push_back(-0.30963);
    1677             : 
    1678           8 :   parameter[ASN_SC1].push_back(9.249);
    1679           8 :   parameter[ASN_SC1].push_back(-0.0148678);
    1680           8 :   parameter[ASN_SC1].push_back(5.52169);
    1681           8 :   parameter[ASN_SC1].push_back(0.00853212);
    1682           8 :   parameter[ASN_SC1].push_back(-6.71992);
    1683           8 :   parameter[ASN_SC1].push_back(3.93622);
    1684           8 :   parameter[ASN_SC1].push_back(-0.64973);
    1685             : 
    1686           8 :   parameter[ASP_BB].push_back(10.695);
    1687           8 :   parameter[ASP_BB].push_back(-0.0410247);
    1688           8 :   parameter[ASP_BB].push_back(1.03656);
    1689           8 :   parameter[ASP_BB].push_back(-0.298558);
    1690           8 :   parameter[ASP_BB].push_back(-2.06064);
    1691           8 :   parameter[ASP_BB].push_back(1.53495);
    1692           8 :   parameter[ASP_BB].push_back(-0.308365);
    1693             : 
    1694           8 :   parameter[ASP_SC1].push_back(9.476);
    1695           8 :   parameter[ASP_SC1].push_back(-0.0254664);
    1696           8 :   parameter[ASP_SC1].push_back(5.57899);
    1697           8 :   parameter[ASP_SC1].push_back(-0.395027);
    1698           8 :   parameter[ASP_SC1].push_back(-5.9407);
    1699           8 :   parameter[ASP_SC1].push_back(3.48836);
    1700           8 :   parameter[ASP_SC1].push_back(-0.569402);
    1701             : 
    1702           8 :   parameter[CYS_BB].push_back(10.698);
    1703           8 :   parameter[CYS_BB].push_back(-0.0233493);
    1704           8 :   parameter[CYS_BB].push_back(1.18257);
    1705           8 :   parameter[CYS_BB].push_back(0.0684464);
    1706           8 :   parameter[CYS_BB].push_back(-2.792);
    1707           8 :   parameter[CYS_BB].push_back(1.88995);
    1708           8 :   parameter[CYS_BB].push_back(-0.360229);
    1709             : 
    1710           8 :   parameter[CYS_SC1].push_back(8.199);
    1711           8 :   parameter[CYS_SC1].push_back(-0.0261569);
    1712           8 :   parameter[CYS_SC1].push_back(6.79677);
    1713           8 :   parameter[CYS_SC1].push_back(-0.343845);
    1714           8 :   parameter[CYS_SC1].push_back(-5.03578);
    1715           8 :   parameter[CYS_SC1].push_back(2.7076);
    1716           8 :   parameter[CYS_SC1].push_back(-0.420714);
    1717             : 
    1718           8 :   parameter[GLN_BB].push_back(10.728);
    1719           8 :   parameter[GLN_BB].push_back(-0.0391984);
    1720           8 :   parameter[GLN_BB].push_back(1.09264);
    1721           8 :   parameter[GLN_BB].push_back(-0.261555);
    1722           8 :   parameter[GLN_BB].push_back(-2.21245);
    1723           8 :   parameter[GLN_BB].push_back(1.62071);
    1724           8 :   parameter[GLN_BB].push_back(-0.322325);
    1725             : 
    1726           8 :   parameter[GLN_SC1].push_back(8.317);
    1727           8 :   parameter[GLN_SC1].push_back(-0.229045);
    1728           8 :   parameter[GLN_SC1].push_back(12.6338);
    1729           8 :   parameter[GLN_SC1].push_back(-7.6719);
    1730           8 :   parameter[GLN_SC1].push_back(-5.8376);
    1731           8 :   parameter[GLN_SC1].push_back(5.53784);
    1732           8 :   parameter[GLN_SC1].push_back(-1.12604);
    1733             : 
    1734           8 :   parameter[GLU_BB].push_back(10.694);
    1735           8 :   parameter[GLU_BB].push_back(-0.0521961);
    1736           8 :   parameter[GLU_BB].push_back(1.11153);
    1737           8 :   parameter[GLU_BB].push_back(-0.491995);
    1738           8 :   parameter[GLU_BB].push_back(-1.86236);
    1739           8 :   parameter[GLU_BB].push_back(1.45332);
    1740           8 :   parameter[GLU_BB].push_back(-0.29708);
    1741             : 
    1742           8 :   parameter[GLU_SC1].push_back(8.544);
    1743           8 :   parameter[GLU_SC1].push_back(-0.249555);
    1744           8 :   parameter[GLU_SC1].push_back(12.8031);
    1745           8 :   parameter[GLU_SC1].push_back(-8.42696);
    1746           8 :   parameter[GLU_SC1].push_back(-4.66486);
    1747           8 :   parameter[GLU_SC1].push_back(4.90004);
    1748           8 :   parameter[GLU_SC1].push_back(-1.01204);
    1749             : 
    1750           8 :   parameter[GLY_BB].push_back(9.977);
    1751           8 :   parameter[GLY_BB].push_back(-0.0285799);
    1752           8 :   parameter[GLY_BB].push_back(1.84236);
    1753           8 :   parameter[GLY_BB].push_back(-0.0315192);
    1754           8 :   parameter[GLY_BB].push_back(-2.88326);
    1755           8 :   parameter[GLY_BB].push_back(1.87323);
    1756           8 :   parameter[GLY_BB].push_back(-0.345773);
    1757             : 
    1758           8 :   parameter[HIS_BB].push_back(10.721);
    1759           8 :   parameter[HIS_BB].push_back(-0.0379337);
    1760           8 :   parameter[HIS_BB].push_back(1.06028);
    1761           8 :   parameter[HIS_BB].push_back(-0.236143);
    1762           8 :   parameter[HIS_BB].push_back(-2.17819);
    1763           8 :   parameter[HIS_BB].push_back(1.58357);
    1764           8 :   parameter[HIS_BB].push_back(-0.31345);
    1765             : 
    1766           8 :   parameter[HIS_SC1].push_back(-0.424);
    1767           8 :   parameter[HIS_SC1].push_back(0.665176);
    1768           8 :   parameter[HIS_SC1].push_back(3.4369);
    1769           8 :   parameter[HIS_SC1].push_back(2.93795);
    1770           8 :   parameter[HIS_SC1].push_back(-5.18288);
    1771           8 :   parameter[HIS_SC1].push_back(2.12381);
    1772           8 :   parameter[HIS_SC1].push_back(-0.284224);
    1773             : 
    1774           8 :   parameter[HIS_SC2].push_back(5.363);
    1775           8 :   parameter[HIS_SC2].push_back(-0.0176945);
    1776           8 :   parameter[HIS_SC2].push_back(2.9506);
    1777           8 :   parameter[HIS_SC2].push_back(-0.387018);
    1778           8 :   parameter[HIS_SC2].push_back(-1.83951);
    1779           8 :   parameter[HIS_SC2].push_back(0.9703);
    1780           8 :   parameter[HIS_SC2].push_back(-0.1458);
    1781             : 
    1782           8 :   parameter[HIS_SC3].push_back(5.784);
    1783           8 :   parameter[HIS_SC3].push_back(-0.0293129);
    1784           8 :   parameter[HIS_SC3].push_back(2.74167);
    1785           8 :   parameter[HIS_SC3].push_back(-0.520875);
    1786           8 :   parameter[HIS_SC3].push_back(-1.62949);
    1787           8 :   parameter[HIS_SC3].push_back(0.902379);
    1788           8 :   parameter[HIS_SC3].push_back(-0.139957);
    1789             : 
    1790           8 :   parameter[ILE_BB].push_back(10.699);
    1791           8 :   parameter[ILE_BB].push_back(-0.0188962);
    1792           8 :   parameter[ILE_BB].push_back(1.217);
    1793           8 :   parameter[ILE_BB].push_back(0.242481);
    1794           8 :   parameter[ILE_BB].push_back(-3.13898);
    1795           8 :   parameter[ILE_BB].push_back(2.07916);
    1796           8 :   parameter[ILE_BB].push_back(-0.392574);
    1797             : 
    1798           8 :   parameter[ILE_SC1].push_back(-4.448);
    1799           8 :   parameter[ILE_SC1].push_back(1.20996);
    1800           8 :   parameter[ILE_SC1].push_back(11.5141);
    1801           8 :   parameter[ILE_SC1].push_back(6.98895);
    1802           8 :   parameter[ILE_SC1].push_back(-19.1948);
    1803           8 :   parameter[ILE_SC1].push_back(9.89207);
    1804           8 :   parameter[ILE_SC1].push_back(-1.60877);
    1805             : 
    1806           8 :   parameter[LEU_BB].push_back(10.692);
    1807           8 :   parameter[LEU_BB].push_back(-0.0414917);
    1808           8 :   parameter[LEU_BB].push_back(1.1077);
    1809           8 :   parameter[LEU_BB].push_back(-0.288062);
    1810           8 :   parameter[LEU_BB].push_back(-2.17187);
    1811           8 :   parameter[LEU_BB].push_back(1.59879);
    1812           8 :   parameter[LEU_BB].push_back(-0.318545);
    1813             : 
    1814           8 :   parameter[LEU_SC1].push_back(-4.448);
    1815           8 :   parameter[LEU_SC1].push_back(2.1063);
    1816           8 :   parameter[LEU_SC1].push_back(6.72381);
    1817           8 :   parameter[LEU_SC1].push_back(14.6954);
    1818           8 :   parameter[LEU_SC1].push_back(-23.7197);
    1819           8 :   parameter[LEU_SC1].push_back(10.7247);
    1820           8 :   parameter[LEU_SC1].push_back(-1.59146);
    1821             : 
    1822           8 :   parameter[LYS_BB].push_back(10.706);
    1823           8 :   parameter[LYS_BB].push_back(-0.0468629);
    1824           8 :   parameter[LYS_BB].push_back(1.09477);
    1825           8 :   parameter[LYS_BB].push_back(-0.432751);
    1826           8 :   parameter[LYS_BB].push_back(-1.94335);
    1827           8 :   parameter[LYS_BB].push_back(1.49109);
    1828           8 :   parameter[LYS_BB].push_back(-0.302589);
    1829             : 
    1830           8 :   parameter[LYS_SC1].push_back(-2.796);
    1831           8 :   parameter[LYS_SC1].push_back(0.508044);
    1832           8 :   parameter[LYS_SC1].push_back(7.91436);
    1833           8 :   parameter[LYS_SC1].push_back(4.54097);
    1834           8 :   parameter[LYS_SC1].push_back(-10.8051);
    1835           8 :   parameter[LYS_SC1].push_back(4.96204);
    1836           8 :   parameter[LYS_SC1].push_back(-0.724414);
    1837             : 
    1838           8 :   parameter[LYS_SC2].push_back(3.070);
    1839           8 :   parameter[LYS_SC2].push_back(-0.0101448);
    1840           8 :   parameter[LYS_SC2].push_back(4.67994);
    1841           8 :   parameter[LYS_SC2].push_back(-0.792529);
    1842           8 :   parameter[LYS_SC2].push_back(-2.09142);
    1843           8 :   parameter[LYS_SC2].push_back(1.02933);
    1844           8 :   parameter[LYS_SC2].push_back(-0.137787);
    1845             : 
    1846           8 :   parameter[MET_BB].push_back(10.671);
    1847           8 :   parameter[MET_BB].push_back(-0.0433724);
    1848           8 :   parameter[MET_BB].push_back(1.13784);
    1849           8 :   parameter[MET_BB].push_back(-0.40768);
    1850           8 :   parameter[MET_BB].push_back(-2.00555);
    1851           8 :   parameter[MET_BB].push_back(1.51673);
    1852           8 :   parameter[MET_BB].push_back(-0.305547);
    1853             : 
    1854           8 :   parameter[MET_SC1].push_back(5.85);
    1855           8 :   parameter[MET_SC1].push_back(-0.0485798);
    1856           8 :   parameter[MET_SC1].push_back(17.0391);
    1857           8 :   parameter[MET_SC1].push_back(-3.65327);
    1858           8 :   parameter[MET_SC1].push_back(-13.174);
    1859           8 :   parameter[MET_SC1].push_back(8.68286);
    1860           8 :   parameter[MET_SC1].push_back(-1.56095);
    1861             : 
    1862           8 :   parameter[PHE_BB].push_back(10.741);
    1863           8 :   parameter[PHE_BB].push_back(-0.0317275);
    1864           8 :   parameter[PHE_BB].push_back(1.15599);
    1865           8 :   parameter[PHE_BB].push_back(0.0276187);
    1866           8 :   parameter[PHE_BB].push_back(-2.74757);
    1867           8 :   parameter[PHE_BB].push_back(1.88783);
    1868           8 :   parameter[PHE_BB].push_back(-0.363525);
    1869             : 
    1870           8 :   parameter[PHE_SC1].push_back(-0.636);
    1871           8 :   parameter[PHE_SC1].push_back(0.527882);
    1872           8 :   parameter[PHE_SC1].push_back(6.77612);
    1873           8 :   parameter[PHE_SC1].push_back(3.18508);
    1874           8 :   parameter[PHE_SC1].push_back(-8.92826);
    1875           8 :   parameter[PHE_SC1].push_back(4.29752);
    1876           8 :   parameter[PHE_SC1].push_back(-0.65187);
    1877             : 
    1878           8 :   parameter[PHE_SC2].push_back(-0.424);
    1879           8 :   parameter[PHE_SC2].push_back(0.389174);
    1880           8 :   parameter[PHE_SC2].push_back(4.11761);
    1881           8 :   parameter[PHE_SC2].push_back(2.29527);
    1882           8 :   parameter[PHE_SC2].push_back(-4.7652);
    1883           8 :   parameter[PHE_SC2].push_back(1.97023);
    1884           8 :   parameter[PHE_SC2].push_back(-0.262318);
    1885             : 
    1886           8 :   parameter[PHE_SC3].push_back(-0.424);
    1887           8 :   parameter[PHE_SC3].push_back(0.38927);
    1888           8 :   parameter[PHE_SC3].push_back(4.11708);
    1889           8 :   parameter[PHE_SC3].push_back(2.29623);
    1890           8 :   parameter[PHE_SC3].push_back(-4.76592);
    1891           8 :   parameter[PHE_SC3].push_back(1.97055);
    1892           8 :   parameter[PHE_SC3].push_back(-0.262381);
    1893             : 
    1894           8 :   parameter[PRO_BB].push_back(11.434);
    1895           8 :   parameter[PRO_BB].push_back(-0.033323);
    1896           8 :   parameter[PRO_BB].push_back(0.472014);
    1897           8 :   parameter[PRO_BB].push_back(-0.290854);
    1898           8 :   parameter[PRO_BB].push_back(-1.81409);
    1899           8 :   parameter[PRO_BB].push_back(1.39751);
    1900           8 :   parameter[PRO_BB].push_back(-0.280407);
    1901             : 
    1902           8 :   parameter[PRO_SC1].push_back(-2.796);
    1903           8 :   parameter[PRO_SC1].push_back(0.95668);
    1904           8 :   parameter[PRO_SC1].push_back(6.84197);
    1905           8 :   parameter[PRO_SC1].push_back(6.43774);
    1906           8 :   parameter[PRO_SC1].push_back(-12.5068);
    1907           8 :   parameter[PRO_SC1].push_back(5.64597);
    1908           8 :   parameter[PRO_SC1].push_back(-0.825206);
    1909             : 
    1910           8 :   parameter[SER_BB].push_back(10.699);
    1911           8 :   parameter[SER_BB].push_back(-0.0325828);
    1912           8 :   parameter[SER_BB].push_back(1.20329);
    1913           8 :   parameter[SER_BB].push_back(-0.0674351);
    1914           8 :   parameter[SER_BB].push_back(-2.60749);
    1915           8 :   parameter[SER_BB].push_back(1.80318);
    1916           8 :   parameter[SER_BB].push_back(-0.346803);
    1917             : 
    1918           8 :   parameter[SER_SC1].push_back(3.298);
    1919           8 :   parameter[SER_SC1].push_back(-0.0366801);
    1920           8 :   parameter[SER_SC1].push_back(5.11077);
    1921           8 :   parameter[SER_SC1].push_back(-1.46774);
    1922           8 :   parameter[SER_SC1].push_back(-1.48421);
    1923           8 :   parameter[SER_SC1].push_back(0.800326);
    1924           8 :   parameter[SER_SC1].push_back(-0.108314);
    1925             : 
    1926           8 :   parameter[THR_BB].push_back(10.697);
    1927           8 :   parameter[THR_BB].push_back(-0.0242955);
    1928           8 :   parameter[THR_BB].push_back(1.24671);
    1929           8 :   parameter[THR_BB].push_back(0.146423);
    1930           8 :   parameter[THR_BB].push_back(-2.97429);
    1931           8 :   parameter[THR_BB].push_back(1.97513);
    1932           8 :   parameter[THR_BB].push_back(-0.371479);
    1933             : 
    1934           8 :   parameter[THR_SC1].push_back(2.366);
    1935           8 :   parameter[THR_SC1].push_back(0.0297604);
    1936           8 :   parameter[THR_SC1].push_back(11.9216);
    1937           8 :   parameter[THR_SC1].push_back(-9.32503);
    1938           8 :   parameter[THR_SC1].push_back(1.9396);
    1939           8 :   parameter[THR_SC1].push_back(0.0804861);
    1940           8 :   parameter[THR_SC1].push_back(-0.0302721);
    1941             : 
    1942           8 :   parameter[TRP_BB].push_back(10.689);
    1943           8 :   parameter[TRP_BB].push_back(-0.0265879);
    1944           8 :   parameter[TRP_BB].push_back(1.17819);
    1945           8 :   parameter[TRP_BB].push_back(0.0386457);
    1946           8 :   parameter[TRP_BB].push_back(-2.75634);
    1947           8 :   parameter[TRP_BB].push_back(1.88065);
    1948           8 :   parameter[TRP_BB].push_back(-0.360217);
    1949             : 
    1950           8 :   parameter[TRP_SC1].push_back(0.084);
    1951           8 :   parameter[TRP_SC1].push_back(0.752407);
    1952           8 :   parameter[TRP_SC1].push_back(5.3802);
    1953           8 :   parameter[TRP_SC1].push_back(4.09281);
    1954           8 :   parameter[TRP_SC1].push_back(-9.28029);
    1955           8 :   parameter[TRP_SC1].push_back(4.45923);
    1956           8 :   parameter[TRP_SC1].push_back(-0.689008);
    1957             : 
    1958           8 :   parameter[TRP_SC2].push_back(5.739);
    1959           8 :   parameter[TRP_SC2].push_back(0.0298492);
    1960           8 :   parameter[TRP_SC2].push_back(4.60446);
    1961           8 :   parameter[TRP_SC2].push_back(1.34463);
    1962           8 :   parameter[TRP_SC2].push_back(-5.69968);
    1963           8 :   parameter[TRP_SC2].push_back(2.84924);
    1964           8 :   parameter[TRP_SC2].push_back(-0.433781);
    1965             : 
    1966           8 :   parameter[TRP_SC3].push_back(-0.424);
    1967           8 :   parameter[TRP_SC3].push_back(0.388576);
    1968           8 :   parameter[TRP_SC3].push_back(4.11859);
    1969           8 :   parameter[TRP_SC3].push_back(2.29485);
    1970           8 :   parameter[TRP_SC3].push_back(-4.76255);
    1971           8 :   parameter[TRP_SC3].push_back(1.96849);
    1972           8 :   parameter[TRP_SC3].push_back(-0.262015);
    1973             : 
    1974           8 :   parameter[TRP_SC4].push_back(-0.424);
    1975           8 :   parameter[TRP_SC4].push_back(0.387685);
    1976           8 :   parameter[TRP_SC4].push_back(4.12153);
    1977           8 :   parameter[TRP_SC4].push_back(2.29144);
    1978           8 :   parameter[TRP_SC4].push_back(-4.7589);
    1979           8 :   parameter[TRP_SC4].push_back(1.96686);
    1980           8 :   parameter[TRP_SC4].push_back(-0.261786);
    1981             : 
    1982           8 :   parameter[TYR_BB].push_back(10.689);
    1983           8 :   parameter[TYR_BB].push_back(-0.0193526);
    1984           8 :   parameter[TYR_BB].push_back(1.18241);
    1985           8 :   parameter[TYR_BB].push_back(0.207318);
    1986           8 :   parameter[TYR_BB].push_back(-3.0041);
    1987           8 :   parameter[TYR_BB].push_back(1.99335);
    1988           8 :   parameter[TYR_BB].push_back(-0.376482);
    1989             : 
    1990           8 :   parameter[TYR_SC1].push_back(-0.636);
    1991           8 :   parameter[TYR_SC1].push_back(0.528902);
    1992           8 :   parameter[TYR_SC1].push_back(6.78168);
    1993           8 :   parameter[TYR_SC1].push_back(3.17769);
    1994           8 :   parameter[TYR_SC1].push_back(-8.93667);
    1995           8 :   parameter[TYR_SC1].push_back(4.30692);
    1996           8 :   parameter[TYR_SC1].push_back(-0.653993);
    1997             : 
    1998           8 :   parameter[TYR_SC2].push_back(-0.424);
    1999           8 :   parameter[TYR_SC2].push_back(0.388811);
    2000           8 :   parameter[TYR_SC2].push_back(4.11851);
    2001           8 :   parameter[TYR_SC2].push_back(2.29545);
    2002           8 :   parameter[TYR_SC2].push_back(-4.7668);
    2003           8 :   parameter[TYR_SC2].push_back(1.97131);
    2004           8 :   parameter[TYR_SC2].push_back(-0.262534);
    2005             : 
    2006           8 :   parameter[TYR_SC3].push_back(4.526);
    2007           8 :   parameter[TYR_SC3].push_back(-0.00381305);
    2008           8 :   parameter[TYR_SC3].push_back(5.8567);
    2009           8 :   parameter[TYR_SC3].push_back(-0.214086);
    2010           8 :   parameter[TYR_SC3].push_back(-4.63649);
    2011           8 :   parameter[TYR_SC3].push_back(2.52869);
    2012           8 :   parameter[TYR_SC3].push_back(-0.39894);
    2013             : 
    2014           8 :   parameter[VAL_BB].push_back(10.691);
    2015           8 :   parameter[VAL_BB].push_back(-0.0162929);
    2016           8 :   parameter[VAL_BB].push_back(1.24446);
    2017           8 :   parameter[VAL_BB].push_back(0.307914);
    2018           8 :   parameter[VAL_BB].push_back(-3.27446);
    2019           8 :   parameter[VAL_BB].push_back(2.14788);
    2020           8 :   parameter[VAL_BB].push_back(-0.403259);
    2021             : 
    2022           8 :   parameter[VAL_SC1].push_back(-3.516);
    2023           8 :   parameter[VAL_SC1].push_back(1.62307);
    2024           8 :   parameter[VAL_SC1].push_back(5.43064);
    2025           8 :   parameter[VAL_SC1].push_back(9.28809);
    2026           8 :   parameter[VAL_SC1].push_back(-14.9927);
    2027           8 :   parameter[VAL_SC1].push_back(6.6133);
    2028           8 :   parameter[VAL_SC1].push_back(-0.964977);
    2029             : 
    2030           8 :   parameter[A_BB1].push_back(32.88500000);
    2031           8 :   parameter[A_BB1].push_back(0.08339900);
    2032           8 :   parameter[A_BB1].push_back(-7.36054400);
    2033           8 :   parameter[A_BB1].push_back(2.19220300);
    2034           8 :   parameter[A_BB1].push_back(-3.56523400);
    2035           8 :   parameter[A_BB1].push_back(2.33326900);
    2036           8 :   parameter[A_BB1].push_back(-0.39785500);
    2037             : 
    2038           8 :   parameter[A_BB2].push_back(3.80600000);
    2039           8 :   parameter[A_BB2].push_back(-0.10727600);
    2040           8 :   parameter[A_BB2].push_back(9.58854100);
    2041           8 :   parameter[A_BB2].push_back(-6.23740500);
    2042           8 :   parameter[A_BB2].push_back(-0.48267300);
    2043           8 :   parameter[A_BB2].push_back(1.14119500);
    2044           8 :   parameter[A_BB2].push_back(-0.21385600);
    2045             : 
    2046           8 :   parameter[A_BB3].push_back(3.59400000);
    2047           8 :   parameter[A_BB3].push_back(0.04537300);
    2048           8 :   parameter[A_BB3].push_back(9.59178900);
    2049           8 :   parameter[A_BB3].push_back(-1.29202200);
    2050           8 :   parameter[A_BB3].push_back(-7.10851000);
    2051           8 :   parameter[A_BB3].push_back(4.05571200);
    2052           8 :   parameter[A_BB3].push_back(-0.63372500);
    2053             : 
    2054           8 :   parameter[A_SC1].push_back(6.67100000);
    2055           8 :   parameter[A_SC1].push_back(-0.00855300);
    2056           8 :   parameter[A_SC1].push_back(1.63222400);
    2057           8 :   parameter[A_SC1].push_back(-0.06466200);
    2058           8 :   parameter[A_SC1].push_back(-1.48694200);
    2059           8 :   parameter[A_SC1].push_back(0.78544600);
    2060           8 :   parameter[A_SC1].push_back(-0.12083500);
    2061             : 
    2062           8 :   parameter[A_SC2].push_back(5.95100000);
    2063           8 :   parameter[A_SC2].push_back(-0.02606600);
    2064           8 :   parameter[A_SC2].push_back(2.54399900);
    2065           8 :   parameter[A_SC2].push_back(-0.48436900);
    2066           8 :   parameter[A_SC2].push_back(-1.55357400);
    2067           8 :   parameter[A_SC2].push_back(0.86466900);
    2068           8 :   parameter[A_SC2].push_back(-0.13509000);
    2069             : 
    2070           8 :   parameter[A_SC3].push_back(11.39400000);
    2071           8 :   parameter[A_SC3].push_back(0.00871300);
    2072           8 :   parameter[A_SC3].push_back(-0.23891300);
    2073           8 :   parameter[A_SC3].push_back(0.48919400);
    2074           8 :   parameter[A_SC3].push_back(-1.75289400);
    2075           8 :   parameter[A_SC3].push_back(0.99267500);
    2076           8 :   parameter[A_SC3].push_back(-0.16291300);
    2077             : 
    2078           8 :   parameter[A_SC4].push_back(6.45900000);
    2079           8 :   parameter[A_SC4].push_back(0.01990600);
    2080           8 :   parameter[A_SC4].push_back(4.17970400);
    2081           8 :   parameter[A_SC4].push_back(0.97629900);
    2082           8 :   parameter[A_SC4].push_back(-5.03297800);
    2083           8 :   parameter[A_SC4].push_back(2.55576700);
    2084           8 :   parameter[A_SC4].push_back(-0.39150500);
    2085             : 
    2086           8 :   parameter[A_3TE].push_back(4.23000000);
    2087           8 :   parameter[A_3TE].push_back(0.00064800);
    2088           8 :   parameter[A_3TE].push_back(0.92124600);
    2089           8 :   parameter[A_3TE].push_back(0.08064300);
    2090           8 :   parameter[A_3TE].push_back(-0.39054400);
    2091           8 :   parameter[A_3TE].push_back(0.12429100);
    2092           8 :   parameter[A_3TE].push_back(-0.01122700);
    2093             : 
    2094           8 :   parameter[A_5TE].push_back(4.23000000);
    2095           8 :   parameter[A_5TE].push_back(0.00039300);
    2096           8 :   parameter[A_5TE].push_back(0.92305100);
    2097           8 :   parameter[A_5TE].push_back(0.07747500);
    2098           8 :   parameter[A_5TE].push_back(-0.38792100);
    2099           8 :   parameter[A_5TE].push_back(0.12323800);
    2100           8 :   parameter[A_5TE].push_back(-0.01106600);
    2101             : 
    2102           8 :   parameter[A_TE3].push_back(7.82400000);
    2103           8 :   parameter[A_TE3].push_back(-0.04881000);
    2104           8 :   parameter[A_TE3].push_back(8.21557900);
    2105           8 :   parameter[A_TE3].push_back(-0.89491400);
    2106           8 :   parameter[A_TE3].push_back(-9.54293700);
    2107           8 :   parameter[A_TE3].push_back(6.33122200);
    2108           8 :   parameter[A_TE3].push_back(-1.16672900);
    2109             : 
    2110           8 :   parameter[A_TE5].push_back(8.03600000);
    2111           8 :   parameter[A_TE5].push_back(0.01641200);
    2112           8 :   parameter[A_TE5].push_back(5.14902200);
    2113           8 :   parameter[A_TE5].push_back(0.83419700);
    2114           8 :   parameter[A_TE5].push_back(-7.59068300);
    2115           8 :   parameter[A_TE5].push_back(4.52063200);
    2116           8 :   parameter[A_TE5].push_back(-0.78260800);
    2117             : 
    2118           8 :   parameter[C_BB1].push_back(32.88500000);
    2119           8 :   parameter[C_BB1].push_back(0.08311100);
    2120           8 :   parameter[C_BB1].push_back(-7.35432100);
    2121           8 :   parameter[C_BB1].push_back(2.18610000);
    2122           8 :   parameter[C_BB1].push_back(-3.55788300);
    2123           8 :   parameter[C_BB1].push_back(2.32918700);
    2124           8 :   parameter[C_BB1].push_back(-0.39720000);
    2125             : 
    2126           8 :   parameter[C_BB2].push_back(3.80600000);
    2127           8 :   parameter[C_BB2].push_back(-0.10808100);
    2128           8 :   parameter[C_BB2].push_back(9.61612600);
    2129           8 :   parameter[C_BB2].push_back(-6.28595400);
    2130           8 :   parameter[C_BB2].push_back(-0.45187000);
    2131           8 :   parameter[C_BB2].push_back(1.13326000);
    2132           8 :   parameter[C_BB2].push_back(-0.21320300);
    2133             : 
    2134           8 :   parameter[C_BB3].push_back(3.59400000);
    2135           8 :   parameter[C_BB3].push_back(0.04484200);
    2136           8 :   parameter[C_BB3].push_back(9.61919800);
    2137           8 :   parameter[C_BB3].push_back(-1.33582800);
    2138           8 :   parameter[C_BB3].push_back(-7.07200400);
    2139           8 :   parameter[C_BB3].push_back(4.03952900);
    2140           8 :   parameter[C_BB3].push_back(-0.63098200);
    2141             : 
    2142           8 :   parameter[C_SC1].push_back(5.95100000);
    2143           8 :   parameter[C_SC1].push_back(-0.02911300);
    2144           8 :   parameter[C_SC1].push_back(2.59700400);
    2145           8 :   parameter[C_SC1].push_back(-0.55507700);
    2146           8 :   parameter[C_SC1].push_back(-1.56344600);
    2147           8 :   parameter[C_SC1].push_back(0.88956200);
    2148           8 :   parameter[C_SC1].push_back(-0.14061300);
    2149             : 
    2150           8 :   parameter[C_SC2].push_back(11.62100000);
    2151           8 :   parameter[C_SC2].push_back(0.01366100);
    2152           8 :   parameter[C_SC2].push_back(-0.25959200);
    2153           8 :   parameter[C_SC2].push_back(0.48918300);
    2154           8 :   parameter[C_SC2].push_back(-1.52550500);
    2155           8 :   parameter[C_SC2].push_back(0.83644100);
    2156           8 :   parameter[C_SC2].push_back(-0.13407300);
    2157             : 
    2158           8 :   parameter[C_SC3].push_back(5.01900000);
    2159           8 :   parameter[C_SC3].push_back(-0.03276100);
    2160           8 :   parameter[C_SC3].push_back(5.53776900);
    2161           8 :   parameter[C_SC3].push_back(-0.95105000);
    2162           8 :   parameter[C_SC3].push_back(-3.71130800);
    2163           8 :   parameter[C_SC3].push_back(2.16146000);
    2164           8 :   parameter[C_SC3].push_back(-0.34918600);
    2165             : 
    2166           8 :   parameter[C_3TE].push_back(4.23000000);
    2167           8 :   parameter[C_3TE].push_back(0.00057300);
    2168           8 :   parameter[C_3TE].push_back(0.92174800);
    2169           8 :   parameter[C_3TE].push_back(0.07964500);
    2170           8 :   parameter[C_3TE].push_back(-0.38965700);
    2171           8 :   parameter[C_3TE].push_back(0.12392500);
    2172           8 :   parameter[C_3TE].push_back(-0.01117000);
    2173             : 
    2174           8 :   parameter[C_5TE].push_back(4.23000000);
    2175           8 :   parameter[C_5TE].push_back(0.00071000);
    2176           8 :   parameter[C_5TE].push_back(0.92082800);
    2177           8 :   parameter[C_5TE].push_back(0.08150600);
    2178           8 :   parameter[C_5TE].push_back(-0.39127000);
    2179           8 :   parameter[C_5TE].push_back(0.12455900);
    2180           8 :   parameter[C_5TE].push_back(-0.01126300);
    2181             : 
    2182           8 :   parameter[C_TE3].push_back(7.82400000);
    2183           8 :   parameter[C_TE3].push_back(-0.05848300);
    2184           8 :   parameter[C_TE3].push_back(8.29319900);
    2185           8 :   parameter[C_TE3].push_back(-1.12563800);
    2186           8 :   parameter[C_TE3].push_back(-9.42197600);
    2187           8 :   parameter[C_TE3].push_back(6.35441700);
    2188           8 :   parameter[C_TE3].push_back(-1.18356900);
    2189             : 
    2190           8 :   parameter[C_TE5].push_back(8.03600000);
    2191           8 :   parameter[C_TE5].push_back(0.00493500);
    2192           8 :   parameter[C_TE5].push_back(4.92622000);
    2193           8 :   parameter[C_TE5].push_back(0.64810700);
    2194           8 :   parameter[C_TE5].push_back(-7.05100000);
    2195           8 :   parameter[C_TE5].push_back(4.26064400);
    2196           8 :   parameter[C_TE5].push_back(-0.74819100);
    2197             : 
    2198           8 :   parameter[G_BB1].push_back(32.88500000);
    2199           8 :   parameter[G_BB1].push_back(0.08325400);
    2200           8 :   parameter[G_BB1].push_back(-7.35736000);
    2201           8 :   parameter[G_BB1].push_back(2.18914800);
    2202           8 :   parameter[G_BB1].push_back(-3.56154800);
    2203           8 :   parameter[G_BB1].push_back(2.33120600);
    2204           8 :   parameter[G_BB1].push_back(-0.39752300);
    2205             : 
    2206           8 :   parameter[G_BB2].push_back(3.80600000);
    2207           8 :   parameter[G_BB2].push_back(-0.10788300);
    2208           8 :   parameter[G_BB2].push_back(9.60930800);
    2209           8 :   parameter[G_BB2].push_back(-6.27402500);
    2210           8 :   parameter[G_BB2].push_back(-0.46192700);
    2211           8 :   parameter[G_BB2].push_back(1.13737000);
    2212           8 :   parameter[G_BB2].push_back(-0.21383100);
    2213             : 
    2214           8 :   parameter[G_BB3].push_back(3.59400000);
    2215           8 :   parameter[G_BB3].push_back(0.04514500);
    2216           8 :   parameter[G_BB3].push_back(9.61234700);
    2217           8 :   parameter[G_BB3].push_back(-1.31542100);
    2218           8 :   parameter[G_BB3].push_back(-7.09150500);
    2219           8 :   parameter[G_BB3].push_back(4.04706200);
    2220           8 :   parameter[G_BB3].push_back(-0.63201000);
    2221             : 
    2222           8 :   parameter[G_SC1].push_back(6.67100000);
    2223           8 :   parameter[G_SC1].push_back(-0.00863200);
    2224           8 :   parameter[G_SC1].push_back(1.63252300);
    2225           8 :   parameter[G_SC1].push_back(-0.06567200);
    2226           8 :   parameter[G_SC1].push_back(-1.48680500);
    2227           8 :   parameter[G_SC1].push_back(0.78565600);
    2228           8 :   parameter[G_SC1].push_back(-0.12088900);
    2229             : 
    2230           8 :   parameter[G_SC2].push_back(11.39400000);
    2231           8 :   parameter[G_SC2].push_back(0.00912200);
    2232           8 :   parameter[G_SC2].push_back(-0.22869000);
    2233           8 :   parameter[G_SC2].push_back(0.49616400);
    2234           8 :   parameter[G_SC2].push_back(-1.75039000);
    2235           8 :   parameter[G_SC2].push_back(0.98649200);
    2236           8 :   parameter[G_SC2].push_back(-0.16141600);
    2237             : 
    2238           8 :   parameter[G_SC3].push_back(10.90100000);
    2239           8 :   parameter[G_SC3].push_back(0.02208700);
    2240           8 :   parameter[G_SC3].push_back(0.17032800);
    2241           8 :   parameter[G_SC3].push_back(0.73280800);
    2242           8 :   parameter[G_SC3].push_back(-1.95292000);
    2243           8 :   parameter[G_SC3].push_back(0.98357600);
    2244           8 :   parameter[G_SC3].push_back(-0.14790900);
    2245             : 
    2246           8 :   parameter[G_SC4].push_back(6.45900000);
    2247           8 :   parameter[G_SC4].push_back(0.02023700);
    2248           8 :   parameter[G_SC4].push_back(4.17655400);
    2249           8 :   parameter[G_SC4].push_back(0.98731800);
    2250           8 :   parameter[G_SC4].push_back(-5.04352800);
    2251           8 :   parameter[G_SC4].push_back(2.56059400);
    2252           8 :   parameter[G_SC4].push_back(-0.39234300);
    2253             : 
    2254           8 :   parameter[G_3TE].push_back(4.23000000);
    2255           8 :   parameter[G_3TE].push_back(0.00066300);
    2256           8 :   parameter[G_3TE].push_back(0.92118800);
    2257           8 :   parameter[G_3TE].push_back(0.08062700);
    2258           8 :   parameter[G_3TE].push_back(-0.39041600);
    2259           8 :   parameter[G_3TE].push_back(0.12419400);
    2260           8 :   parameter[G_3TE].push_back(-0.01120500);
    2261             : 
    2262           8 :   parameter[G_5TE].push_back(4.23000000);
    2263           8 :   parameter[G_5TE].push_back(0.00062800);
    2264           8 :   parameter[G_5TE].push_back(0.92133500);
    2265           8 :   parameter[G_5TE].push_back(0.08029900);
    2266           8 :   parameter[G_5TE].push_back(-0.39015300);
    2267           8 :   parameter[G_5TE].push_back(0.12411600);
    2268           8 :   parameter[G_5TE].push_back(-0.01119900);
    2269             : 
    2270           8 :   parameter[G_TE3].push_back(7.82400000);
    2271           8 :   parameter[G_TE3].push_back(-0.05177400);
    2272           8 :   parameter[G_TE3].push_back(8.34606700);
    2273           8 :   parameter[G_TE3].push_back(-1.02936300);
    2274           8 :   parameter[G_TE3].push_back(-9.55211900);
    2275           8 :   parameter[G_TE3].push_back(6.37776600);
    2276           8 :   parameter[G_TE3].push_back(-1.17898000);
    2277             : 
    2278           8 :   parameter[G_TE5].push_back(8.03600000);
    2279           8 :   parameter[G_TE5].push_back(0.00525100);
    2280           8 :   parameter[G_TE5].push_back(4.71070600);
    2281           8 :   parameter[G_TE5].push_back(0.66746900);
    2282           8 :   parameter[G_TE5].push_back(-6.72538700);
    2283           8 :   parameter[G_TE5].push_back(4.03644100);
    2284           8 :   parameter[G_TE5].push_back(-0.70605700);
    2285             : 
    2286           8 :   parameter[U_BB1].push_back(32.88500000);
    2287           8 :   parameter[U_BB1].push_back(0.08321400);
    2288           8 :   parameter[U_BB1].push_back(-7.35634900);
    2289           8 :   parameter[U_BB1].push_back(2.18826800);
    2290           8 :   parameter[U_BB1].push_back(-3.56047400);
    2291           8 :   parameter[U_BB1].push_back(2.33064700);
    2292           8 :   parameter[U_BB1].push_back(-0.39744000);
    2293             : 
    2294           8 :   parameter[U_BB2].push_back(3.80600000);
    2295           8 :   parameter[U_BB2].push_back(-0.10773100);
    2296           8 :   parameter[U_BB2].push_back(9.60099900);
    2297           8 :   parameter[U_BB2].push_back(-6.26131900);
    2298           8 :   parameter[U_BB2].push_back(-0.46668300);
    2299           8 :   parameter[U_BB2].push_back(1.13698100);
    2300           8 :   parameter[U_BB2].push_back(-0.21351600);
    2301             : 
    2302           8 :   parameter[U_BB3].push_back(3.59400000);
    2303           8 :   parameter[U_BB3].push_back(0.04544300);
    2304           8 :   parameter[U_BB3].push_back(9.59625900);
    2305           8 :   parameter[U_BB3].push_back(-1.29222200);
    2306           8 :   parameter[U_BB3].push_back(-7.11143200);
    2307           8 :   parameter[U_BB3].push_back(4.05687700);
    2308           8 :   parameter[U_BB3].push_back(-0.63382800);
    2309             : 
    2310           8 :   parameter[U_SC1].push_back(5.95100000);
    2311           8 :   parameter[U_SC1].push_back(-0.02924500);
    2312           8 :   parameter[U_SC1].push_back(2.59668700);
    2313           8 :   parameter[U_SC1].push_back(-0.56118700);
    2314           8 :   parameter[U_SC1].push_back(-1.56477100);
    2315           8 :   parameter[U_SC1].push_back(0.89265100);
    2316           8 :   parameter[U_SC1].push_back(-0.14130800);
    2317             : 
    2318           8 :   parameter[U_SC2].push_back(10.90100000);
    2319           8 :   parameter[U_SC2].push_back(0.02178900);
    2320           8 :   parameter[U_SC2].push_back(0.18839000);
    2321           8 :   parameter[U_SC2].push_back(0.72223100);
    2322           8 :   parameter[U_SC2].push_back(-1.92581600);
    2323           8 :   parameter[U_SC2].push_back(0.96654300);
    2324           8 :   parameter[U_SC2].push_back(-0.14501300);
    2325             : 
    2326           8 :   parameter[U_SC3].push_back(5.24600000);
    2327           8 :   parameter[U_SC3].push_back(-0.04586500);
    2328           8 :   parameter[U_SC3].push_back(5.89978100);
    2329           8 :   parameter[U_SC3].push_back(-1.50664700);
    2330           8 :   parameter[U_SC3].push_back(-3.17054400);
    2331           8 :   parameter[U_SC3].push_back(1.93717100);
    2332           8 :   parameter[U_SC3].push_back(-0.31701000);
    2333             : 
    2334           8 :   parameter[U_3TE].push_back(4.23000000);
    2335           8 :   parameter[U_3TE].push_back(0.00067500);
    2336           8 :   parameter[U_3TE].push_back(0.92102300);
    2337           8 :   parameter[U_3TE].push_back(0.08100800);
    2338           8 :   parameter[U_3TE].push_back(-0.39084300);
    2339           8 :   parameter[U_3TE].push_back(0.12441900);
    2340           8 :   parameter[U_3TE].push_back(-0.01124900);
    2341             : 
    2342           8 :   parameter[U_5TE].push_back(4.23000000);
    2343           8 :   parameter[U_5TE].push_back(0.00059000);
    2344           8 :   parameter[U_5TE].push_back(0.92154600);
    2345           8 :   parameter[U_5TE].push_back(0.07968200);
    2346           8 :   parameter[U_5TE].push_back(-0.38950100);
    2347           8 :   parameter[U_5TE].push_back(0.12382500);
    2348           8 :   parameter[U_5TE].push_back(-0.01115100);
    2349             : 
    2350           8 :   parameter[U_TE3].push_back(7.82400000);
    2351           8 :   parameter[U_TE3].push_back(-0.02968100);
    2352           8 :   parameter[U_TE3].push_back(7.93783200);
    2353           8 :   parameter[U_TE3].push_back(-0.33078100);
    2354           8 :   parameter[U_TE3].push_back(-10.14120200);
    2355           8 :   parameter[U_TE3].push_back(6.63334700);
    2356           8 :   parameter[U_TE3].push_back(-1.22111200);
    2357             : 
    2358           8 :   parameter[U_TE5].push_back(8.03600000);
    2359           8 :   parameter[U_TE5].push_back(-0.00909700);
    2360           8 :   parameter[U_TE5].push_back(4.33193500);
    2361           8 :   parameter[U_TE5].push_back(0.43416500);
    2362           8 :   parameter[U_TE5].push_back(-5.80831400);
    2363           8 :   parameter[U_TE5].push_back(3.52438800);
    2364           8 :   parameter[U_TE5].push_back(-0.62382400);
    2365             : 
    2366           8 :   parameter[DA_BB1].push_back(32.88500000);
    2367           8 :   parameter[DA_BB1].push_back(0.08179900);
    2368           8 :   parameter[DA_BB1].push_back(-7.31735900);
    2369           8 :   parameter[DA_BB1].push_back(2.15614500);
    2370           8 :   parameter[DA_BB1].push_back(-3.52263200);
    2371           8 :   parameter[DA_BB1].push_back(2.30604700);
    2372           8 :   parameter[DA_BB1].push_back(-0.39270100);
    2373             : 
    2374           8 :   parameter[DA_BB2].push_back(3.80600000);
    2375           8 :   parameter[DA_BB2].push_back(-0.10597700);
    2376           8 :   parameter[DA_BB2].push_back(9.52537500);
    2377           8 :   parameter[DA_BB2].push_back(-6.12991000);
    2378           8 :   parameter[DA_BB2].push_back(-0.54092600);
    2379           8 :   parameter[DA_BB2].push_back(1.15429100);
    2380           8 :   parameter[DA_BB2].push_back(-0.21503500);
    2381             : 
    2382           8 :   parameter[DA_BB3].push_back(-1.35600000);
    2383           8 :   parameter[DA_BB3].push_back(0.58928300);
    2384           8 :   parameter[DA_BB3].push_back(6.71894100);
    2385           8 :   parameter[DA_BB3].push_back(4.14050900);
    2386           8 :   parameter[DA_BB3].push_back(-9.65859900);
    2387           8 :   parameter[DA_BB3].push_back(4.43185000);
    2388           8 :   parameter[DA_BB3].push_back(-0.64657300);
    2389             : 
    2390           8 :   parameter[DA_SC1].push_back(6.67100000);
    2391           8 :   parameter[DA_SC1].push_back(-0.00871400);
    2392           8 :   parameter[DA_SC1].push_back(1.63289100);
    2393           8 :   parameter[DA_SC1].push_back(-0.06637700);
    2394           8 :   parameter[DA_SC1].push_back(-1.48632900);
    2395           8 :   parameter[DA_SC1].push_back(0.78551800);
    2396           8 :   parameter[DA_SC1].push_back(-0.12087300);
    2397             : 
    2398           8 :   parameter[DA_SC2].push_back(5.95100000);
    2399           8 :   parameter[DA_SC2].push_back(-0.02634300);
    2400           8 :   parameter[DA_SC2].push_back(2.54864300);
    2401           8 :   parameter[DA_SC2].push_back(-0.49015800);
    2402           8 :   parameter[DA_SC2].push_back(-1.55386900);
    2403           8 :   parameter[DA_SC2].push_back(0.86630200);
    2404           8 :   parameter[DA_SC2].push_back(-0.13546200);
    2405             : 
    2406           8 :   parameter[DA_SC3].push_back(11.39400000);
    2407           8 :   parameter[DA_SC3].push_back(0.00859500);
    2408           8 :   parameter[DA_SC3].push_back(-0.25471400);
    2409           8 :   parameter[DA_SC3].push_back(0.48718800);
    2410           8 :   parameter[DA_SC3].push_back(-1.74520000);
    2411           8 :   parameter[DA_SC3].push_back(0.99246200);
    2412           8 :   parameter[DA_SC3].push_back(-0.16351900);
    2413             : 
    2414           8 :   parameter[DA_SC4].push_back(6.45900000);
    2415           8 :   parameter[DA_SC4].push_back(0.01991800);
    2416           8 :   parameter[DA_SC4].push_back(4.17962300);
    2417           8 :   parameter[DA_SC4].push_back(0.97469100);
    2418           8 :   parameter[DA_SC4].push_back(-5.02950400);
    2419           8 :   parameter[DA_SC4].push_back(2.55371800);
    2420           8 :   parameter[DA_SC4].push_back(-0.39113400);
    2421             : 
    2422           8 :   parameter[DA_3TE].push_back(4.23000000);
    2423           8 :   parameter[DA_3TE].push_back(0.00062600);
    2424           8 :   parameter[DA_3TE].push_back(0.92142000);
    2425           8 :   parameter[DA_3TE].push_back(0.08016400);
    2426           8 :   parameter[DA_3TE].push_back(-0.39000300);
    2427           8 :   parameter[DA_3TE].push_back(0.12402500);
    2428           8 :   parameter[DA_3TE].push_back(-0.01117900);
    2429             : 
    2430           8 :   parameter[DA_5TE].push_back(4.23000000);
    2431           8 :   parameter[DA_5TE].push_back(0.00055500);
    2432           8 :   parameter[DA_5TE].push_back(0.92183900);
    2433           8 :   parameter[DA_5TE].push_back(0.07907600);
    2434           8 :   parameter[DA_5TE].push_back(-0.38895100);
    2435           8 :   parameter[DA_5TE].push_back(0.12359600);
    2436           8 :   parameter[DA_5TE].push_back(-0.01111600);
    2437             : 
    2438           8 :   parameter[DA_TE3].push_back(2.87400000);
    2439           8 :   parameter[DA_TE3].push_back(0.00112900);
    2440           8 :   parameter[DA_TE3].push_back(12.51167200);
    2441           8 :   parameter[DA_TE3].push_back(-7.67548000);
    2442           8 :   parameter[DA_TE3].push_back(-2.02234000);
    2443           8 :   parameter[DA_TE3].push_back(2.50837100);
    2444           8 :   parameter[DA_TE3].push_back(-0.49458500);
    2445             : 
    2446           8 :   parameter[DA_TE5].push_back(8.03600000);
    2447           8 :   parameter[DA_TE5].push_back(0.00473100);
    2448           8 :   parameter[DA_TE5].push_back(4.65554400);
    2449           8 :   parameter[DA_TE5].push_back(0.66424100);
    2450           8 :   parameter[DA_TE5].push_back(-6.62131300);
    2451           8 :   parameter[DA_TE5].push_back(3.96107400);
    2452           8 :   parameter[DA_TE5].push_back(-0.69075800);
    2453             : 
    2454           8 :   parameter[DC_BB1].push_back(32.88500000);
    2455           8 :   parameter[DC_BB1].push_back(0.08189900);
    2456           8 :   parameter[DC_BB1].push_back(-7.32493500);
    2457           8 :   parameter[DC_BB1].push_back(2.15976900);
    2458           8 :   parameter[DC_BB1].push_back(-3.52612100);
    2459           8 :   parameter[DC_BB1].push_back(2.31058600);
    2460           8 :   parameter[DC_BB1].push_back(-0.39402700);
    2461             : 
    2462           8 :   parameter[DC_BB2].push_back(3.80600000);
    2463           8 :   parameter[DC_BB2].push_back(-0.10559800);
    2464           8 :   parameter[DC_BB2].push_back(9.52527700);
    2465           8 :   parameter[DC_BB2].push_back(-6.12131700);
    2466           8 :   parameter[DC_BB2].push_back(-0.54899400);
    2467           8 :   parameter[DC_BB2].push_back(1.15592900);
    2468           8 :   parameter[DC_BB2].push_back(-0.21494500);
    2469             : 
    2470           8 :   parameter[DC_BB3].push_back(-1.35600000);
    2471           8 :   parameter[DC_BB3].push_back(0.55525700);
    2472           8 :   parameter[DC_BB3].push_back(6.80305500);
    2473           8 :   parameter[DC_BB3].push_back(4.05924700);
    2474           8 :   parameter[DC_BB3].push_back(-9.61034700);
    2475           8 :   parameter[DC_BB3].push_back(4.41253800);
    2476           8 :   parameter[DC_BB3].push_back(-0.64315100);
    2477             : 
    2478           8 :   parameter[DC_SC1].push_back(5.95100000);
    2479           8 :   parameter[DC_SC1].push_back(-0.02899900);
    2480           8 :   parameter[DC_SC1].push_back(2.59587800);
    2481           8 :   parameter[DC_SC1].push_back(-0.55388300);
    2482           8 :   parameter[DC_SC1].push_back(-1.56395100);
    2483           8 :   parameter[DC_SC1].push_back(0.88967400);
    2484           8 :   parameter[DC_SC1].push_back(-0.14062500);
    2485             : 
    2486           8 :   parameter[DC_SC2].push_back(11.62100000);
    2487           8 :   parameter[DC_SC2].push_back(0.01358100);
    2488           8 :   parameter[DC_SC2].push_back(-0.24913000);
    2489           8 :   parameter[DC_SC2].push_back(0.48787200);
    2490           8 :   parameter[DC_SC2].push_back(-1.52867300);
    2491           8 :   parameter[DC_SC2].push_back(0.83694900);
    2492           8 :   parameter[DC_SC2].push_back(-0.13395300);
    2493             : 
    2494           8 :   parameter[DC_SC3].push_back(5.01900000);
    2495           8 :   parameter[DC_SC3].push_back(-0.03298400);
    2496           8 :   parameter[DC_SC3].push_back(5.54242800);
    2497           8 :   parameter[DC_SC3].push_back(-0.96081500);
    2498           8 :   parameter[DC_SC3].push_back(-3.71051600);
    2499           8 :   parameter[DC_SC3].push_back(2.16500200);
    2500           8 :   parameter[DC_SC3].push_back(-0.35023400);
    2501             : 
    2502           8 :   parameter[DC_3TE].push_back(4.23000000);
    2503           8 :   parameter[DC_3TE].push_back(0.00055700);
    2504           8 :   parameter[DC_3TE].push_back(0.92181400);
    2505           8 :   parameter[DC_3TE].push_back(0.07924000);
    2506           8 :   parameter[DC_3TE].push_back(-0.38916400);
    2507           8 :   parameter[DC_3TE].push_back(0.12369900);
    2508           8 :   parameter[DC_3TE].push_back(-0.01113300);
    2509             : 
    2510           8 :   parameter[DC_5TE].push_back(4.23000000);
    2511           8 :   parameter[DC_5TE].push_back(0.00066500);
    2512           8 :   parameter[DC_5TE].push_back(0.92103900);
    2513           8 :   parameter[DC_5TE].push_back(0.08064600);
    2514           8 :   parameter[DC_5TE].push_back(-0.39034900);
    2515           8 :   parameter[DC_5TE].push_back(0.12417600);
    2516           8 :   parameter[DC_5TE].push_back(-0.01120600);
    2517             : 
    2518           8 :   parameter[DC_TE3].push_back(2.87400000);
    2519           8 :   parameter[DC_TE3].push_back(-0.05235500);
    2520           8 :   parameter[DC_TE3].push_back(13.09201200);
    2521           8 :   parameter[DC_TE3].push_back(-9.48128200);
    2522           8 :   parameter[DC_TE3].push_back(-0.14958600);
    2523           8 :   parameter[DC_TE3].push_back(1.75537200);
    2524           8 :   parameter[DC_TE3].push_back(-0.39347500);
    2525             : 
    2526           8 :   parameter[DC_TE5].push_back(8.03600000);
    2527           8 :   parameter[DC_TE5].push_back(-0.00513600);
    2528           8 :   parameter[DC_TE5].push_back(4.67705700);
    2529           8 :   parameter[DC_TE5].push_back(0.48333300);
    2530           8 :   parameter[DC_TE5].push_back(-6.34511000);
    2531           8 :   parameter[DC_TE5].push_back(3.83388500);
    2532           8 :   parameter[DC_TE5].push_back(-0.67367800);
    2533             : 
    2534           8 :   parameter[DG_BB1].push_back(32.88500000);
    2535           8 :   parameter[DG_BB1].push_back(0.08182900);
    2536           8 :   parameter[DG_BB1].push_back(-7.32133900);
    2537           8 :   parameter[DG_BB1].push_back(2.15767900);
    2538           8 :   parameter[DG_BB1].push_back(-3.52369700);
    2539           8 :   parameter[DG_BB1].push_back(2.30839600);
    2540           8 :   parameter[DG_BB1].push_back(-0.39348300);
    2541             : 
    2542           8 :   parameter[DG_BB2].push_back(3.80600000);
    2543           8 :   parameter[DG_BB2].push_back(-0.10618100);
    2544           8 :   parameter[DG_BB2].push_back(9.54169000);
    2545           8 :   parameter[DG_BB2].push_back(-6.15177600);
    2546           8 :   parameter[DG_BB2].push_back(-0.53462400);
    2547           8 :   parameter[DG_BB2].push_back(1.15581300);
    2548           8 :   parameter[DG_BB2].push_back(-0.21567000);
    2549             : 
    2550           8 :   parameter[DG_BB3].push_back(-1.35600000);
    2551           8 :   parameter[DG_BB3].push_back(0.57489100);
    2552           8 :   parameter[DG_BB3].push_back(6.75164700);
    2553           8 :   parameter[DG_BB3].push_back(4.11300900);
    2554           8 :   parameter[DG_BB3].push_back(-9.63394600);
    2555           8 :   parameter[DG_BB3].push_back(4.41675400);
    2556           8 :   parameter[DG_BB3].push_back(-0.64339900);
    2557             : 
    2558           8 :   parameter[DG_SC1].push_back(6.67100000);
    2559           8 :   parameter[DG_SC1].push_back(-0.00886600);
    2560           8 :   parameter[DG_SC1].push_back(1.63333000);
    2561           8 :   parameter[DG_SC1].push_back(-0.06892100);
    2562           8 :   parameter[DG_SC1].push_back(-1.48683500);
    2563           8 :   parameter[DG_SC1].push_back(0.78670800);
    2564           8 :   parameter[DG_SC1].push_back(-0.12113900);
    2565             : 
    2566           8 :   parameter[DG_SC2].push_back(11.39400000);
    2567           8 :   parameter[DG_SC2].push_back(0.00907900);
    2568           8 :   parameter[DG_SC2].push_back(-0.22475500);
    2569           8 :   parameter[DG_SC2].push_back(0.49535100);
    2570           8 :   parameter[DG_SC2].push_back(-1.75324900);
    2571           8 :   parameter[DG_SC2].push_back(0.98767400);
    2572           8 :   parameter[DG_SC2].push_back(-0.16150800);
    2573             : 
    2574           8 :   parameter[DG_SC3].push_back(10.90100000);
    2575           8 :   parameter[DG_SC3].push_back(0.02207600);
    2576           8 :   parameter[DG_SC3].push_back(0.17932200);
    2577           8 :   parameter[DG_SC3].push_back(0.73253200);
    2578           8 :   parameter[DG_SC3].push_back(-1.95554900);
    2579           8 :   parameter[DG_SC3].push_back(0.98339900);
    2580           8 :   parameter[DG_SC3].push_back(-0.14763600);
    2581             : 
    2582           8 :   parameter[DG_SC4].push_back(6.45900000);
    2583           8 :   parameter[DG_SC4].push_back(0.02018400);
    2584           8 :   parameter[DG_SC4].push_back(4.17705400);
    2585           8 :   parameter[DG_SC4].push_back(0.98531700);
    2586           8 :   parameter[DG_SC4].push_back(-5.04354900);
    2587           8 :   parameter[DG_SC4].push_back(2.56123700);
    2588           8 :   parameter[DG_SC4].push_back(-0.39249300);
    2589             : 
    2590           8 :   parameter[DG_3TE].push_back(4.23000000);
    2591           8 :   parameter[DG_3TE].push_back(0.00061700);
    2592           8 :   parameter[DG_3TE].push_back(0.92140100);
    2593           8 :   parameter[DG_3TE].push_back(0.08016400);
    2594           8 :   parameter[DG_3TE].push_back(-0.39003500);
    2595           8 :   parameter[DG_3TE].push_back(0.12406900);
    2596           8 :   parameter[DG_3TE].push_back(-0.01119200);
    2597             : 
    2598           8 :   parameter[DG_5TE].push_back(4.23000000);
    2599           8 :   parameter[DG_5TE].push_back(0.00064900);
    2600           8 :   parameter[DG_5TE].push_back(0.92110500);
    2601           8 :   parameter[DG_5TE].push_back(0.08031500);
    2602           8 :   parameter[DG_5TE].push_back(-0.38997000);
    2603           8 :   parameter[DG_5TE].push_back(0.12401200);
    2604           8 :   parameter[DG_5TE].push_back(-0.01118100);
    2605             : 
    2606           8 :   parameter[DG_TE3].push_back(2.87400000);
    2607           8 :   parameter[DG_TE3].push_back(0.00182000);
    2608           8 :   parameter[DG_TE3].push_back(12.41507000);
    2609           8 :   parameter[DG_TE3].push_back(-7.47384800);
    2610           8 :   parameter[DG_TE3].push_back(-2.11864700);
    2611           8 :   parameter[DG_TE3].push_back(2.50112600);
    2612           8 :   parameter[DG_TE3].push_back(-0.48652200);
    2613             : 
    2614           8 :   parameter[DG_TE5].push_back(8.03600000);
    2615           8 :   parameter[DG_TE5].push_back(0.00676400);
    2616           8 :   parameter[DG_TE5].push_back(4.65989200);
    2617           8 :   parameter[DG_TE5].push_back(0.78482500);
    2618           8 :   parameter[DG_TE5].push_back(-6.86460600);
    2619           8 :   parameter[DG_TE5].push_back(4.11675400);
    2620           8 :   parameter[DG_TE5].push_back(-0.72249100);
    2621             : 
    2622           8 :   parameter[DT_BB1].push_back(32.88500000);
    2623           8 :   parameter[DT_BB1].push_back(0.08220100);
    2624           8 :   parameter[DT_BB1].push_back(-7.33006800);
    2625           8 :   parameter[DT_BB1].push_back(2.16636500);
    2626           8 :   parameter[DT_BB1].push_back(-3.53465700);
    2627           8 :   parameter[DT_BB1].push_back(2.31447600);
    2628           8 :   parameter[DT_BB1].push_back(-0.39445400);
    2629             : 
    2630           8 :   parameter[DT_BB2].push_back(3.80600000);
    2631           8 :   parameter[DT_BB2].push_back(-0.10723000);
    2632           8 :   parameter[DT_BB2].push_back(9.56675000);
    2633           8 :   parameter[DT_BB2].push_back(-6.20236100);
    2634           8 :   parameter[DT_BB2].push_back(-0.49550400);
    2635           8 :   parameter[DT_BB2].push_back(1.14300600);
    2636           8 :   parameter[DT_BB2].push_back(-0.21420000);
    2637             : 
    2638           8 :   parameter[DT_BB3].push_back(-1.35600000);
    2639           8 :   parameter[DT_BB3].push_back(0.56737900);
    2640           8 :   parameter[DT_BB3].push_back(6.76595400);
    2641           8 :   parameter[DT_BB3].push_back(4.08976100);
    2642           8 :   parameter[DT_BB3].push_back(-9.61512500);
    2643           8 :   parameter[DT_BB3].push_back(4.40975100);
    2644           8 :   parameter[DT_BB3].push_back(-0.64239800);
    2645             : 
    2646           8 :   parameter[DT_SC1].push_back(5.95100000);
    2647           8 :   parameter[DT_SC1].push_back(-0.02926500);
    2648           8 :   parameter[DT_SC1].push_back(2.59630300);
    2649           8 :   parameter[DT_SC1].push_back(-0.56152200);
    2650           8 :   parameter[DT_SC1].push_back(-1.56532600);
    2651           8 :   parameter[DT_SC1].push_back(0.89322800);
    2652           8 :   parameter[DT_SC1].push_back(-0.14142900);
    2653             : 
    2654           8 :   parameter[DT_SC2].push_back(10.90100000);
    2655           8 :   parameter[DT_SC2].push_back(0.02183400);
    2656           8 :   parameter[DT_SC2].push_back(0.19463000);
    2657           8 :   parameter[DT_SC2].push_back(0.72393000);
    2658           8 :   parameter[DT_SC2].push_back(-1.93199500);
    2659           8 :   parameter[DT_SC2].push_back(0.96856300);
    2660           8 :   parameter[DT_SC2].push_back(-0.14512600);
    2661             : 
    2662           8 :   parameter[DT_SC3].push_back(4.31400000);
    2663           8 :   parameter[DT_SC3].push_back(-0.07745600);
    2664           8 :   parameter[DT_SC3].push_back(12.49820300);
    2665           8 :   parameter[DT_SC3].push_back(-7.64994200);
    2666           8 :   parameter[DT_SC3].push_back(-3.00359600);
    2667           8 :   parameter[DT_SC3].push_back(3.26263300);
    2668           8 :   parameter[DT_SC3].push_back(-0.64498600);
    2669             : 
    2670           8 :   parameter[DT_3TE].push_back(4.23000000);
    2671           8 :   parameter[DT_3TE].push_back(0.00062000);
    2672           8 :   parameter[DT_3TE].push_back(0.92141100);
    2673           8 :   parameter[DT_3TE].push_back(0.08030900);
    2674           8 :   parameter[DT_3TE].push_back(-0.39021500);
    2675           8 :   parameter[DT_3TE].push_back(0.12414000);
    2676           8 :   parameter[DT_3TE].push_back(-0.01120100);
    2677             : 
    2678           8 :   parameter[DT_5TE].push_back(4.23000000);
    2679           8 :   parameter[DT_5TE].push_back(0.00063700);
    2680           8 :   parameter[DT_5TE].push_back(0.92130800);
    2681           8 :   parameter[DT_5TE].push_back(0.08026900);
    2682           8 :   parameter[DT_5TE].push_back(-0.39007500);
    2683           8 :   parameter[DT_5TE].push_back(0.12406600);
    2684           8 :   parameter[DT_5TE].push_back(-0.01118800);
    2685             : 
    2686           8 :   parameter[DT_TE3].push_back(2.87400000);
    2687           8 :   parameter[DT_TE3].push_back(-0.00251200);
    2688           8 :   parameter[DT_TE3].push_back(12.43576400);
    2689           8 :   parameter[DT_TE3].push_back(-7.55343800);
    2690           8 :   parameter[DT_TE3].push_back(-2.07363500);
    2691           8 :   parameter[DT_TE3].push_back(2.51279300);
    2692           8 :   parameter[DT_TE3].push_back(-0.49437100);
    2693             : 
    2694           8 :   parameter[DT_TE5].push_back(8.03600000);
    2695           8 :   parameter[DT_TE5].push_back(0.00119900);
    2696           8 :   parameter[DT_TE5].push_back(4.91762300);
    2697           8 :   parameter[DT_TE5].push_back(0.65637000);
    2698           8 :   parameter[DT_TE5].push_back(-7.23392500);
    2699           8 :   parameter[DT_TE5].push_back(4.44636600);
    2700           8 :   parameter[DT_TE5].push_back(-0.79467800);
    2701             : 
    2702           8 :   auto* moldat=plumed.getActionSet().selectLatest<GenericMolInfo*>(this);
    2703           8 :   if( moldat ) {
    2704        8400 :     for(unsigned i=0; i<atoms.size(); ++i) {
    2705        8392 :       std::string Aname = moldat->getAtomName(atoms[i]);
    2706        8392 :       std::string Rname = moldat->getResidueName(atoms[i]);
    2707        8392 :       if(Rname=="ALA") {
    2708          72 :         if(Aname=="BB") {
    2709          72 :           atoi[i]=ALA_BB;
    2710           0 :         } else error("Atom name not known: "+Aname);
    2711        8320 :       } else if(Rname=="ARG") {
    2712         420 :         if(Aname=="BB") {
    2713         140 :           atoi[i]=ARG_BB;
    2714         280 :         } else if(Aname=="SC1") {
    2715         140 :           atoi[i]=ARG_SC1;
    2716         140 :         } else if(Aname=="SC2") {
    2717         140 :           atoi[i]=ARG_SC2;
    2718           0 :         } else error("Atom name not known: "+Aname);
    2719        7900 :       } else if(Rname=="ASN") {
    2720         240 :         if(Aname=="BB") {
    2721         120 :           atoi[i]=ASN_BB;
    2722         120 :         } else if(Aname=="SC1") {
    2723         120 :           atoi[i]=ASN_SC1;
    2724           0 :         } else error("Atom name not known: "+Aname);
    2725        7660 :       } else if(Rname=="ASP") {
    2726         368 :         if(Aname=="BB") {
    2727         184 :           atoi[i]=ASP_BB;
    2728         184 :         } else if(Aname=="SC1") {
    2729         184 :           atoi[i]=ASP_SC1;
    2730           0 :         } else error("Atom name not known: "+Aname);
    2731        7292 :       } else if(Rname=="CYS") {
    2732          16 :         if(Aname=="BB") {
    2733           8 :           atoi[i]=CYS_BB;
    2734           8 :         } else if(Aname=="SC1") {
    2735           8 :           atoi[i]=CYS_SC1;
    2736           0 :         } else error("Atom name not known: "+Aname);
    2737        7276 :       } else if(Rname=="GLN") {
    2738         224 :         if(Aname=="BB") {
    2739         112 :           atoi[i]=GLN_BB;
    2740         112 :         } else if(Aname=="SC1") {
    2741         112 :           atoi[i]=GLN_SC1;
    2742           0 :         } else error("Atom name not known: "+Aname);
    2743        7052 :       } else if(Rname=="GLU") {
    2744         480 :         if(Aname=="BB") {
    2745         240 :           atoi[i]=GLU_BB;
    2746         240 :         } else if(Aname=="SC1") {
    2747         240 :           atoi[i]=GLU_SC1;
    2748           0 :         } else error("Atom name not known: "+Aname);
    2749        6572 :       } else if(Rname=="GLY") {
    2750         116 :         if(Aname=="BB") {
    2751         116 :           atoi[i]=GLY_BB;
    2752           0 :         } else error("Atom name not known: "+Aname);
    2753        6456 :       } else if(Rname=="HIS") {
    2754         576 :         if(Aname=="BB") {
    2755         144 :           atoi[i]=HIS_BB;
    2756         432 :         } else if(Aname=="SC1") {
    2757         144 :           atoi[i]=HIS_SC1;
    2758         288 :         } else if(Aname=="SC2") {
    2759         144 :           atoi[i]=HIS_SC2;
    2760         144 :         } else if(Aname=="SC3") {
    2761         144 :           atoi[i]=HIS_SC3;
    2762           0 :         } else error("Atom name not known: "+Aname);
    2763        5880 :       } else if(Rname=="ILE") {
    2764         584 :         if(Aname=="BB") {
    2765         292 :           atoi[i]=ILE_BB;
    2766         292 :         } else if(Aname=="SC1") {
    2767         292 :           atoi[i]=ILE_SC1;
    2768           0 :         } else error("Atom name not known: "+Aname);
    2769        5296 :       } else if(Rname=="LEU") {
    2770         448 :         if(Aname=="BB") {
    2771         224 :           atoi[i]=LEU_BB;
    2772         224 :         } else if(Aname=="SC1") {
    2773         224 :           atoi[i]=LEU_SC1;
    2774           0 :         } else error("Atom name not known: "+Aname);
    2775        4848 :       } else if(Rname=="LYS") {
    2776         792 :         if(Aname=="BB") {
    2777         264 :           atoi[i]=LYS_BB;
    2778         528 :         } else if(Aname=="SC1") {
    2779         264 :           atoi[i]=LYS_SC1;
    2780         264 :         } else if(Aname=="SC2") {
    2781         264 :           atoi[i]=LYS_SC2;
    2782           0 :         } else error("Atom name not known: "+Aname);
    2783        4056 :       } else if(Rname=="MET") {
    2784          80 :         if(Aname=="BB") {
    2785          40 :           atoi[i]=MET_BB;
    2786          40 :         } else if(Aname=="SC1") {
    2787          40 :           atoi[i]=MET_SC1;
    2788           0 :         } else error("Atom name not known: "+Aname);
    2789        3976 :       } else if(Rname=="PHE") {
    2790         512 :         if(Aname=="BB") {
    2791         128 :           atoi[i]=PHE_BB;
    2792         384 :         } else if(Aname=="SC1") {
    2793         128 :           atoi[i]=PHE_SC1;
    2794         256 :         } else if(Aname=="SC2") {
    2795         128 :           atoi[i]=PHE_SC2;
    2796         128 :         } else if(Aname=="SC3") {
    2797         128 :           atoi[i]=PHE_SC3;
    2798           0 :         } else error("Atom name not known: "+Aname);
    2799        3464 :       } else if(Rname=="PRO") {
    2800         128 :         if(Aname=="BB") {
    2801          64 :           atoi[i]=PRO_BB;
    2802          64 :         } else if(Aname=="SC1") {
    2803          64 :           atoi[i]=PRO_SC1;
    2804           0 :         } else error("Atom name not known: "+Aname);
    2805        3336 :       } else if(Rname=="SER") {
    2806         248 :         if(Aname=="BB") {
    2807         124 :           atoi[i]=SER_BB;
    2808         124 :         } else if(Aname=="SC1") {
    2809         124 :           atoi[i]=SER_SC1;
    2810           0 :         } else error("Atom name not known: "+Aname);
    2811        3088 :       } else if(Rname=="THR") {
    2812         288 :         if(Aname=="BB") {
    2813         144 :           atoi[i]=THR_BB;
    2814         144 :         } else if(Aname=="SC1") {
    2815         144 :           atoi[i]=THR_SC1;
    2816           0 :         } else error("Atom name not known: "+Aname);
    2817        2800 :       } else if(Rname=="TRP") {
    2818           0 :         if(Aname=="BB") {
    2819           0 :           atoi[i]=TRP_BB;
    2820           0 :         } else if(Aname=="SC1") {
    2821           0 :           atoi[i]=TRP_SC1;
    2822           0 :         } else if(Aname=="SC2") {
    2823           0 :           atoi[i]=TRP_SC2;
    2824           0 :         } else if(Aname=="SC3") {
    2825           0 :           atoi[i]=TRP_SC3;
    2826           0 :         } else if(Aname=="SC4") {
    2827           0 :           atoi[i]=TRP_SC4;
    2828           0 :         } else error("Atom name not known: "+Aname);
    2829        2800 :       } else if(Rname=="TYR") {
    2830         544 :         if(Aname=="BB") {
    2831         136 :           atoi[i]=TYR_BB;
    2832         408 :         } else if(Aname=="SC1") {
    2833         136 :           atoi[i]=TYR_SC1;
    2834         272 :         } else if(Aname=="SC2") {
    2835         136 :           atoi[i]=TYR_SC2;
    2836         136 :         } else if(Aname=="SC3") {
    2837         136 :           atoi[i]=TYR_SC3;
    2838           0 :         } else error("Atom name not known: "+Aname);
    2839        2256 :       } else if(Rname=="VAL") {
    2840         288 :         if(Aname=="BB") {
    2841         144 :           atoi[i]=VAL_BB;
    2842         144 :         } else if(Aname=="SC1") {
    2843         144 :           atoi[i]=VAL_SC1;
    2844           0 :         } else error("Atom name not known: "+Aname);
    2845        1968 :       } else if(Rname=="  A") {
    2846           0 :         if(Aname=="BB1") {
    2847           0 :           atoi[i]=A_BB1;
    2848           0 :         } else if(Aname=="BB2") {
    2849           0 :           atoi[i]=A_BB2;
    2850           0 :         } else if(Aname=="BB3") {
    2851           0 :           atoi[i]=A_BB3;
    2852           0 :         } else if(Aname=="SC1") {
    2853           0 :           atoi[i]=A_SC1;
    2854           0 :         } else if(Aname=="SC2") {
    2855           0 :           atoi[i]=A_SC2;
    2856           0 :         } else if(Aname=="SC3") {
    2857           0 :           atoi[i]=A_SC3;
    2858           0 :         } else if(Aname=="SC4") {
    2859           0 :           atoi[i]=A_SC4;
    2860           0 :         } else if(Aname=="3TE") {
    2861           0 :           atoi[i]=A_3TE;
    2862           0 :         } else if(Aname=="5TE") {
    2863           0 :           atoi[i]=A_5TE;
    2864           0 :         } else if(Aname=="TE3") {
    2865           0 :           atoi[i]=A_TE3;
    2866           0 :         } else if(Aname=="TE5") {
    2867           0 :           atoi[i]=A_TE5;
    2868           0 :         } else error("Atom name not known: "+Aname);
    2869        1968 :       } else if(Rname=="  C") {
    2870           0 :         if(Aname=="BB1") {
    2871           0 :           atoi[i]=C_BB1;
    2872           0 :         } else if(Aname=="BB2") {
    2873           0 :           atoi[i]=C_BB2;
    2874           0 :         } else if(Aname=="BB3") {
    2875           0 :           atoi[i]=C_BB3;
    2876           0 :         } else if(Aname=="SC1") {
    2877           0 :           atoi[i]=C_SC1;
    2878           0 :         } else if(Aname=="SC2") {
    2879           0 :           atoi[i]=C_SC2;
    2880           0 :         } else if(Aname=="SC3") {
    2881           0 :           atoi[i]=C_SC3;
    2882           0 :         } else if(Aname=="3TE") {
    2883           0 :           atoi[i]=C_3TE;
    2884           0 :         } else if(Aname=="5TE") {
    2885           0 :           atoi[i]=C_5TE;
    2886           0 :         } else if(Aname=="TE3") {
    2887           0 :           atoi[i]=C_TE3;
    2888           0 :         } else if(Aname=="TE5") {
    2889           0 :           atoi[i]=C_TE5;
    2890           0 :         } else error("Atom name not known: "+Aname);
    2891        1968 :       } else if(Rname=="  G") {
    2892           0 :         if(Aname=="BB1") {
    2893           0 :           atoi[i]=G_BB1;
    2894           0 :         } else if(Aname=="BB2") {
    2895           0 :           atoi[i]=G_BB2;
    2896           0 :         } else if(Aname=="BB3") {
    2897           0 :           atoi[i]=G_BB3;
    2898           0 :         } else if(Aname=="SC1") {
    2899           0 :           atoi[i]=G_SC1;
    2900           0 :         } else if(Aname=="SC2") {
    2901           0 :           atoi[i]=G_SC2;
    2902           0 :         } else if(Aname=="SC3") {
    2903           0 :           atoi[i]=G_SC3;
    2904           0 :         } else if(Aname=="SC4") {
    2905           0 :           atoi[i]=G_SC4;
    2906           0 :         } else if(Aname=="3TE") {
    2907           0 :           atoi[i]=G_3TE;
    2908           0 :         } else if(Aname=="5TE") {
    2909           0 :           atoi[i]=G_5TE;
    2910           0 :         } else if(Aname=="TE3") {
    2911           0 :           atoi[i]=G_TE3;
    2912           0 :         } else if(Aname=="TE5") {
    2913           0 :           atoi[i]=G_TE5;
    2914           0 :         } else error("Atom name not known: "+Aname);
    2915        1968 :       } else if(Rname=="  U") {
    2916           0 :         if(Aname=="BB1") {
    2917           0 :           atoi[i]=U_BB1;
    2918           0 :         } else if(Aname=="BB2") {
    2919           0 :           atoi[i]=U_BB2;
    2920           0 :         } else if(Aname=="BB3") {
    2921           0 :           atoi[i]=U_BB3;
    2922           0 :         } else if(Aname=="SC1") {
    2923           0 :           atoi[i]=U_SC1;
    2924           0 :         } else if(Aname=="SC2") {
    2925           0 :           atoi[i]=U_SC2;
    2926           0 :         } else if(Aname=="SC3") {
    2927           0 :           atoi[i]=U_SC3;
    2928           0 :         } else if(Aname=="3TE") {
    2929           0 :           atoi[i]=U_3TE;
    2930           0 :         } else if(Aname=="5TE") {
    2931           0 :           atoi[i]=U_5TE;
    2932           0 :         } else if(Aname=="TE3") {
    2933           0 :           atoi[i]=U_TE3;
    2934           0 :         } else if(Aname=="TE5") {
    2935           0 :           atoi[i]=U_TE5;
    2936           0 :         } else error("Atom name not known: "+Aname);
    2937        1968 :       } else if(Rname==" DA") {
    2938         696 :         if(Aname=="BB1") {
    2939          96 :           atoi[i]=DA_BB1;
    2940         600 :         } else if(Aname=="BB2") {
    2941          96 :           atoi[i]=DA_BB2;
    2942         504 :         } else if(Aname=="BB3") {
    2943          96 :           atoi[i]=DA_BB3;
    2944         408 :         } else if(Aname=="SC1") {
    2945         100 :           atoi[i]=DA_SC1;
    2946         308 :         } else if(Aname=="SC2") {
    2947         100 :           atoi[i]=DA_SC2;
    2948         208 :         } else if(Aname=="SC3") {
    2949         100 :           atoi[i]=DA_SC3;
    2950         108 :         } else if(Aname=="SC4") {
    2951         100 :           atoi[i]=DA_SC4;
    2952           8 :         } else if(Aname=="3TE") {
    2953           0 :           atoi[i]=DA_3TE;
    2954           8 :         } else if(Aname=="5TE") {
    2955           0 :           atoi[i]=DA_5TE;
    2956           8 :         } else if(Aname=="TE3") {
    2957           4 :           atoi[i]=DA_TE3;
    2958           4 :         } else if(Aname=="TE5") {
    2959           4 :           atoi[i]=DA_TE5;
    2960           0 :         } else error("Atom name not known: "+Aname);
    2961        1272 :       } else if(Rname==" DC") {
    2962         312 :         if(Aname=="BB1") {
    2963          52 :           atoi[i]=DC_BB1;
    2964         260 :         } else if(Aname=="BB2") {
    2965          52 :           atoi[i]=DC_BB2;
    2966         208 :         } else if(Aname=="BB3") {
    2967          52 :           atoi[i]=DC_BB3;
    2968         156 :         } else if(Aname=="SC1") {
    2969          52 :           atoi[i]=DC_SC1;
    2970         104 :         } else if(Aname=="SC2") {
    2971          52 :           atoi[i]=DC_SC2;
    2972          52 :         } else if(Aname=="SC3") {
    2973          52 :           atoi[i]=DC_SC3;
    2974           0 :         } else if(Aname=="3TE") {
    2975           0 :           atoi[i]=DC_3TE;
    2976           0 :         } else if(Aname=="5TE") {
    2977           0 :           atoi[i]=DC_5TE;
    2978           0 :         } else if(Aname=="TE3") {
    2979           0 :           atoi[i]=DC_TE3;
    2980           0 :         } else if(Aname=="TE5") {
    2981           0 :           atoi[i]=DC_TE5;
    2982           0 :         } else error("Atom name not known: "+Aname);
    2983         960 :       } else if(Rname==" DG") {
    2984         364 :         if(Aname=="BB1") {
    2985          52 :           atoi[i]=DG_BB1;
    2986         312 :         } else if(Aname=="BB2") {
    2987          52 :           atoi[i]=DG_BB2;
    2988         260 :         } else if(Aname=="BB3") {
    2989          52 :           atoi[i]=DG_BB3;
    2990         208 :         } else if(Aname=="SC1") {
    2991          52 :           atoi[i]=DG_SC1;
    2992         156 :         } else if(Aname=="SC2") {
    2993          52 :           atoi[i]=DG_SC2;
    2994         104 :         } else if(Aname=="SC3") {
    2995          52 :           atoi[i]=DG_SC3;
    2996          52 :         } else if(Aname=="SC4") {
    2997          52 :           atoi[i]=DG_SC4;
    2998           0 :         } else if(Aname=="3TE") {
    2999           0 :           atoi[i]=DG_3TE;
    3000           0 :         } else if(Aname=="5TE") {
    3001           0 :           atoi[i]=DG_5TE;
    3002           0 :         } else if(Aname=="TE3") {
    3003           0 :           atoi[i]=DG_TE3;
    3004           0 :         } else if(Aname=="TE5") {
    3005           0 :           atoi[i]=DG_TE5;
    3006           0 :         } else error("Atom name not known: "+Aname);
    3007         596 :       } else if(Rname==" DT") {
    3008         596 :         if(Aname=="BB1") {
    3009          96 :           atoi[i]=DT_BB1;
    3010         500 :         } else if(Aname=="BB2") {
    3011          96 :           atoi[i]=DT_BB2;
    3012         404 :         } else if(Aname=="BB3") {
    3013          96 :           atoi[i]=DT_BB3;
    3014         308 :         } else if(Aname=="SC1") {
    3015         100 :           atoi[i]=DT_SC1;
    3016         208 :         } else if(Aname=="SC2") {
    3017         100 :           atoi[i]=DT_SC2;
    3018         108 :         } else if(Aname=="SC3") {
    3019         100 :           atoi[i]=DT_SC3;
    3020           8 :         } else if(Aname=="3TE") {
    3021           0 :           atoi[i]=DT_3TE;
    3022           8 :         } else if(Aname=="5TE") {
    3023           0 :           atoi[i]=DT_5TE;
    3024           8 :         } else if(Aname=="TE3") {
    3025           4 :           atoi[i]=DT_TE3;
    3026           4 :         } else if(Aname=="TE5") {
    3027           4 :           atoi[i]=DT_TE5;
    3028           0 :         } else error("Atom name not known: "+Aname);
    3029           0 :       } else error("Residue not known: "+Rname);
    3030             :     }
    3031             :   } else {
    3032           0 :     error("MOLINFO DATA not found\n");
    3033             :   }
    3034           8 : }
    3035             : 
    3036          10 : void SAXS::getOnebeadparam(const PDB &pdb, const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &parameter_vac, std::vector<std::vector<long double> > &parameter_mix, std::vector<std::vector<long double> > &parameter_solv, const std::vector<unsigned> & residue_atom)
    3037             : {
    3038             : 
    3039          10 :   parameter_solv[TRP].push_back(60737.60249988003);
    3040          10 :   parameter_solv[TRP].push_back(-77.75716755173752);
    3041          10 :   parameter_solv[TRP].push_back(-205962.98557711052);
    3042          10 :   parameter_solv[TRP].push_back(-62013.46984155453);
    3043          10 :   parameter_solv[TRP].push_back(680710.7592231638);
    3044          10 :   parameter_solv[TRP].push_back(-681336.8777362367);
    3045          10 :   parameter_solv[TRP].push_back(211473.65530642506);
    3046             : 
    3047          10 :   parameter_solv[TYR].push_back(46250.80359987982);
    3048          10 :   parameter_solv[TYR].push_back(-45.8287864681578);
    3049          10 :   parameter_solv[TYR].push_back(-143872.91752817619);
    3050          10 :   parameter_solv[TYR].push_back(-39049.68736409533);
    3051          10 :   parameter_solv[TYR].push_back(441321.71874090104);
    3052          10 :   parameter_solv[TYR].push_back(-434478.0972346327);
    3053          10 :   parameter_solv[TYR].push_back(133179.3694641212);
    3054             : 
    3055          10 :   parameter_solv[PHE].push_back(42407.164900118914);
    3056          10 :   parameter_solv[PHE].push_back(-159.1980754191431);
    3057          10 :   parameter_solv[PHE].push_back(-123847.86192757386);
    3058          10 :   parameter_solv[PHE].push_back(-41797.69041575073);
    3059          10 :   parameter_solv[PHE].push_back(380283.7035277073);
    3060          10 :   parameter_solv[PHE].push_back(-361432.67247521743);
    3061          10 :   parameter_solv[PHE].push_back(107750.64978068044);
    3062             : 
    3063          10 :   parameter_solv[HIP].push_back(24473.47360011923);
    3064          10 :   parameter_solv[HIP].push_back(-111.64156672747428);
    3065          10 :   parameter_solv[HIP].push_back(-65826.16993707925);
    3066          10 :   parameter_solv[HIP].push_back(-23305.91329798928);
    3067          10 :   parameter_solv[HIP].push_back(194795.11911635034);
    3068          10 :   parameter_solv[HIP].push_back(-180454.49458095312);
    3069          10 :   parameter_solv[HIP].push_back(52699.374196745615);
    3070             : 
    3071          10 :   parameter_solv[ARG].push_back(34106.70239988039);
    3072          10 :   parameter_solv[ARG].push_back(152.7472727640246);
    3073          10 :   parameter_solv[ARG].push_back(-117086.49392248681);
    3074          10 :   parameter_solv[ARG].push_back(-19664.229479267167);
    3075          10 :   parameter_solv[ARG].push_back(364454.0909203641);
    3076          10 :   parameter_solv[ARG].push_back(-382075.8018312776);
    3077          10 :   parameter_solv[ARG].push_back(122775.75036605193);
    3078             : 
    3079          10 :   parameter_solv[LYS].push_back(32292.090000118922);
    3080          10 :   parameter_solv[LYS].push_back(-111.97371180593888);
    3081          10 :   parameter_solv[LYS].push_back(-91953.10997619898);
    3082          10 :   parameter_solv[LYS].push_back(-30690.807047993283);
    3083          10 :   parameter_solv[LYS].push_back(282092.40760143084);
    3084          10 :   parameter_solv[LYS].push_back(-269503.2592457489);
    3085          10 :   parameter_solv[LYS].push_back(80777.81552915688);
    3086             : 
    3087          10 :   parameter_solv[CYS].push_back(11352.902500119093);
    3088          10 :   parameter_solv[CYS].push_back(-45.5226331859686);
    3089          10 :   parameter_solv[CYS].push_back(-20925.085562607524);
    3090          10 :   parameter_solv[CYS].push_back(-5662.685408989286);
    3091          10 :   parameter_solv[CYS].push_back(38559.10376731146);
    3092          10 :   parameter_solv[CYS].push_back(-27885.23426006181);
    3093          10 :   parameter_solv[CYS].push_back(6280.15058191397);
    3094             : 
    3095          10 :   parameter_solv[CYX].push_back(10281.960000119348);
    3096          10 :   parameter_solv[CYX].push_back(-42.315998754511);
    3097          10 :   parameter_solv[CYX].push_back(-19328.174487327480);
    3098          10 :   parameter_solv[CYX].push_back(-5523.191775626829);
    3099          10 :   parameter_solv[CYX].push_back(38185.463172673335);
    3100          10 :   parameter_solv[CYX].push_back(-28940.174693042034);
    3101          10 :   parameter_solv[CYX].push_back(6925.390014187676);
    3102             : 
    3103          10 :   parameter_solv[ASP].push_back(13511.73760011933);
    3104          10 :   parameter_solv[ASP].push_back(-59.929111107656595);
    3105          10 :   parameter_solv[ASP].push_back(-25849.869639655575);
    3106          10 :   parameter_solv[ASP].push_back(-7541.669448872824);
    3107          10 :   parameter_solv[ASP].push_back(50760.92045144903);
    3108          10 :   parameter_solv[ASP].push_back(-37677.87583269734);
    3109          10 :   parameter_solv[ASP].push_back(8745.7056219399);
    3110             : 
    3111          10 :   parameter_solv[GLU].push_back(20443.280400119456);
    3112          10 :   parameter_solv[GLU].push_back(-113.77561814283207);
    3113          10 :   parameter_solv[GLU].push_back(-45587.79314626863);
    3114          10 :   parameter_solv[GLU].push_back(-16187.556837331254);
    3115          10 :   parameter_solv[GLU].push_back(112609.65830609271);
    3116          10 :   parameter_solv[GLU].push_back(-93362.05323205091);
    3117          10 :   parameter_solv[GLU].push_back(24519.557866124724);
    3118             : 
    3119          10 :   parameter_solv[ILE].push_back(27858.948100119596);
    3120          10 :   parameter_solv[ILE].push_back(-159.27355145839834);
    3121          10 :   parameter_solv[ILE].push_back(-61571.43463039565);
    3122          10 :   parameter_solv[ILE].push_back(-21324.879474559468);
    3123          10 :   parameter_solv[ILE].push_back(144070.7572894681);
    3124          10 :   parameter_solv[ILE].push_back(-115021.81959095894);
    3125          10 :   parameter_solv[ILE].push_back(28939.085108838968);
    3126             : 
    3127          10 :   parameter_solv[LEU].push_back(27858.948100119596);
    3128          10 :   parameter_solv[LEU].push_back(-165.61892007509647);
    3129          10 :   parameter_solv[LEU].push_back(-62564.568746500125);
    3130          10 :   parameter_solv[LEU].push_back(-22465.332149768525);
    3131          10 :   parameter_solv[LEU].push_back(151616.79489291538);
    3132          10 :   parameter_solv[LEU].push_back(-122905.6119395393);
    3133          10 :   parameter_solv[LEU].push_back(31436.664377885514);
    3134             : 
    3135          10 :   parameter_solv[MET].push_back(25609.60090011981);
    3136          10 :   parameter_solv[MET].push_back(-135.38857843066708);
    3137          10 :   parameter_solv[MET].push_back(-67771.01108177133);
    3138          10 :   parameter_solv[MET].push_back(-25228.934337676077);
    3139          10 :   parameter_solv[MET].push_back(199649.95030712147);
    3140          10 :   parameter_solv[MET].push_back(-182251.94895101967);
    3141          10 :   parameter_solv[MET].push_back(52502.88444247481);
    3142             : 
    3143          10 :   parameter_solv[ASN].push_back(14376.010000119095);
    3144          10 :   parameter_solv[ASN].push_back(-67.65579048748472);
    3145          10 :   parameter_solv[ASN].push_back(-28302.87809850141);
    3146          10 :   parameter_solv[ASN].push_back(-8577.439830985548);
    3147          10 :   parameter_solv[ASN].push_back(57532.879075695324);
    3148          10 :   parameter_solv[ASN].push_back(-43261.79286366774);
    3149          10 :   parameter_solv[ASN].push_back(10186.448634149085);
    3150             : 
    3151          10 :   parameter_solv[PRO].push_back(16866.21690011944);
    3152          10 :   parameter_solv[PRO].push_back(-70.84327801054884);
    3153          10 :   parameter_solv[PRO].push_back(-31465.84064925844);
    3154          10 :   parameter_solv[PRO].push_back(-8653.3693368317);
    3155          10 :   parameter_solv[PRO].push_back(58032.28250733714);
    3156          10 :   parameter_solv[PRO].push_back(-41521.01146771431);
    3157          10 :   parameter_solv[PRO].push_back(9184.530596102064);
    3158             : 
    3159          10 :   parameter_solv[GLN].push_back(21503.289600119);
    3160          10 :   parameter_solv[GLN].push_back(-121.30164008960246);
    3161          10 :   parameter_solv[GLN].push_back(-50468.580981118175);
    3162          10 :   parameter_solv[GLN].push_back(-18462.49098408308);
    3163          10 :   parameter_solv[GLN].push_back(132718.44904081387);
    3164          10 :   parameter_solv[GLN].push_back(-113787.22666510186);
    3165          10 :   parameter_solv[GLN].push_back(30920.348610969988);
    3166             : 
    3167          10 :   parameter_solv[SER].push_back(9181.472400119354);
    3168          10 :   parameter_solv[SER].push_back(-28.77519915767741);
    3169          10 :   parameter_solv[SER].push_back(-15205.543144104717);
    3170          10 :   parameter_solv[SER].push_back(-3377.782176346411);
    3171          10 :   parameter_solv[SER].push_back(23345.555771001076);
    3172          10 :   parameter_solv[SER].push_back(-15312.694356014094);
    3173          10 :   parameter_solv[SER].push_back(3013.8428466148);
    3174             : 
    3175          10 :   parameter_solv[THR].push_back(15020.953600119403);
    3176          10 :   parameter_solv[THR].push_back(-61.91004832631006);
    3177          10 :   parameter_solv[THR].push_back(-27814.537889259853);
    3178          10 :   parameter_solv[THR].push_back(-7532.227289701552);
    3179          10 :   parameter_solv[THR].push_back(50586.30566118166);
    3180          10 :   parameter_solv[THR].push_back(-35943.866131120165);
    3181          10 :   parameter_solv[THR].push_back(7880.093558764326);
    3182             : 
    3183          10 :   parameter_solv[VAL].push_back(19647.628900119355);
    3184          10 :   parameter_solv[VAL].push_back(-89.04983250107853);
    3185          10 :   parameter_solv[VAL].push_back(-38050.09958470928);
    3186          10 :   parameter_solv[VAL].push_back(-10921.427112288537);
    3187          10 :   parameter_solv[VAL].push_back(72774.32322962297);
    3188          10 :   parameter_solv[VAL].push_back(-52689.060152305225);
    3189          10 :   parameter_solv[VAL].push_back(11806.492503632868);
    3190             : 
    3191          10 :   parameter_solv[ALA].push_back(7515.156100119276);
    3192          10 :   parameter_solv[ALA].push_back(-20.226381685697746);
    3193          10 :   parameter_solv[ALA].push_back(-11761.841094237716);
    3194          10 :   parameter_solv[ALA].push_back(-2341.4929468980367);
    3195          10 :   parameter_solv[ALA].push_back(16545.385777961936);
    3196          10 :   parameter_solv[ALA].push_back(-10397.175253025776);
    3197          10 :   parameter_solv[ALA].push_back(1921.5264606725107);
    3198             : 
    3199          10 :   parameter_solv[GLY].push_back(3594.002500119159);
    3200          10 :   parameter_solv[GLY].push_back(-6.910836154887606);
    3201          10 :   parameter_solv[GLY].push_back(-4937.354220666574);
    3202          10 :   parameter_solv[GLY].push_back(-785.4549468992149);
    3203          10 :   parameter_solv[GLY].push_back(5852.854429532936);
    3204          10 :   parameter_solv[GLY].push_back(-3391.2927115487832);
    3205          10 :   parameter_solv[GLY].push_back(552.3280571490722);
    3206             : 
    3207          10 :   parameter_solv[HIS].push_back(22888.664100119073);
    3208          10 :   parameter_solv[HIS].push_back(-133.86265270962434);
    3209          10 :   parameter_solv[HIS].push_back(-57533.51591635819);
    3210          10 :   parameter_solv[HIS].push_back(-21767.293192014684);
    3211          10 :   parameter_solv[HIS].push_back(161255.14120001195);
    3212          10 :   parameter_solv[HIS].push_back(-142176.64081149307);
    3213          10 :   parameter_solv[HIS].push_back(39642.61185646193);
    3214             : 
    3215          10 :   parameter_mix[TRP].push_back(48294.0117571196);
    3216          10 :   parameter_mix[TRP].push_back(-205.45879626487798);
    3217          10 :   parameter_mix[TRP].push_back(-148816.1858118254);
    3218          10 :   parameter_mix[TRP].push_back(-54968.030079609875);
    3219          10 :   parameter_mix[TRP].push_back(491793.79967057955);
    3220          10 :   parameter_mix[TRP].push_back(-476312.9117969879);
    3221          10 :   parameter_mix[TRP].push_back(144159.96165644142);
    3222             : 
    3223          10 :   parameter_mix[TYR].push_back(36984.20240312081);
    3224          10 :   parameter_mix[TYR].push_back(-83.86380083812203);
    3225          10 :   parameter_mix[TYR].push_back(-108820.52211887162);
    3226          10 :   parameter_mix[TYR].push_back(-33934.69818901515);
    3227          10 :   parameter_mix[TYR].push_back(341504.736372253);
    3228          10 :   parameter_mix[TYR].push_back(-334008.1748614056);
    3229          10 :   parameter_mix[TYR].push_back(102033.08077851454);
    3230             : 
    3231          10 :   parameter_mix[PHE].push_back(32119.469231338233);
    3232          10 :   parameter_mix[PHE].push_back(-172.96940450568917);
    3233          10 :   parameter_mix[PHE].push_back(-85831.4326887122);
    3234          10 :   parameter_mix[PHE].push_back(-33193.32405438845);
    3235          10 :   parameter_mix[PHE].push_back(262940.64471909316);
    3236          10 :   parameter_mix[PHE].push_back(-243540.06898907054);
    3237          10 :   parameter_mix[PHE].push_back(71084.54387480798);
    3238             : 
    3239          10 :   parameter_mix[HIP].push_back(22833.36414923898);
    3240          10 :   parameter_mix[HIP].push_back(-134.0493955562186);
    3241          10 :   parameter_mix[HIP].push_back(-55325.55607328898);
    3242          10 :   parameter_mix[HIP].push_back(-21898.314938881984);
    3243          10 :   parameter_mix[HIP].push_back(159995.6912885654);
    3244          10 :   parameter_mix[HIP].push_back(-142968.19796084083);
    3245          10 :   parameter_mix[HIP].push_back(40417.44581470003);
    3246             : 
    3247          10 :   parameter_mix[ARG].push_back(31385.401600920715);
    3248          10 :   parameter_mix[ARG].push_back(36.114094042884254);
    3249          10 :   parameter_mix[ARG].push_back(-103730.44467490204);
    3250          10 :   parameter_mix[ARG].push_back(-27036.249157905615);
    3251          10 :   parameter_mix[ARG].push_back(347011.0339314942);
    3252          10 :   parameter_mix[ARG].push_back(-358879.9736802336);
    3253          10 :   parameter_mix[ARG].push_back(114432.18361399164);
    3254             : 
    3255          10 :   parameter_mix[LYS].push_back(25511.35812671878);
    3256          10 :   parameter_mix[LYS].push_back(-130.4381491986372);
    3257          10 :   parameter_mix[LYS].push_back(-69258.61236879184);
    3258          10 :   parameter_mix[LYS].push_back(-27066.36783798707);
    3259          10 :   parameter_mix[LYS].push_back(220092.65231165203);
    3260          10 :   parameter_mix[LYS].push_back(-207794.5056092443);
    3261          10 :   parameter_mix[LYS].push_back(61665.57004630315);
    3262             : 
    3263          10 :   parameter_mix[CYS].push_back(11505.517261618916);
    3264          10 :   parameter_mix[CYS].push_back(-33.60468076978334);
    3265          10 :   parameter_mix[CYS].push_back(-18328.882710004465);
    3266          10 :   parameter_mix[CYS].push_back(-3956.9113649567626);
    3267          10 :   parameter_mix[CYS].push_back(27546.35146501212);
    3268          10 :   parameter_mix[CYS].push_back(-18024.826330595406);
    3269          10 :   parameter_mix[CYS].push_back(3551.2207387570024);
    3270             : 
    3271          10 :   parameter_mix[CYX].push_back(10746.617793719070);
    3272          10 :   parameter_mix[CYX].push_back(-37.082746200650);
    3273          10 :   parameter_mix[CYX].push_back(-17871.552278655203);
    3274          10 :   parameter_mix[CYX].push_back(-4512.203184574789);
    3275          10 :   parameter_mix[CYX].push_back(30605.726711712588);
    3276          10 :   parameter_mix[CYX].push_back(-21530.684072275839);
    3277          10 :   parameter_mix[CYX].push_back(4694.601090758420);
    3278             : 
    3279          10 :   parameter_mix[ASP].push_back(13713.858501879382);
    3280          10 :   parameter_mix[ASP].push_back(-51.33286241257164);
    3281          10 :   parameter_mix[ASP].push_back(-23807.8549764091);
    3282          10 :   parameter_mix[ASP].push_back(-6153.667315935503);
    3283          10 :   parameter_mix[ASP].push_back(41296.118377286424);
    3284          10 :   parameter_mix[ASP].push_back(-28740.28391184026);
    3285          10 :   parameter_mix[ASP].push_back(6132.671533319127);
    3286             : 
    3287          10 :   parameter_mix[GLU].push_back(19156.03660739947);
    3288          10 :   parameter_mix[GLU].push_back(-110.90600703589246);
    3289          10 :   parameter_mix[GLU].push_back(-40319.3351514524);
    3290          10 :   parameter_mix[GLU].push_back(-14679.813393816446);
    3291          10 :   parameter_mix[GLU].push_back(96769.28565573556);
    3292          10 :   parameter_mix[GLU].push_back(-77909.09315520026);
    3293          10 :   parameter_mix[GLU].push_back(19770.047062759568);
    3294             : 
    3295          10 :   parameter_mix[ILE].push_back(20693.06215917923);
    3296          10 :   parameter_mix[ILE].push_back(-102.87208880594848);
    3297          10 :   parameter_mix[ILE].push_back(-41080.44036311675);
    3298          10 :   parameter_mix[ILE].push_back(-12874.439649378206);
    3299          10 :   parameter_mix[ILE].push_back(84947.33147117581);
    3300          10 :   parameter_mix[ILE].push_back(-63779.07871450237);
    3301          10 :   parameter_mix[ILE].push_back(14938.919981690511);
    3302             : 
    3303          10 :   parameter_mix[LEU].push_back(20693.062159179233);
    3304          10 :   parameter_mix[LEU].push_back(-114.09539845409269);
    3305          10 :   parameter_mix[LEU].push_back(-42417.3431074524);
    3306          10 :   parameter_mix[LEU].push_back(-14393.801090829746);
    3307          10 :   parameter_mix[LEU].push_back(93640.48403643962);
    3308          10 :   parameter_mix[LEU].push_back(-71990.10354816525);
    3309          10 :   parameter_mix[LEU].push_back(17299.01082057651);
    3310             : 
    3311          10 :   parameter_mix[MET].push_back(22400.800002738917);
    3312          10 :   parameter_mix[MET].push_back(-138.14469221559762);
    3313          10 :   parameter_mix[MET].push_back(-53013.97694299946);
    3314          10 :   parameter_mix[MET].push_back(-21079.899452619244);
    3315          10 :   parameter_mix[MET].push_back(148607.1089339919);
    3316          10 :   parameter_mix[MET].push_back(-129827.63962878387);
    3317          10 :   parameter_mix[MET].push_back(35882.3297822684);
    3318             : 
    3319          10 :   parameter_mix[ASN].push_back(14384.287416519475);
    3320          10 :   parameter_mix[ASN].push_back(-55.24976731179147);
    3321          10 :   parameter_mix[ASN].push_back(-25372.978199926372);
    3322          10 :   parameter_mix[ASN].push_back(-6646.452004616925);
    3323          10 :   parameter_mix[ASN].push_back(44594.5027556148);
    3324          10 :   parameter_mix[ASN].push_back(-31202.511764907107);
    3325          10 :   parameter_mix[ASN].push_back(6703.764135873442);
    3326             : 
    3327          10 :   parameter_mix[PRO].push_back(13503.797145659117);
    3328          10 :   parameter_mix[PRO].push_back(-38.58316011847087);
    3329          10 :   parameter_mix[PRO].push_back(-21446.17847324053);
    3330          10 :   parameter_mix[PRO].push_back(-4480.55896170459);
    3331          10 :   parameter_mix[PRO].push_back(31274.287350083254);
    3332          10 :   parameter_mix[PRO].push_back(-19984.249229169505);
    3333          10 :   parameter_mix[PRO].push_back(3782.272312712745);
    3334             : 
    3335          10 :   parameter_mix[GLN].push_back(19938.23724683901);
    3336          10 :   parameter_mix[GLN].push_back(-121.24884503048865);
    3337          10 :   parameter_mix[GLN].push_back(-43928.589472297834);
    3338          10 :   parameter_mix[GLN].push_back(-16805.069757865473);
    3339          10 :   parameter_mix[GLN].push_back(112831.61348476357);
    3340          10 :   parameter_mix[GLN].push_back(-93979.08819184235);
    3341          10 :   parameter_mix[GLN].push_back(24741.563493163732);
    3342             : 
    3343          10 :   parameter_mix[SER].push_back(8813.67020471935);
    3344          10 :   parameter_mix[SER].push_back(-18.291615317790175);
    3345          10 :   parameter_mix[SER].push_back(-12585.074732466266);
    3346          10 :   parameter_mix[SER].push_back(-2064.454891600786);
    3347          10 :   parameter_mix[SER].push_back(15273.905065790364);
    3348          10 :   parameter_mix[SER].push_back(-8813.056005263466);
    3349          10 :   parameter_mix[SER].push_back(1404.9812302289881);
    3350             : 
    3351          10 :   parameter_mix[THR].push_back(13233.997179639062);
    3352          10 :   parameter_mix[THR].push_back(-39.40454157416847);
    3353          10 :   parameter_mix[THR].push_back(-21430.58717233547);
    3354          10 :   parameter_mix[THR].push_back(-4566.332853710876);
    3355          10 :   parameter_mix[THR].push_back(31717.497780073558);
    3356          10 :   parameter_mix[THR].push_back(-20299.614304281313);
    3357          10 :   parameter_mix[THR].push_back(3837.207224537505);
    3358             : 
    3359          10 :   parameter_mix[VAL].push_back(15135.438016299158);
    3360          10 :   parameter_mix[VAL].push_back(-51.415141550353205);
    3361          10 :   parameter_mix[VAL].push_back(-25859.078442379723);
    3362          10 :   parameter_mix[VAL].push_back(-6007.697291593915);
    3363          10 :   parameter_mix[VAL].push_back(40997.969600345634);
    3364          10 :   parameter_mix[VAL].push_back(-27036.257386814148);
    3365          10 :   parameter_mix[VAL].push_back(5328.922363811635);
    3366             : 
    3367          10 :   parameter_mix[ALA].push_back(6586.942863819189);
    3368          10 :   parameter_mix[ALA].push_back(-10.96713559950907);
    3369          10 :   parameter_mix[ALA].push_back(-8758.836131731925);
    3370          10 :   parameter_mix[ALA].push_back(-1223.1723720922605);
    3371          10 :   parameter_mix[ALA].push_back(9475.182453543037);
    3372          10 :   parameter_mix[ALA].push_back(-5124.611191433804);
    3373          10 :   parameter_mix[ALA].push_back(721.7625962949869);
    3374             : 
    3375          10 :   parameter_mix[GLY].push_back(3596.0718542192762);
    3376          10 :   parameter_mix[GLY].push_back(-4.079285964028122);
    3377          10 :   parameter_mix[GLY].push_back(-4089.4217504382686);
    3378          10 :   parameter_mix[GLY].push_back(-450.9650932154967);
    3379          10 :   parameter_mix[GLY].push_back(3737.026778223427);
    3380          10 :   parameter_mix[GLY].push_back(-1862.9856575810572);
    3381          10 :   parameter_mix[GLY].push_back(222.97288276257262);
    3382             : 
    3383          10 :   parameter_mix[HIS].push_back(21779.124723299232);
    3384          10 :   parameter_mix[HIS].push_back(-131.4603421188538);
    3385          10 :   parameter_mix[HIS].push_back(-49068.74667421681);
    3386          10 :   parameter_mix[HIS].push_back(-18685.909496392127);
    3387          10 :   parameter_mix[HIS].push_back(127724.60792384286);
    3388          10 :   parameter_mix[HIS].push_back(-107419.22159440348);
    3389          10 :   parameter_mix[HIS].push_back(28577.228634530744);
    3390             : 
    3391          10 :   parameter_vac[TRP].push_back(9599.949107368187);
    3392          10 :   parameter_vac[TRP].push_back(-66.35331786175249);
    3393          10 :   parameter_vac[TRP].push_back(-26311.640290970638);
    3394          10 :   parameter_vac[TRP].push_back(-11577.314600529338);
    3395          10 :   parameter_vac[TRP].push_back(85847.52554160352);
    3396          10 :   parameter_vac[TRP].push_back(-79417.17065742958);
    3397          10 :   parameter_vac[TRP].push_back(23090.348430572863);
    3398             : 
    3399          10 :   parameter_vac[TYR].push_back(7393.553846412945);
    3400          10 :   parameter_vac[TYR].push_back(-27.51954035778316);
    3401          10 :   parameter_vac[TYR].push_back(-20329.10485615286);
    3402          10 :   parameter_vac[TYR].push_back(-7444.276340508767);
    3403          10 :   parameter_vac[TYR].push_back(66343.22315132803);
    3404          10 :   parameter_vac[TYR].push_back(-64470.58721639446);
    3405          10 :   parameter_vac[TYR].push_back(19614.63563898146);
    3406             : 
    3407          10 :   parameter_vac[PHE].push_back(6081.874997705279);
    3408          10 :   parameter_vac[PHE].push_back(-40.474695969500104);
    3409          10 :   parameter_vac[PHE].push_back(-14354.627390498901);
    3410          10 :   parameter_vac[PHE].push_back(-6156.69750315959);
    3411          10 :   parameter_vac[PHE].push_back(42580.84239395237);
    3412          10 :   parameter_vac[PHE].push_back(-37704.09749809582);
    3413          10 :   parameter_vac[PHE].push_back(10543.005717478625);
    3414             : 
    3415          10 :   parameter_vac[HIP].push_back(5325.791987063724);
    3416          10 :   parameter_vac[HIP].push_back(-35.512112257530156);
    3417          10 :   parameter_vac[HIP].push_back(-11488.443296477566);
    3418          10 :   parameter_vac[HIP].push_back(-4916.724935318093);
    3419          10 :   parameter_vac[HIP].push_back(32134.338675979947);
    3420          10 :   parameter_vac[HIP].push_back(-27388.387595464188);
    3421          10 :   parameter_vac[HIP].push_back(7359.899986748838);
    3422             : 
    3423          10 :   parameter_vac[ARG].push_back(7220.306892248294);
    3424          10 :   parameter_vac[ARG].push_back(-20.65912886190997);
    3425          10 :   parameter_vac[ARG].push_back(-22700.70129646048);
    3426          10 :   parameter_vac[ARG].push_back(-8696.901551172636);
    3427          10 :   parameter_vac[ARG].push_back(83641.36257312517);
    3428          10 :   parameter_vac[ARG].push_back(-85237.33676336925);
    3429          10 :   parameter_vac[ARG].push_back(26899.162688310953);
    3430             : 
    3431          10 :   parameter_vac[LYS].push_back(5038.613120729022);
    3432          10 :   parameter_vac[LYS].push_back(-34.08366887546492);
    3433          10 :   parameter_vac[LYS].push_back(-12812.921120433106);
    3434          10 :   parameter_vac[LYS].push_back(-5843.761329082788);
    3435          10 :   parameter_vac[LYS].push_back(42419.08427856609);
    3436          10 :   parameter_vac[LYS].push_back(-39460.49038159249);
    3437          10 :   parameter_vac[LYS].push_back(11542.320830663035);
    3438             : 
    3439          10 :   parameter_vac[CYS].push_back(2915.0458981763995);
    3440          10 :   parameter_vac[CYS].push_back(-5.380571839804511);
    3441          10 :   parameter_vac[CYS].push_back(-3865.366285883624);
    3442          10 :   parameter_vac[CYS].push_back(-602.3275271136284);
    3443          10 :   parameter_vac[CYS].push_back(4524.133086072617);
    3444          10 :   parameter_vac[CYS].push_back(-2537.87137720241);
    3445          10 :   parameter_vac[CYS].push_back(381.52870758240016);
    3446             : 
    3447          10 :   parameter_vac[CYX].push_back(2808.068549348085);
    3448          10 :   parameter_vac[CYX].push_back(-7.372260063948);
    3449          10 :   parameter_vac[CYX].push_back(-4017.492317531980);
    3450          10 :   parameter_vac[CYX].push_back(-840.151815748375);
    3451          10 :   parameter_vac[CYX].push_back(5800.074437790741);
    3452          10 :   parameter_vac[CYX].push_back(-3637.868824045027);
    3453          10 :   parameter_vac[CYX].push_back(659.528934122407);
    3454             : 
    3455          10 :   parameter_vac[ASP].push_back(3479.750728224898);
    3456          10 :   parameter_vac[ASP].push_back(-10.33897891836596);
    3457          10 :   parameter_vac[ASP].push_back(-5382.628188436401);
    3458          10 :   parameter_vac[ASP].push_back(-1183.8060939576694);
    3459          10 :   parameter_vac[ASP].push_back(8100.082378727997);
    3460          10 :   parameter_vac[ASP].push_back(-5162.630696148773);
    3461          10 :   parameter_vac[ASP].push_back(958.993022379732);
    3462             : 
    3463          10 :   parameter_vac[GLU].push_back(4487.461543955491);
    3464          10 :   parameter_vac[GLU].push_back(-26.671865751817936);
    3465          10 :   parameter_vac[GLU].push_back(-8829.738168429001);
    3466          10 :   parameter_vac[GLU].push_back(-3297.668395415257);
    3467          10 :   parameter_vac[GLU].push_back(20686.457747123466);
    3468          10 :   parameter_vac[GLU].push_back(-16030.814134196151);
    3469          10 :   parameter_vac[GLU].push_back(3858.4457728083275);
    3470             : 
    3471          10 :   parameter_vac[ILE].push_back(3842.5968201937776);
    3472          10 :   parameter_vac[ILE].push_back(-13.848165050578492);
    3473          10 :   parameter_vac[ILE].push_back(-6480.062699452774);
    3474          10 :   parameter_vac[ILE].push_back(-1636.3888925440413);
    3475          10 :   parameter_vac[ILE].push_back(10967.333210698738);
    3476          10 :   parameter_vac[ILE].push_back(-7483.704914714421);
    3477          10 :   parameter_vac[ILE].push_back(1548.5696047594895);
    3478             : 
    3479          10 :   parameter_vac[LEU].push_back(3842.5968201937785);
    3480          10 :   parameter_vac[LEU].push_back(-16.2745108270949);
    3481          10 :   parameter_vac[LEU].push_back(-6807.110269770606);
    3482          10 :   parameter_vac[LEU].push_back(-1926.6303434106014);
    3483          10 :   parameter_vac[LEU].push_back(12577.952756390941);
    3484          10 :   parameter_vac[LEU].push_back(-8829.40489330961);
    3485          10 :   parameter_vac[LEU].push_back(1882.919316016889);
    3486             : 
    3487          10 :   parameter_vac[MET].push_back(4898.512892967389);
    3488          10 :   parameter_vac[MET].push_back(-30.588244886468207);
    3489          10 :   parameter_vac[MET].push_back(-10159.093665859045);
    3490          10 :   parameter_vac[MET].push_back(-4025.0261508449653);
    3491          10 :   parameter_vac[MET].push_back(26007.394369425827);
    3492          10 :   parameter_vac[MET].push_back(-21199.218680206573);
    3493          10 :   parameter_vac[MET].push_back(5423.004225853842);
    3494             : 
    3495          10 :   parameter_vac[ASN].push_back(3598.1423998115492);
    3496          10 :   parameter_vac[ASN].push_back(-10.357995638888545);
    3497          10 :   parameter_vac[ASN].push_back(-5565.603011562138);
    3498          10 :   parameter_vac[ASN].push_back(-1190.3294930971967);
    3499          10 :   parameter_vac[ASN].push_back(8227.920711951123);
    3500          10 :   parameter_vac[ASN].push_back(-5222.61541118056);
    3501          10 :   parameter_vac[ASN].push_back(968.593406702772);
    3502             : 
    3503          10 :   parameter_vac[PRO].push_back(2702.925890807494);
    3504          10 :   parameter_vac[PRO].push_back(-4.11690159421177);
    3505          10 :   parameter_vac[PRO].push_back(-3395.325331307625);
    3506          10 :   parameter_vac[PRO].push_back(-458.95242128002894);
    3507          10 :   parameter_vac[PRO].push_back(3584.3640448715823);
    3508          10 :   parameter_vac[PRO].push_back(-1921.4140769384692);
    3509          10 :   parameter_vac[PRO].push_back(267.08577848319516);
    3510             : 
    3511          10 :   parameter_vac[GLN].push_back(4621.773132292556);
    3512          10 :   parameter_vac[GLN].push_back(-29.511778489038818);
    3513          10 :   parameter_vac[GLN].push_back(-9486.077450010192);
    3514          10 :   parameter_vac[GLN].push_back(-3768.5756897489828);
    3515          10 :   parameter_vac[GLN].push_back(23828.07111260487);
    3516          10 :   parameter_vac[GLN].push_back(-19110.205836780202);
    3517          10 :   parameter_vac[GLN].push_back(4791.718204894083);
    3518             : 
    3519          10 :   parameter_vac[SER].push_back(2115.1504654043965);
    3520          10 :   parameter_vac[SER].push_back(-2.4158378234251234);
    3521          10 :   parameter_vac[SER].push_back(-2488.1131972903822);
    3522          10 :   parameter_vac[SER].push_back(-263.64072945387693);
    3523          10 :   parameter_vac[SER].push_back(2251.376687850687);
    3524          10 :   parameter_vac[SER].push_back(-1066.0790768852626);
    3525          10 :   parameter_vac[SER].push_back(105.5155397911316);
    3526             : 
    3527          10 :   parameter_vac[THR].push_back(2914.9061707158835);
    3528          10 :   parameter_vac[THR].push_back(-5.032844592364407);
    3529          10 :   parameter_vac[THR].push_back(-3903.2546253886653);
    3530          10 :   parameter_vac[THR].push_back(-559.4734271244915);
    3531          10 :   parameter_vac[THR].push_back(4315.044828297787);
    3532          10 :   parameter_vac[THR].push_back(-2331.211908177365);
    3533          10 :   parameter_vac[THR].push_back(323.76849758109853);
    3534             : 
    3535          10 :   parameter_vac[VAL].push_back(2914.8744247581953);
    3536          10 :   parameter_vac[VAL].push_back(-5.847217106105881);
    3537          10 :   parameter_vac[VAL].push_back(-4096.370479502377);
    3538          10 :   parameter_vac[VAL].push_back(-655.2917606620404);
    3539          10 :   parameter_vac[VAL].push_back(4888.77261250007);
    3540          10 :   parameter_vac[VAL].push_back(-2765.7552774385167);
    3541          10 :   parameter_vac[VAL].push_back(421.9081598033515);
    3542             : 
    3543          10 :   parameter_vac[ALA].push_back(1443.3438146824446);
    3544          10 :   parameter_vac[ALA].push_back(-1.1234573178567506);
    3545          10 :   parameter_vac[ALA].push_back(-1492.4547663363514);
    3546          10 :   parameter_vac[ALA].push_back(-121.47935619968672);
    3547          10 :   parameter_vac[ALA].push_back(1139.689871538201);
    3548          10 :   parameter_vac[ALA].push_back(-483.8336547914466);
    3549          10 :   parameter_vac[ALA].push_back(32.48231950404626);
    3550             : 
    3551          10 :   parameter_vac[GLY].push_back(899.5356000422925);
    3552          10 :   parameter_vac[GLY].push_back(-0.5200880084066986);
    3553          10 :   parameter_vac[GLY].push_back(-787.5892053280859);
    3554          10 :   parameter_vac[GLY].push_back(-56.07596224884467);
    3555          10 :   parameter_vac[GLY].push_back(546.4212287680981);
    3556          10 :   parameter_vac[GLY].push_back(-222.2667666932616);
    3557          10 :   parameter_vac[GLY].push_back(12.474587265791476);
    3558             : 
    3559          10 :   parameter_vac[HIS].push_back(5180.842705000207);
    3560          10 :   parameter_vac[HIS].push_back(-29.578973475252766);
    3561          10 :   parameter_vac[HIS].push_back(-10323.417251934066);
    3562          10 :   parameter_vac[HIS].push_back(-3788.977215582307);
    3563          10 :   parameter_vac[HIS].push_back(24427.720792289427);
    3564          10 :   parameter_vac[HIS].push_back(-19307.35836837878);
    3565          10 :   parameter_vac[HIS].push_back(4780.831414992477);
    3566             : 
    3567             :   // NUCLEIC ACIDS
    3568          10 :   parameter_solv[BB_PO3].push_back(1464.5929001192262);
    3569          10 :   parameter_solv[BB_PO3].push_back(-2.316908934494931);
    3570          10 :   parameter_solv[BB_PO3].push_back(-1882.4844584696532);
    3571          10 :   parameter_solv[BB_PO3].push_back(-258.8660305554736);
    3572          10 :   parameter_solv[BB_PO3].push_back(2007.5216385943972);
    3573          10 :   parameter_solv[BB_PO3].push_back(-1087.6423562424877);
    3574          10 :   parameter_solv[BB_PO3].push_back(154.89236486681165);
    3575             : 
    3576          10 :   parameter_solv[BB_PO2].push_back(575.5201001192197);
    3577          10 :   parameter_solv[BB_PO2].push_back(-0.6126595489733868);
    3578          10 :   parameter_solv[BB_PO2].push_back(-623.3371092254897);
    3579          10 :   parameter_solv[BB_PO2].push_back(-68.05795957022156);
    3580          10 :   parameter_solv[BB_PO2].push_back(561.8052621243662);
    3581          10 :   parameter_solv[BB_PO2].push_back(-283.39573309540344);
    3582          10 :   parameter_solv[BB_PO2].push_back(35.55001698010027);
    3583             : 
    3584          10 :   parameter_solv[BB_DNA].push_back(21211.009600118316);
    3585          10 :   parameter_solv[BB_DNA].push_back(-90.18805990529991);
    3586          10 :   parameter_solv[BB_DNA].push_back(-39731.1337351215);
    3587          10 :   parameter_solv[BB_DNA].push_back(-10920.373563712878);
    3588          10 :   parameter_solv[BB_DNA].push_back(72882.21702424977);
    3589          10 :   parameter_solv[BB_DNA].push_back(-51747.487078112754);
    3590          10 :   parameter_solv[BB_DNA].push_back(11308.67842901876);
    3591             : 
    3592          10 :   parameter_solv[BB_DNA_5].push_back(22737.624100119025);
    3593          10 :   parameter_solv[BB_DNA_5].push_back(-102.72714886664163);
    3594          10 :   parameter_solv[BB_DNA_5].push_back(-43685.329677789705);
    3595          10 :   parameter_solv[BB_DNA_5].push_back(-12564.259374093454);
    3596          10 :   parameter_solv[BB_DNA_5].push_back(83454.87540484876);
    3597          10 :   parameter_solv[BB_DNA_5].push_back(-60367.15652138888);
    3598          10 :   parameter_solv[BB_DNA_5].push_back(13507.33372986899);
    3599             : 
    3600          10 :   parameter_solv[BB_DNA_3].push_back(22737.62410011902);
    3601          10 :   parameter_solv[BB_DNA_3].push_back(-101.57816684452263);
    3602          10 :   parameter_solv[BB_DNA_3].push_back(-43488.53670557616);
    3603          10 :   parameter_solv[BB_DNA_3].push_back(-12345.056184958417);
    3604          10 :   parameter_solv[BB_DNA_3].push_back(81963.5236411489);
    3605          10 :   parameter_solv[BB_DNA_3].push_back(-58791.59443618196);
    3606          10 :   parameter_solv[BB_DNA_3].push_back(13003.199362335576);
    3607             : 
    3608          10 :   parameter_solv[BB_RNA].push_back(23953.752900120977);
    3609          10 :   parameter_solv[BB_RNA].push_back(-117.35779348824401);
    3610          10 :   parameter_solv[BB_RNA].push_back(-47644.41735332837);
    3611          10 :   parameter_solv[BB_RNA].push_back(-14641.556643789863);
    3612          10 :   parameter_solv[BB_RNA].push_back(96893.48627050382);
    3613          10 :   parameter_solv[BB_RNA].push_back(-72249.62534169314);
    3614          10 :   parameter_solv[BB_RNA].push_back(16792.05552105538);
    3615             : 
    3616          10 :   parameter_solv[BB_RNA_5].push_back(25574.406400119024);
    3617          10 :   parameter_solv[BB_RNA_5].push_back(-131.99642772933734);
    3618          10 :   parameter_solv[BB_RNA_5].push_back(-52136.51404531249);
    3619          10 :   parameter_solv[BB_RNA_5].push_back(-16682.14273917604);
    3620          10 :   parameter_solv[BB_RNA_5].push_back(110278.019216394);
    3621          10 :   parameter_solv[BB_RNA_5].push_back(-83715.92027818545);
    3622          10 :   parameter_solv[BB_RNA_5].push_back(19875.891337706045);
    3623             : 
    3624          10 :   parameter_solv[BB_RNA_3].push_back(25574.406400119024);
    3625          10 :   parameter_solv[BB_RNA_3].push_back(-127.96875237036166);
    3626          10 :   parameter_solv[BB_RNA_3].push_back(-51407.183917584385);
    3627          10 :   parameter_solv[BB_RNA_3].push_back(-15922.900669975606);
    3628          10 :   parameter_solv[BB_RNA_3].push_back(105078.58889106264);
    3629          10 :   parameter_solv[BB_RNA_3].push_back(-78289.16276190648);
    3630          10 :   parameter_solv[BB_RNA_3].push_back(18156.83214344118);
    3631             : 
    3632          10 :   parameter_solv[BASE_A].push_back(13282.562500119211);
    3633          10 :   parameter_solv[BASE_A].push_back(-76.45124168404048);
    3634          10 :   parameter_solv[BASE_A].push_back(-28376.06994108963);
    3635          10 :   parameter_solv[BASE_A].push_back(-9972.910773722022);
    3636          10 :   parameter_solv[BASE_A].push_back(65873.86341939073);
    3637          10 :   parameter_solv[BASE_A].push_back(-52064.33492910885);
    3638          10 :   parameter_solv[BASE_A].push_back(12931.608989412513);
    3639             : 
    3640          10 :   parameter_solv[BASE_C].push_back(10600.76160011891);
    3641          10 :   parameter_solv[BASE_C].push_back(-49.1670871249108);
    3642          10 :   parameter_solv[BASE_C].push_back(-20239.818742072875);
    3643          10 :   parameter_solv[BASE_C].push_back(-6020.278780090207);
    3644          10 :   parameter_solv[BASE_C].push_back(39632.13288981881);
    3645          10 :   parameter_solv[BASE_C].push_back(-28954.779736165576);
    3646          10 :   parameter_solv[BASE_C].push_back(6551.541109526305);
    3647             : 
    3648          10 :   parameter_solv[BASE_G].push_back(15470.384400119934);
    3649          10 :   parameter_solv[BASE_G].push_back(-93.8013620200972);
    3650          10 :   parameter_solv[BASE_G].push_back(-36188.29687013545);
    3651          10 :   parameter_solv[BASE_G].push_back(-13717.685098209471);
    3652          10 :   parameter_solv[BASE_G].push_back(95658.18473657136);
    3653          10 :   parameter_solv[BASE_G].push_back(-81262.37811451119);
    3654          10 :   parameter_solv[BASE_G].push_back(21841.903930943085);
    3655             : 
    3656          10 :   parameter_solv[BASE_T].push_back(17210.81610011936);
    3657          10 :   parameter_solv[BASE_T].push_back(-93.10189802920208);
    3658          10 :   parameter_solv[BASE_T].push_back(-36466.51927689957);
    3659          10 :   parameter_solv[BASE_T].push_back(-12425.55615716932);
    3660          10 :   parameter_solv[BASE_T].push_back(83847.427808925);
    3661          10 :   parameter_solv[BASE_T].push_back(-66735.64997846584);
    3662          10 :   parameter_solv[BASE_T].push_back(16757.3463987507);
    3663             : 
    3664          10 :   parameter_solv[BASE_U].push_back(10909.802500119395);
    3665          10 :   parameter_solv[BASE_U].push_back(-46.17712672768298);
    3666          10 :   parameter_solv[BASE_U].push_back(-20149.67695512526);
    3667          10 :   parameter_solv[BASE_U].push_back(-5590.242961204435);
    3668          10 :   parameter_solv[BASE_U].push_back(37169.2740983132);
    3669          10 :   parameter_solv[BASE_U].push_back(-26475.631627167604);
    3670          10 :   parameter_solv[BASE_U].push_back(5808.201015156168);
    3671             : 
    3672          10 :   parameter_mix[BB_PO3].push_back(3061.4050527391964);
    3673          10 :   parameter_mix[BB_PO3].push_back(-2.022452986623699);
    3674          10 :   parameter_mix[BB_PO3].push_back(-2998.2603666141363);
    3675          10 :   parameter_mix[BB_PO3].push_back(-218.44256405859076);
    3676          10 :   parameter_mix[BB_PO3].push_back(2113.3633950628328);
    3677          10 :   parameter_mix[BB_PO3].push_back(-868.4021757095805);
    3678          10 :   parameter_mix[BB_PO3].push_back(52.19052064107954);
    3679             : 
    3680          10 :   parameter_mix[BB_PO2].push_back(1487.2888381188868);
    3681          10 :   parameter_mix[BB_PO2].push_back(-0.6155376265599789);
    3682          10 :   parameter_mix[BB_PO2].push_back(-1181.5076027691764);
    3683          10 :   parameter_mix[BB_PO2].push_back(-66.25027450710594);
    3684          10 :   parameter_mix[BB_PO2].push_back(697.0421991965113);
    3685          10 :   parameter_mix[BB_PO2].push_back(-261.8559466354847);
    3686          10 :   parameter_mix[BB_PO2].push_back(9.974337082362194);
    3687             : 
    3688          10 :   parameter_mix[BB_DNA].push_back(17766.29474499878);
    3689          10 :   parameter_mix[BB_DNA].push_back(-48.97330188566253);
    3690          10 :   parameter_mix[BB_DNA].push_back(-28199.563596327207);
    3691          10 :   parameter_mix[BB_DNA].push_back(-5623.82085602494);
    3692          10 :   parameter_mix[BB_DNA].push_back(39646.22954828498);
    3693          10 :   parameter_mix[BB_DNA].push_back(-24658.81157651943);
    3694          10 :   parameter_mix[BB_DNA].push_back(4453.73906293146);
    3695             : 
    3696          10 :   parameter_mix[BB_DNA_5].push_back(18696.09744203927);
    3697          10 :   parameter_mix[BB_DNA_5].push_back(-56.29408880833802);
    3698          10 :   parameter_mix[BB_DNA_5].push_back(-30486.108599707608);
    3699          10 :   parameter_mix[BB_DNA_5].push_back(-6524.195857141158);
    3700          10 :   parameter_mix[BB_DNA_5].push_back(45280.80142686446);
    3701          10 :   parameter_mix[BB_DNA_5].push_back(-29007.98616567993);
    3702          10 :   parameter_mix[BB_DNA_5].push_back(5488.566965501818);
    3703             : 
    3704          10 :   parameter_mix[BB_DNA_3].push_back(18696.097442039274);
    3705          10 :   parameter_mix[BB_DNA_3].push_back(-55.5645003501971);
    3706          10 :   parameter_mix[BB_DNA_3].push_back(-30422.262113654506);
    3707          10 :   parameter_mix[BB_DNA_3].push_back(-6409.659659309089);
    3708          10 :   parameter_mix[BB_DNA_3].push_back(44605.76043515699);
    3709          10 :   parameter_mix[BB_DNA_3].push_back(-28295.62152988411);
    3710          10 :   parameter_mix[BB_DNA_3].push_back(5262.5765863484);
    3711             : 
    3712          10 :   parameter_mix[BB_RNA].push_back(21356.177105457366);
    3713          10 :   parameter_mix[BB_RNA].push_back(-76.73490647754872);
    3714          10 :   parameter_mix[BB_RNA].push_back(-36845.234814782816);
    3715          10 :   parameter_mix[BB_RNA].push_back(-9066.559625582728);
    3716          10 :   parameter_mix[BB_RNA].push_back(61167.998793390485);
    3717          10 :   parameter_mix[BB_RNA].push_back(-41467.23384423218);
    3718          10 :   parameter_mix[BB_RNA].push_back(8518.937793863257);
    3719             : 
    3720          10 :   parameter_mix[BB_RNA_5].push_back(22386.63276427916);
    3721          10 :   parameter_mix[BB_RNA_5].push_back(-85.70426456933487);
    3722          10 :   parameter_mix[BB_RNA_5].push_back(-39490.50298502025);
    3723          10 :   parameter_mix[BB_RNA_5].push_back(-10223.702594972712);
    3724          10 :   parameter_mix[BB_RNA_5].push_back(68450.60459618448);
    3725          10 :   parameter_mix[BB_RNA_5].push_back(-47409.91098159006);
    3726          10 :   parameter_mix[BB_RNA_5].push_back(10031.136138513202);
    3727             : 
    3728          10 :   parameter_mix[BB_RNA_3].push_back(22386.63276427916);
    3729          10 :   parameter_mix[BB_RNA_3].push_back(-81.93760812351479);
    3730          10 :   parameter_mix[BB_RNA_3].push_back(-39031.70571520093);
    3731          10 :   parameter_mix[BB_RNA_3].push_back(-9666.316086142708);
    3732          10 :   parameter_mix[BB_RNA_3].push_back(65120.07128126262);
    3733          10 :   parameter_mix[BB_RNA_3].push_back(-44110.13603681317);
    3734          10 :   parameter_mix[BB_RNA_3].push_back(9036.76498256983);
    3735             : 
    3736          10 :   parameter_mix[BASE_A].push_back(15897.31116611889);
    3737          10 :   parameter_mix[BASE_A].push_back(-67.86385832953485);
    3738          10 :   parameter_mix[BASE_A].push_back(-28851.754660951636);
    3739          10 :   parameter_mix[BASE_A].push_back(-8144.431687170413);
    3740          10 :   parameter_mix[BASE_A].push_back(53606.39082954489);
    3741          10 :   parameter_mix[BASE_A].push_back(-38083.51243782253);
    3742          10 :   parameter_mix[BASE_A].push_back(8293.47107993253);
    3743             : 
    3744          10 :   parameter_mix[BASE_C].push_back(11733.2828871599);
    3745          10 :   parameter_mix[BASE_C].push_back(-38.76775400274115);
    3746          10 :   parameter_mix[BASE_C].push_back(-19318.84666423464);
    3747          10 :   parameter_mix[BASE_C].push_back(-4507.915522704176);
    3748          10 :   parameter_mix[BASE_C].push_back(30576.57671286052);
    3749          10 :   parameter_mix[BASE_C].push_back(-20132.46696910844);
    3750          10 :   parameter_mix[BASE_C].push_back(3947.8727087996162);
    3751             : 
    3752          10 :   parameter_mix[BASE_G].push_back(19146.612417237808);
    3753          10 :   parameter_mix[BASE_G].push_back(-102.37046638004914);
    3754          10 :   parameter_mix[BASE_G].push_back(-38718.96478190546);
    3755          10 :   parameter_mix[BASE_G].push_back(-13238.106081860074);
    3756          10 :   parameter_mix[BASE_G].push_back(87309.07460288722);
    3757          10 :   parameter_mix[BASE_G].push_back(-68364.82442984737);
    3758          10 :   parameter_mix[BASE_G].push_back(16815.362401369);
    3759             : 
    3760          10 :   parameter_mix[BASE_T].push_back(17050.440260819163);
    3761          10 :   parameter_mix[BASE_T].push_back(-76.33750600643376);
    3762          10 :   parameter_mix[BASE_T].push_back(-31849.539096715005);
    3763          10 :   parameter_mix[BASE_T].push_back(-9484.498992751434);
    3764          10 :   parameter_mix[BASE_T].push_back(62881.895771680494);
    3765          10 :   parameter_mix[BASE_T].push_back(-46531.948557759024);
    3766          10 :   parameter_mix[BASE_T].push_back(10734.196329884822);
    3767             : 
    3768          10 :   parameter_mix[BASE_U].push_back(11904.095265219023);
    3769          10 :   parameter_mix[BASE_U].push_back(-34.67511054915295);
    3770          10 :   parameter_mix[BASE_U].push_back(-18842.275003104005);
    3771          10 :   parameter_mix[BASE_U].push_back(-3993.1174764890684);
    3772          10 :   parameter_mix[BASE_U].push_back(27663.625106762345);
    3773          10 :   parameter_mix[BASE_U].push_back(-17577.387831701515);
    3774          10 :   parameter_mix[BASE_U].push_back(3273.183903219142);
    3775             : 
    3776          10 :   parameter_vac[BB_PO3].push_back(1599.7962466063982);
    3777          10 :   parameter_vac[BB_PO3].push_back(-0.2734304923675441);
    3778          10 :   parameter_vac[BB_PO3].push_back(-1023.9448073303214);
    3779          10 :   parameter_vac[BB_PO3].push_back(-28.78655166266909);
    3780          10 :   parameter_vac[BB_PO3].push_back(426.4382937268249);
    3781          10 :   parameter_vac[BB_PO3].push_back(-109.57771615730755);
    3782          10 :   parameter_vac[BB_PO3].push_back(-10.244595559424265);
    3783             : 
    3784          10 :   parameter_vac[BB_PO2].push_back(960.8822037291127);
    3785          10 :   parameter_vac[BB_PO2].push_back(-0.09312135742159174);
    3786          10 :   parameter_vac[BB_PO2].push_back(-469.39643497461844);
    3787          10 :   parameter_vac[BB_PO2].push_back(-9.779346709041985);
    3788          10 :   parameter_vac[BB_PO2].push_back(162.1581550003227);
    3789          10 :   parameter_vac[BB_PO2].push_back(-37.06686233305618);
    3790          10 :   parameter_vac[BB_PO2].push_back(-4.695586672655664);
    3791             : 
    3792          10 :   parameter_vac[BB_DNA].push_back(3720.2522996838984);
    3793          10 :   parameter_vac[BB_DNA].push_back(-5.4229642176938);
    3794          10 :   parameter_vac[BB_DNA].push_back(-4800.897672711981);
    3795          10 :   parameter_vac[BB_DNA].push_back(-597.2274673070993);
    3796          10 :   parameter_vac[BB_DNA].push_back(4825.908840953665);
    3797          10 :   parameter_vac[BB_DNA].push_back(-2451.397454446564);
    3798          10 :   parameter_vac[BB_DNA].push_back(294.93071756645685);
    3799             : 
    3800          10 :   parameter_vac[BB_DNA_5].push_back(3843.234214262163);
    3801          10 :   parameter_vac[BB_DNA_5].push_back(-6.423078416284452);
    3802          10 :   parameter_vac[BB_DNA_5].push_back(-5112.1216386963115);
    3803          10 :   parameter_vac[BB_DNA_5].push_back(-713.8373583426668);
    3804          10 :   parameter_vac[BB_DNA_5].push_back(5547.545382516269);
    3805          10 :   parameter_vac[BB_DNA_5].push_back(-2973.5659871174225);
    3806          10 :   parameter_vac[BB_DNA_5].push_back(407.2789106630427);
    3807             : 
    3808          10 :   parameter_vac[BB_DNA_3].push_back(3843.234214262163);
    3809          10 :   parameter_vac[BB_DNA_3].push_back(-6.268636561475645);
    3810          10 :   parameter_vac[BB_DNA_3].push_back(-5103.192931218086);
    3811          10 :   parameter_vac[BB_DNA_3].push_back(-693.8705734390547);
    3812          10 :   parameter_vac[BB_DNA_3].push_back(5443.979645097035);
    3813          10 :   parameter_vac[BB_DNA_3].push_back(-2871.4337477324893);
    3814          10 :   parameter_vac[BB_DNA_3].push_back(377.3062915349831);
    3815             : 
    3816          10 :   parameter_vac[BB_RNA].push_back(4760.071443398374);
    3817          10 :   parameter_vac[BB_RNA].push_back(-11.0990475402486);
    3818          10 :   parameter_vac[BB_RNA].push_back(-6934.713566418421);
    3819          10 :   parameter_vac[BB_RNA].push_back(-1256.5202524085096);
    3820          10 :   parameter_vac[BB_RNA].push_back(9024.962587066922);
    3821          10 :   parameter_vac[BB_RNA].push_back(-5386.842667932241);
    3822          10 :   parameter_vac[BB_RNA].push_back(907.42947751372);
    3823             : 
    3824          10 :   parameter_vac[BB_RNA_5].push_back(4899.051406033406);
    3825          10 :   parameter_vac[BB_RNA_5].push_back(-12.279240472628238);
    3826          10 :   parameter_vac[BB_RNA_5].push_back(-7276.273570813667);
    3827          10 :   parameter_vac[BB_RNA_5].push_back(-1400.9520839250868);
    3828          10 :   parameter_vac[BB_RNA_5].push_back(9912.215823228895);
    3829          10 :   parameter_vac[BB_RNA_5].push_back(-6079.2565270404075);
    3830          10 :   parameter_vac[BB_RNA_5].push_back(1073.53428175472);
    3831             : 
    3832          10 :   parameter_vac[BB_RNA_3].push_back(4899.051406033406);
    3833          10 :   parameter_vac[BB_RNA_3].push_back(-11.642804195148194);
    3834          10 :   parameter_vac[BB_RNA_3].push_back(-7213.774619570996);
    3835          10 :   parameter_vac[BB_RNA_3].push_back(-1317.4463949342964);
    3836          10 :   parameter_vac[BB_RNA_3].push_back(9450.928929264686);
    3837          10 :   parameter_vac[BB_RNA_3].push_back(-5643.856117200917);
    3838          10 :   parameter_vac[BB_RNA_3].push_back(949.4698817407918);
    3839             : 
    3840          10 :   parameter_vac[BASE_A].push_back(4756.697028810353);
    3841          10 :   parameter_vac[BASE_A].push_back(-12.158940746852812);
    3842          10 :   parameter_vac[BASE_A].push_back(-7106.473423744205);
    3843          10 :   parameter_vac[BASE_A].push_back(-1376.295184173137);
    3844          10 :   parameter_vac[BASE_A].push_back(9747.132255557788);
    3845          10 :   parameter_vac[BASE_A].push_back(-5900.026637038756);
    3846          10 :   parameter_vac[BASE_A].push_back(1004.6226388342955);
    3847             : 
    3848          10 :   parameter_vac[BASE_C].push_back(3246.698975674651);
    3849          10 :   parameter_vac[BASE_C].push_back(-6.125036521218687);
    3850          10 :   parameter_vac[BASE_C].push_back(-4280.666521437201);
    3851          10 :   parameter_vac[BASE_C].push_back(-684.0183580843932);
    3852          10 :   parameter_vac[BASE_C].push_back(5077.062889522692);
    3853          10 :   parameter_vac[BASE_C].push_back(-2870.3239317750963);
    3854          10 :   parameter_vac[BASE_C].push_back(434.51551177863547);
    3855             : 
    3856          10 :   parameter_vac[BASE_G].push_back(5924.105658596052);
    3857          10 :   parameter_vac[BASE_G].push_back(-23.097956587232552);
    3858          10 :   parameter_vac[BASE_G].push_back(-10149.526301285418);
    3859          10 :   parameter_vac[BASE_G].push_back(-2752.9166169522528);
    3860          10 :   parameter_vac[BASE_G].push_back(18239.32985385683);
    3861          10 :   parameter_vac[BASE_G].push_back(-12749.277858800957);
    3862          10 :   parameter_vac[BASE_G].push_back(2715.354663787367);
    3863             : 
    3864          10 :   parameter_vac[BASE_T].push_back(4222.889713694404);
    3865          10 :   parameter_vac[BASE_T].push_back(-12.15861456306705);
    3866          10 :   parameter_vac[BASE_T].push_back(-6395.50289789404);
    3867          10 :   parameter_vac[BASE_T].push_back(-1421.3942549301012);
    3868          10 :   parameter_vac[BASE_T].push_back(9757.061008720135);
    3869          10 :   parameter_vac[BASE_T].push_back(-6399.630933839126);
    3870          10 :   parameter_vac[BASE_T].push_back(1258.9874225605438);
    3871             : 
    3872          10 :   parameter_vac[BASE_U].push_back(3247.251361465539);
    3873          10 :   parameter_vac[BASE_U].push_back(-5.211020853261115);
    3874          10 :   parameter_vac[BASE_U].push_back(-4125.165310360279);
    3875          10 :   parameter_vac[BASE_U].push_back(-575.1860235473902);
    3876          10 :   parameter_vac[BASE_U].push_back(4457.6562621371495);
    3877          10 :   parameter_vac[BASE_U].push_back(-2368.7250146912766);
    3878          10 :   parameter_vac[BASE_U].push_back(313.23997718445014);
    3879             : 
    3880       35262 :   for(unsigned i=0; i<atoms.size(); ++i) {
    3881       35252 :     std::string Aname = pdb.getAtomName(atoms[i]);
    3882       35252 :     std::string Rname = pdb.getResidueName(atoms[i]);
    3883       35252 :     Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
    3884       35252 :     if(Rname=="ALA") {
    3885        1790 :       atoi[residue_atom[i]]=ALA;
    3886       33462 :     } else if(Rname=="ARG") {
    3887        2160 :       atoi[residue_atom[i]]=ARG;
    3888       31302 :     } else if(Rname=="ASN") {
    3889        1800 :       atoi[residue_atom[i]]=ASN;
    3890       29502 :     } else if(Rname=="ASP") {
    3891        1560 :       atoi[residue_atom[i]]=ASP;
    3892       27942 :     } else if(Rname=="CYS") {
    3893         120 :       atoi[residue_atom[i]]=CYS;
    3894       27822 :     } else if(Rname=="CYX") {
    3895           0 :       atoi[residue_atom[i]]=CYX;
    3896       27822 :     } else if(Rname=="GLN") {
    3897        2584 :       atoi[residue_atom[i]]=GLN;
    3898       25238 :     } else if(Rname=="GLU") {
    3899        1190 :       atoi[residue_atom[i]]=GLU;
    3900       24048 :     } else if(Rname=="GLY") {
    3901        1548 :       atoi[residue_atom[i]]=GLY;
    3902       22500 :     } else if(Rname=="HIS") {
    3903           0 :       atoi[residue_atom[i]]=HIS;
    3904       22500 :     } else if(Rname=="HID") {
    3905           0 :       atoi[residue_atom[i]]=HIS;
    3906       22500 :     } else if(Rname=="HIE") {
    3907         360 :       atoi[residue_atom[i]]=HIS;
    3908       22140 :     } else if(Rname=="HIP") {
    3909           0 :       atoi[residue_atom[i]]=HIP;
    3910             :       // CHARMM NAMING FOR PROTONATION STATES OF HISTIDINE
    3911       22140 :     } else if(Rname=="HSD") {
    3912           0 :       atoi[residue_atom[i]]=HIS;
    3913       22140 :     } else if(Rname=="HSE") {
    3914           0 :       atoi[residue_atom[i]]=HIS;
    3915       22140 :     } else if(Rname=="HSP") {
    3916           0 :       atoi[residue_atom[i]]=HIP;
    3917       22140 :     } else if(Rname=="ILE") {
    3918        2160 :       atoi[residue_atom[i]]=ILE;
    3919       19980 :     } else if(Rname=="LEU") {
    3920        3800 :       atoi[residue_atom[i]]=LEU;
    3921       16180 :     } else if(Rname=="LYS") {
    3922        2600 :       atoi[residue_atom[i]]=LYS;
    3923       13580 :     } else if(Rname=="MET") {
    3924        1368 :       atoi[residue_atom[i]]=MET;
    3925       12212 :     } else if(Rname=="PHE") {
    3926        2520 :       atoi[residue_atom[i]]=PHE;
    3927        9692 :     } else if(Rname=="PRO") {
    3928        1870 :       atoi[residue_atom[i]]=PRO;
    3929        7822 :     } else if(Rname=="SER") {
    3930        1272 :       atoi[residue_atom[i]]=SER;
    3931        6550 :     } else if(Rname=="THR") {
    3932        1204 :       atoi[residue_atom[i]]=THR;
    3933        5346 :     } else if(Rname=="TRP") {
    3934           0 :       atoi[residue_atom[i]]=TRP;
    3935        5346 :     } else if(Rname=="TYR") {
    3936        1320 :       atoi[residue_atom[i]]=TYR;
    3937        4026 :     } else if(Rname=="VAL") {
    3938        2656 :       atoi[residue_atom[i]]=VAL;
    3939             :     }
    3940             :     // NUCLEIC ACIDS
    3941             :     // nucleobases are not automatically populated as an additional check on the health of the PDB.
    3942             :     // RNA - G
    3943        1370 :     else if(Rname=="G") {
    3944           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    3945           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    3946           0 :         atoi [residue_atom[i]]=BB_PO2;
    3947           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    3948           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    3949           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    3950           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    3951           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    3952           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    3953           0 :         atoi[residue_atom[i]]=BB_RNA;
    3954           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    3955           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    3956           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    3957           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    3958           0 :         atoi[residue_atom[i]]=BASE_G;
    3959           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3960             :       // RNA - G3
    3961        1370 :     } else if(Rname=="G3") {
    3962           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    3963           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    3964           0 :         atoi [residue_atom[i]]=BB_PO2;
    3965           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    3966           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    3967           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    3968           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    3969           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    3970           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    3971           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    3972           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    3973           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    3974           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    3975           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    3976           0 :         atoi[residue_atom[i]]=BASE_G;
    3977           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3978             :       // RNA - G5
    3979        1370 :     } else if(Rname=="G5") {
    3980           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    3981           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    3982           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    3983           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    3984           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    3985           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    3986           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    3987           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    3988           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    3989           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    3990           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    3991           0 :         atoi[residue_atom[i]]=BASE_G;
    3992           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3993             :       // RNA - GT
    3994        1370 :     } else if(Rname=="GT") {
    3995           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    3996           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    3997           0 :         atoi [residue_atom[i]]=BB_PO3;
    3998           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    3999           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4000           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4001           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4002           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4003           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4004           0 :         atoi[residue_atom[i]]=BB_RNA;
    4005           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4006           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4007           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4008           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4009           0 :         atoi[residue_atom[i]]=BASE_G;
    4010           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4011             :       // RNA - U
    4012        1370 :     } else if(Rname=="U") {
    4013        4218 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4014        2166 :           Aname=="O1P" || Aname=="O2P"  ) {
    4015         114 :         atoi [residue_atom[i]]=BB_PO2;
    4016        3724 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4017        3116 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4018        2508 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4019        1938 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4020        1748 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4021        2280 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4022         608 :         atoi[residue_atom[i]]=BB_RNA;
    4023        1292 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    4024         684 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    4025         532 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    4026         418 :         atoi[residue_atom[i]]=BASE_U;
    4027           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4028             :       // RNA - U3
    4029         230 :     } else if(Rname=="U3") {
    4030         230 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4031         174 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4032           6 :         atoi [residue_atom[i]]=BB_PO2;
    4033         204 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    4034         172 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    4035         140 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    4036         110 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    4037          94 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    4038          78 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    4039          34 :         atoi[residue_atom[i]]=BB_RNA_3;
    4040          68 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    4041          36 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    4042          28 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    4043          22 :         atoi[residue_atom[i]]=BASE_U;
    4044           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4045             :       // RNA - U5
    4046         168 :     } else if(Rname=="U5") {
    4047         612 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4048         516 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4049         420 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4050         324 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    4051         264 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    4052         234 :           Aname=="H2'1" || Aname=="H5T" ) {
    4053         102 :         atoi[residue_atom[i]]=BB_RNA_5;
    4054         204 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    4055         108 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    4056          84 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    4057          66 :         atoi[residue_atom[i]]=BASE_U;
    4058           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4059             :       // RNA - UT
    4060           0 :     } else if(Rname=="UT") {
    4061           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4062           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4063           0 :         atoi [residue_atom[i]]=BB_PO3;
    4064           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4065           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4066           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4067           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4068           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4069           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4070           0 :         atoi[residue_atom[i]]=BB_RNA;
    4071           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    4072           0 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    4073           0 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    4074           0 :         atoi[residue_atom[i]]=BASE_U;
    4075           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4076             :       // RNA - A
    4077           0 :     } else if(Rname=="A") {
    4078           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4079           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    4080           0 :         atoi [residue_atom[i]]=BB_PO2;
    4081           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4082           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4083           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4084           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4085           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4086           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4087           0 :         atoi[residue_atom[i]]=BB_RNA;
    4088           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4089           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4090           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4091           0 :                 Aname=="H61" || Aname=="H62" ) {
    4092           0 :         atoi[residue_atom[i]]=BASE_A;
    4093           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4094             :       // RNA - A3
    4095           0 :     } else if(Rname=="A3") {
    4096           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4097           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4098           0 :         atoi [residue_atom[i]]=BB_PO2;
    4099           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    4100           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    4101           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    4102           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    4103           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    4104           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    4105           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    4106           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4107           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4108           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4109           0 :                 Aname=="H61" || Aname=="H62" ) {
    4110           0 :         atoi[residue_atom[i]]=BASE_A;
    4111           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4112             :       // RNA - A5
    4113           0 :     } else if(Rname=="A5") {
    4114           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4115           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4116           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4117           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    4118           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    4119           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    4120           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    4121           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4122           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4123           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4124           0 :                 Aname=="H61" || Aname=="H62" ) {
    4125           0 :         atoi[residue_atom[i]]=BASE_A;
    4126           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4127             :       // RNA - AT
    4128           0 :     } else if(Rname=="AT") {
    4129           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4130           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4131           0 :         atoi [residue_atom[i]]=BB_PO3;
    4132           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4133           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4134           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4135           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4136           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4137           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4138           0 :         atoi[residue_atom[i]]=BB_RNA;
    4139           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4140           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4141           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4142           0 :                 Aname=="H61" || Aname=="H62" ) {
    4143           0 :         atoi[residue_atom[i]]=BASE_A;
    4144           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4145             :       // RNA - C
    4146           0 :     } else if(Rname=="C") {
    4147           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4148           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    4149           0 :         atoi [residue_atom[i]]=BB_PO2;
    4150           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4151           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4152           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4153           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4154           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4155           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4156           0 :         atoi[residue_atom[i]]=BB_RNA;
    4157           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4158           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4159           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4160           0 :         atoi[residue_atom[i]]=BASE_C;
    4161           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4162             :       // RNA - C3
    4163           0 :     } else if(Rname=="C3") {
    4164           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4165           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4166           0 :         atoi [residue_atom[i]]=BB_PO2;
    4167           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    4168           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    4169           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    4170           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    4171           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    4172           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    4173           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    4174           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4175           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4176           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4177           0 :         atoi[residue_atom[i]]=BASE_C;
    4178           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4179             :       // RNA - C5
    4180           0 :     } else if(Rname=="C5") {
    4181           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4182           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4183           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4184           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    4185           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    4186           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    4187           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    4188           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4189           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4190           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4191           0 :         atoi[residue_atom[i]]=BASE_C;
    4192           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4193             :       // RNA - CT
    4194           0 :     } else if(Rname=="CT") {
    4195           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4196           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4197           0 :         atoi [residue_atom[i]]=BB_PO3;
    4198           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4199           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4200           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4201           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4202           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4203           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4204           0 :         atoi[residue_atom[i]]=BB_RNA;
    4205           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4206           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4207           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4208           0 :         atoi[residue_atom[i]]=BASE_C;
    4209           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4210             :       // DNA - G
    4211           0 :     } else if(Rname=="DG") {
    4212           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4213           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    4214           0 :         atoi [residue_atom[i]]=BB_PO2;
    4215           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4216           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4217           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4218           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4219           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4220           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4221           0 :         atoi[residue_atom[i]]=BB_DNA;
    4222           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4223           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4224           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4225           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4226           0 :         atoi[residue_atom[i]]=BASE_G;
    4227           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4228             :       // DNA - G3
    4229           0 :     } else if(Rname=="DG3") {
    4230           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4231           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4232           0 :         atoi [residue_atom[i]]=BB_PO2;
    4233           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4234           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4235           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4236           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    4237           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4238             :                 Aname=="H3T" ) {
    4239           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    4240           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4241           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4242           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4243           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4244           0 :         atoi[residue_atom[i]]=BASE_G;
    4245           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4246             :       // DNA - G5
    4247           0 :     } else if(Rname=="DG5") {
    4248           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4249           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    4250           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4251           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4252           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4253             :           Aname=="H5T" ) {
    4254           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    4255           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4256           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4257           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4258           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4259           0 :         atoi[residue_atom[i]]=BASE_G;
    4260           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4261             :       // DNA - GT
    4262           0 :     } else if(Rname=="DGT") {
    4263           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4264           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4265           0 :         atoi [residue_atom[i]]=BB_PO3;
    4266           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4267           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4268           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4269           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4270           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4271           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4272           0 :         atoi[residue_atom[i]]=BB_DNA;
    4273           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4274           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4275           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4276           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4277           0 :         atoi[residue_atom[i]]=BASE_G;
    4278           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4279             :       // DNA - T
    4280           0 :     } else if(Rname=="DT") {
    4281           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4282           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    4283           0 :         atoi [residue_atom[i]]=BB_PO2;
    4284           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4285           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4286           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4287           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4288           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4289           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4290           0 :         atoi[residue_atom[i]]=BB_DNA;
    4291           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    4292           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    4293           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    4294           0 :                 Aname=="H72" || Aname=="H73" ) {
    4295           0 :         atoi[residue_atom[i]]=BASE_T;
    4296           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4297             :       // DNA - T3
    4298           0 :     } else if(Rname=="DT3") {
    4299           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4300           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4301           0 :         atoi [residue_atom[i]]=BB_PO2;
    4302           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4303           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4304           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4305           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    4306           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4307             :                 Aname=="H3T" ) {
    4308           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    4309           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    4310           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    4311           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    4312           0 :                 Aname=="H72" || Aname=="H73" ) {
    4313           0 :         atoi[residue_atom[i]]=BASE_T;
    4314           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4315             :       // DNA - T5
    4316           0 :     } else if(Rname=="DT5") {
    4317           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4318           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    4319           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4320           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4321           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4322             :           Aname=="H5T" ) {
    4323           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    4324           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    4325           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    4326           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    4327           0 :                 Aname=="H72" || Aname=="H73" ) {
    4328           0 :         atoi[residue_atom[i]]=BASE_T;
    4329           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4330             :       // DNA - TT
    4331           0 :     } else if(Rname=="DTT") {
    4332           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4333           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4334           0 :         atoi [residue_atom[i]]=BB_PO3;
    4335           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4336           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4337           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4338           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4339           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4340           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4341           0 :         atoi[residue_atom[i]]=BB_DNA;
    4342           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    4343           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    4344           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    4345           0 :                 Aname=="H72" || Aname=="H73" ) {
    4346           0 :         atoi[residue_atom[i]]=BASE_T;
    4347           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4348             :       // DNA - A
    4349           0 :     } else if(Rname=="DA") {
    4350           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4351           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    4352           0 :         atoi [residue_atom[i]]=BB_PO2;
    4353           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4354           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4355           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4356           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4357           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4358           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4359           0 :         atoi[residue_atom[i]]=BB_DNA;
    4360           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4361           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4362           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4363           0 :                 Aname=="H61" || Aname=="H62" ) {
    4364           0 :         atoi[residue_atom[i]]=BASE_A;
    4365           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4366             :       // DNA - A3
    4367           0 :     } else if(Rname=="DA3") {
    4368           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4369           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4370           0 :         atoi [residue_atom[i]]=BB_PO2;
    4371           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4372           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4373           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4374           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    4375           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4376             :                 Aname=="H3T" ) {
    4377           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    4378           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4379           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4380           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4381           0 :                 Aname=="H61" || Aname=="H62" ) {
    4382           0 :         atoi[residue_atom[i]]=BASE_A;
    4383           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4384             :       // DNA - A5
    4385           0 :     } else if(Rname=="DA5") {
    4386           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4387           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    4388           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4389           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4390           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4391             :           Aname=="H5T" ) {
    4392           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    4393           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4394           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4395           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4396           0 :                 Aname=="H61" || Aname=="H62" ) {
    4397           0 :         atoi[residue_atom[i]]=BASE_A;
    4398           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4399             :       // DNA - AT
    4400           0 :     } else if(Rname=="DAT") {
    4401           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4402           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4403           0 :         atoi [residue_atom[i]]=BB_PO3;
    4404           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4405           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4406           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4407           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4408           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4409           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4410           0 :         atoi[residue_atom[i]]=BB_DNA;
    4411           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4412           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4413           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4414           0 :                 Aname=="H61" || Aname=="H62" ) {
    4415           0 :         atoi[residue_atom[i]]=BASE_A;
    4416           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4417             :       // DNA - C
    4418           0 :     } else if(Rname=="DC") {
    4419           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4420           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    4421           0 :         atoi [residue_atom[i]]=BB_PO2;
    4422           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4423           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4424           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4425           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4426           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4427           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4428           0 :         atoi[residue_atom[i]]=BB_DNA;
    4429           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4430           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4431           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4432           0 :         atoi[residue_atom[i]]=BASE_C;
    4433           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4434             :       // DNA - C3
    4435           0 :     } else if(Rname=="DC3") {
    4436           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4437           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4438           0 :         atoi [residue_atom[i]]=BB_PO2;
    4439           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4440           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4441           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4442           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    4443           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4444             :                 Aname=="H3T" ) {
    4445           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    4446           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4447           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4448           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4449           0 :         atoi[residue_atom[i]]=BASE_C;
    4450           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4451             :       // DNA - C5
    4452           0 :     } else if(Rname=="DC5") {
    4453           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4454           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    4455           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4456           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4457           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4458             :           Aname=="H5T" ) {
    4459           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    4460           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4461           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4462           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4463           0 :         atoi[residue_atom[i]]=BASE_C;
    4464           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4465             :       // DNA - CT
    4466           0 :     } else if(Rname=="DCT") {
    4467           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4468           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4469           0 :         atoi [residue_atom[i]]=BB_PO3;
    4470           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4471           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4472           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4473           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4474           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4475           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4476           0 :         atoi[residue_atom[i]]=BB_DNA;
    4477           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4478           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4479           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4480           0 :         atoi[residue_atom[i]]=BASE_C;
    4481           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4482           0 :     } else error("Residue not known: "+Rname);
    4483             :   }
    4484          10 : }
    4485             : 
    4486           6 : void SAXS::getOnebeadparam_sansH(const PDB &pdb, const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &parameter_vac_H, std::vector<std::vector<long double> > &parameter_mix_H, std::vector<std::vector<long double> > &parameter_solv_H)
    4487             : {
    4488           6 :   parameter_solv_H[TRP].push_back(60737.60249988011);
    4489           6 :   parameter_solv_H[TRP].push_back(-77.77344118516487);
    4490           6 :   parameter_solv_H[TRP].push_back(-205962.80436572764);
    4491           6 :   parameter_solv_H[TRP].push_back(-62014.18523271781);
    4492           6 :   parameter_solv_H[TRP].push_back(680712.0512548896);
    4493           6 :   parameter_solv_H[TRP].push_back(-681337.967312983);
    4494           6 :   parameter_solv_H[TRP].push_back(211474.00338118695);
    4495             : 
    4496           6 :   parameter_solv_H[TYR].push_back(46250.803599880084);
    4497           6 :   parameter_solv_H[TYR].push_back(-45.827646837514614);
    4498           6 :   parameter_solv_H[TYR].push_back(-143872.94597686914);
    4499           6 :   parameter_solv_H[TYR].push_back(-39049.51580628132);
    4500           6 :   parameter_solv_H[TYR].push_back(441321.31246635393);
    4501           6 :   parameter_solv_H[TYR].push_back(-434477.6826175059);
    4502           6 :   parameter_solv_H[TYR].push_back(133179.21673104732);
    4503             : 
    4504           6 :   parameter_solv_H[PHE].push_back(42407.164900118914);
    4505           6 :   parameter_solv_H[PHE].push_back(-159.20054549009086);
    4506           6 :   parameter_solv_H[PHE].push_back(-123847.83591352346);
    4507           6 :   parameter_solv_H[PHE].push_back(-41797.78884558073);
    4508           6 :   parameter_solv_H[PHE].push_back(380283.87543872406);
    4509           6 :   parameter_solv_H[PHE].push_back(-361432.81356389285);
    4510           6 :   parameter_solv_H[PHE].push_back(107750.69385054041);
    4511             : 
    4512           6 :   parameter_solv_H[HIP].push_back(24473.473600119047);
    4513           6 :   parameter_solv_H[HIP].push_back(-111.6412807124612);
    4514           6 :   parameter_solv_H[HIP].push_back(-65826.17293437096);
    4515           6 :   parameter_solv_H[HIP].push_back(-23305.902022201855);
    4516           6 :   parameter_solv_H[HIP].push_back(194795.09953510275);
    4517           6 :   parameter_solv_H[HIP].push_back(-180454.47859494278);
    4518           6 :   parameter_solv_H[HIP].push_back(52699.36922660704);
    4519             : 
    4520           6 :   parameter_solv_H[ARG].push_back(34106.70239988039);
    4521           6 :   parameter_solv_H[ARG].push_back(152.74468231268114);
    4522           6 :   parameter_solv_H[ARG].push_back(-117086.46040369231);
    4523           6 :   parameter_solv_H[ARG].push_back(-19664.37512726012);
    4524           6 :   parameter_solv_H[ARG].push_back(364454.3721646173);
    4525           6 :   parameter_solv_H[ARG].push_back(-382076.05102190404);
    4526           6 :   parameter_solv_H[ARG].push_back(122775.83306003918);
    4527             : 
    4528           6 :   parameter_solv_H[LYS].push_back(32292.09000011877);
    4529           6 :   parameter_solv_H[LYS].push_back(-111.97888350941923);
    4530           6 :   parameter_solv_H[LYS].push_back(-91953.05212591762);
    4531           6 :   parameter_solv_H[LYS].push_back(-30691.03615444628);
    4532           6 :   parameter_solv_H[LYS].push_back(282092.82233263896);
    4533           6 :   parameter_solv_H[LYS].push_back(-269503.6095978623);
    4534           6 :   parameter_solv_H[LYS].push_back(80777.92760273012);
    4535             : 
    4536           6 :   parameter_solv_H[CYS].push_back(11352.902500119093);
    4537           6 :   parameter_solv_H[CYS].push_back(-45.52255488723637);
    4538           6 :   parameter_solv_H[CYS].push_back(-20925.086525675117);
    4539           6 :   parameter_solv_H[CYS].push_back(-5662.681335644281);
    4540           6 :   parameter_solv_H[CYS].push_back(38559.09602816144);
    4541           6 :   parameter_solv_H[CYS].push_back(-27885.22747486708);
    4542           6 :   parameter_solv_H[CYS].push_back(6280.148346561226);
    4543             : 
    4544           6 :   parameter_solv_H[CYX].push_back(10281.960000119348);
    4545           6 :   parameter_solv_H[CYX].push_back(-42.315998754511);
    4546           6 :   parameter_solv_H[CYX].push_back(-19328.174487327480);
    4547           6 :   parameter_solv_H[CYX].push_back(-5523.191775626829);
    4548           6 :   parameter_solv_H[CYX].push_back(38185.463172673335);
    4549           6 :   parameter_solv_H[CYX].push_back(-28940.174693042034);
    4550           6 :   parameter_solv_H[CYX].push_back(6925.390014187676);
    4551             : 
    4552           6 :   parameter_solv_H[ASP].push_back(13511.73760011933);
    4553           6 :   parameter_solv_H[ASP].push_back(-59.92934247210642);
    4554           6 :   parameter_solv_H[ASP].push_back(-25849.867077822244);
    4555           6 :   parameter_solv_H[ASP].push_back(-7541.679510407563);
    4556           6 :   parameter_solv_H[ASP].push_back(50760.93853987092);
    4557           6 :   parameter_solv_H[ASP].push_back(-37677.89102528413);
    4558           6 :   parameter_solv_H[ASP].push_back(8745.710458140105);
    4559             : 
    4560           6 :   parameter_solv_H[GLU].push_back(20443.280400119456);
    4561           6 :   parameter_solv_H[GLU].push_back(-113.77513581661388);
    4562           6 :   parameter_solv_H[GLU].push_back(-45587.79863958479);
    4563           6 :   parameter_solv_H[GLU].push_back(-16187.534798976243);
    4564           6 :   parameter_solv_H[GLU].push_back(112609.61802147207);
    4565           6 :   parameter_solv_H[GLU].push_back(-93362.01894077536);
    4566           6 :   parameter_solv_H[GLU].push_back(24519.546829431332);
    4567             : 
    4568           6 :   parameter_solv_H[ILE].push_back(27858.948100119596);
    4569           6 :   parameter_solv_H[ILE].push_back(-159.27394962770595);
    4570           6 :   parameter_solv_H[ILE].push_back(-61571.43025249802);
    4571           6 :   parameter_solv_H[ILE].push_back(-21324.89659912433);
    4572           6 :   parameter_solv_H[ILE].push_back(144070.7880009225);
    4573           6 :   parameter_solv_H[ILE].push_back(-115021.84534734003);
    4574           6 :   parameter_solv_H[ILE].push_back(28939.093300284097);
    4575             : 
    4576           6 :   parameter_solv_H[LEU].push_back(27858.948100119596);
    4577           6 :   parameter_solv_H[LEU].push_back(-165.61872365361);
    4578           6 :   parameter_solv_H[LEU].push_back(-62564.5706162518);
    4579           6 :   parameter_solv_H[LEU].push_back(-22465.325666767214);
    4580           6 :   parameter_solv_H[LEU].push_back(151616.7844050042);
    4581           6 :   parameter_solv_H[LEU].push_back(-122905.60389771541);
    4582           6 :   parameter_solv_H[LEU].push_back(31436.66201442061);
    4583             : 
    4584           6 :   parameter_solv_H[MET].push_back(25609.60090011981);
    4585           6 :   parameter_solv_H[MET].push_back(-135.38816369794569);
    4586           6 :   parameter_solv_H[MET].push_back(-67771.01548433342);
    4587           6 :   parameter_solv_H[MET].push_back(-25228.91756660071);
    4588           6 :   parameter_solv_H[MET].push_back(199649.92084565928);
    4589           6 :   parameter_solv_H[MET].push_back(-182251.9246506795);
    4590           6 :   parameter_solv_H[MET].push_back(52502.876819125115);
    4591             : 
    4592           6 :   parameter_solv_H[ASN].push_back(14376.010000119095);
    4593           6 :   parameter_solv_H[ASN].push_back(-67.65587848183215);
    4594           6 :   parameter_solv_H[ASN].push_back(-28302.877059425664);
    4595           6 :   parameter_solv_H[ASN].push_back(-8577.444107282141);
    4596           6 :   parameter_solv_H[ASN].push_back(57532.88704197217);
    4597           6 :   parameter_solv_H[ASN].push_back(-43261.79974462857);
    4598           6 :   parameter_solv_H[ASN].push_back(10186.450874679671);
    4599             : 
    4600           6 :   parameter_solv_H[PRO].push_back(16866.21690011944);
    4601           6 :   parameter_solv_H[PRO].push_back(-70.84312112734995);
    4602           6 :   parameter_solv_H[PRO].push_back(-31465.8423531932);
    4603           6 :   parameter_solv_H[PRO].push_back(-8653.362744540535);
    4604           6 :   parameter_solv_H[PRO].push_back(58032.27079924916);
    4605           6 :   parameter_solv_H[PRO].push_back(-41521.001733021694);
    4606           6 :   parameter_solv_H[PRO].push_back(9184.527523759205);
    4607             : 
    4608           6 :   parameter_solv_H[GLN].push_back(21503.289600119);
    4609           6 :   parameter_solv_H[GLN].push_back(-121.3012777474678);
    4610           6 :   parameter_solv_H[GLN].push_back(-50468.58503443957);
    4611           6 :   parameter_solv_H[GLN].push_back(-18462.47495329696);
    4612           6 :   parameter_solv_H[GLN].push_back(132718.42007501892);
    4613           6 :   parameter_solv_H[GLN].push_back(-113787.20224345029);
    4614           6 :   parameter_solv_H[GLN].push_back(30920.340813688686);
    4615             : 
    4616           6 :   parameter_solv_H[SER].push_back(9181.47240011935);
    4617           6 :   parameter_solv_H[SER].push_back(-28.775273124392083);
    4618           6 :   parameter_solv_H[SER].push_back(-15205.54229808512);
    4619           6 :   parameter_solv_H[SER].push_back(-3377.785599913673);
    4620           6 :   parameter_solv_H[SER].push_back(23345.562090489493);
    4621           6 :   parameter_solv_H[SER].push_back(-15312.699787471944);
    4622           6 :   parameter_solv_H[SER].push_back(3013.844610647712);
    4623             : 
    4624           6 :   parameter_solv_H[THR].push_back(15020.953600119403);
    4625           6 :   parameter_solv_H[THR].push_back(-61.909951810375105);
    4626           6 :   parameter_solv_H[THR].push_back(-27814.538986050964);
    4627           6 :   parameter_solv_H[THR].push_back(-7532.222992514079);
    4628           6 :   parameter_solv_H[THR].push_back(50586.29804970814);
    4629           6 :   parameter_solv_H[THR].push_back(-35943.85986777198);
    4630           6 :   parameter_solv_H[THR].push_back(7880.091610023207);
    4631             : 
    4632           6 :   parameter_solv_H[VAL].push_back(19647.628900119355);
    4633           6 :   parameter_solv_H[VAL].push_back(-89.04968136833762);
    4634           6 :   parameter_solv_H[VAL].push_back(-38050.10118919102);
    4635           6 :   parameter_solv_H[VAL].push_back(-10921.421066774372);
    4636           6 :   parameter_solv_H[VAL].push_back(72774.31277743122);
    4637           6 :   parameter_solv_H[VAL].push_back(-52689.05168504517);
    4638           6 :   parameter_solv_H[VAL].push_back(11806.48989635518);
    4639             : 
    4640           6 :   parameter_solv_H[ALA].push_back(7515.156100119273);
    4641           6 :   parameter_solv_H[ALA].push_back(-20.226317591188526);
    4642           6 :   parameter_solv_H[ALA].push_back(-11761.841775007797);
    4643           6 :   parameter_solv_H[ALA].push_back(-2341.4903622033885);
    4644           6 :   parameter_solv_H[ALA].push_back(16545.381259883452);
    4645           6 :   parameter_solv_H[ALA].push_back(-10397.171546969075);
    4646           6 :   parameter_solv_H[ALA].push_back(1921.5253045340198);
    4647             : 
    4648           6 :   parameter_solv_H[GLY].push_back(3594.002500119159);
    4649           6 :   parameter_solv_H[GLY].push_back(-6.910832388009796);
    4650           6 :   parameter_solv_H[GLY].push_back(-4937.3542895091905);
    4651           6 :   parameter_solv_H[GLY].push_back(-785.4545979203357);
    4652           6 :   parameter_solv_H[GLY].push_back(5852.853693316741);
    4653           6 :   parameter_solv_H[GLY].push_back(-3391.2920205126734);
    4654           6 :   parameter_solv_H[GLY].push_back(552.3278183161507);
    4655             : 
    4656           6 :   parameter_solv_H[HIS].push_back(22888.664100119073);
    4657           6 :   parameter_solv_H[HIS].push_back(-133.86281863999585);
    4658           6 :   parameter_solv_H[HIS].push_back(-57533.51412287858);
    4659           6 :   parameter_solv_H[HIS].push_back(-21767.300111408193);
    4660           6 :   parameter_solv_H[HIS].push_back(161255.15347073504);
    4661           6 :   parameter_solv_H[HIS].push_back(-142176.65100718598);
    4662           6 :   parameter_solv_H[HIS].push_back(39642.61507384587);
    4663             : 
    4664           6 :   parameter_mix_H[TRP].push_back(2974.6515001192306);
    4665           6 :   parameter_mix_H[TRP].push_back(-18.361939022074825);
    4666           6 :   parameter_mix_H[TRP].push_back(-7284.637435770752);
    4667           6 :   parameter_mix_H[TRP].push_back(-2945.7969900381895);
    4668           6 :   parameter_mix_H[TRP].push_back(21235.01878657283);
    4669           6 :   parameter_mix_H[TRP].push_back(-18909.7406035548);
    4670           6 :   parameter_mix_H[TRP].push_back(5324.324204245179);
    4671             : 
    4672           6 :   parameter_mix_H[TYR].push_back(2029.7362801192114);
    4673           6 :   parameter_mix_H[TYR].push_back(-6.983186065527884);
    4674           6 :   parameter_mix_H[TYR].push_back(-5041.996113037476);
    4675           6 :   parameter_mix_H[TYR].push_back(-1744.5213085724158);
    4676           6 :   parameter_mix_H[TYR].push_back(15329.420227814338);
    4677           6 :   parameter_mix_H[TYR].push_back(-14648.322529889958);
    4678           6 :   parameter_mix_H[TYR].push_back(4405.608657083287);
    4679             : 
    4680           6 :   parameter_mix_H[PHE].push_back(1704.6885401192117);
    4681           6 :   parameter_mix_H[PHE].push_back(-10.077274979133408);
    4682           6 :   parameter_mix_H[PHE].push_back(-3769.440088334303);
    4683           6 :   parameter_mix_H[PHE].push_back(-1574.6255694551546);
    4684           6 :   parameter_mix_H[PHE].push_back(10996.32497868798);
    4685           6 :   parameter_mix_H[PHE].push_back(-9840.68281283696);
    4686           6 :   parameter_mix_H[PHE].push_back(2792.098605716682);
    4687             : 
    4688           6 :   parameter_mix_H[HIP].push_back(1376.0462401192394);
    4689           6 :   parameter_mix_H[HIP].push_back(-8.576320475413144);
    4690           6 :   parameter_mix_H[HIP].push_back(-2796.8327726392167);
    4691           6 :   parameter_mix_H[HIP].push_back(-1165.0473128576);
    4692           6 :   parameter_mix_H[HIP].push_back(7495.063650365717);
    4693           6 :   parameter_mix_H[HIP].push_back(-6331.20422098132);
    4694           6 :   parameter_mix_H[HIP].push_back(1692.637366093312);
    4695             : 
    4696           6 :   parameter_mix_H[ARG].push_back(1280.940480119178);
    4697           6 :   parameter_mix_H[ARG].push_back(-7.411214928783748);
    4698           6 :   parameter_mix_H[ARG].push_back(-3747.6200569785033);
    4699           6 :   parameter_mix_H[ARG].push_back(-1766.5282176004569);
    4700           6 :   parameter_mix_H[ARG].push_back(14307.817638456267);
    4701           6 :   parameter_mix_H[ARG].push_back(-14297.104122885643);
    4702           6 :   parameter_mix_H[ARG].push_back(4450.526244207772);
    4703             : 
    4704           6 :   parameter_mix_H[LYS].push_back(570.7272001192143);
    4705           6 :   parameter_mix_H[LYS].push_back(-5.371742288956095);
    4706           6 :   parameter_mix_H[LYS].push_back(-1255.9868267793006);
    4707           6 :   parameter_mix_H[LYS].push_back(-748.3071074443138);
    4708           6 :   parameter_mix_H[LYS].push_back(4534.824932304509);
    4709           6 :   parameter_mix_H[LYS].push_back(-4125.307867230812);
    4710           6 :   parameter_mix_H[LYS].push_back(1178.781491068295);
    4711             : 
    4712           6 :   parameter_mix_H[CYS].push_back(410.21750011921864);
    4713           6 :   parameter_mix_H[CYS].push_back(-0.7655651758449595);
    4714           6 :   parameter_mix_H[CYS].push_back(-523.8897033718782);
    4715           6 :   parameter_mix_H[CYS].push_back(-89.88478273744425);
    4716           6 :   parameter_mix_H[CYS].push_back(655.3313542467919);
    4717           6 :   parameter_mix_H[CYS].push_back(-407.87897719750896);
    4718           6 :   parameter_mix_H[CYS].push_back(76.50541508448237);
    4719             : 
    4720           6 :   parameter_mix_H[CYX].push_back(466.237200119199);
    4721           6 :   parameter_mix_H[CYX].push_back(-1.302082362010);
    4722           6 :   parameter_mix_H[CYX].push_back(-667.565738985901);
    4723           6 :   parameter_mix_H[CYX].push_back(-159.506437978088);
    4724           6 :   parameter_mix_H[CYX].push_back(1085.648159448292);
    4725           6 :   parameter_mix_H[CYX].push_back(-767.622943338598);
    4726           6 :   parameter_mix_H[CYX].push_back(170.157274620163);
    4727             : 
    4728           6 :   parameter_mix_H[ASP].push_back(893.6531201192147);
    4729           6 :   parameter_mix_H[ASP].push_back(-3.0756255172248874);
    4730           6 :   parameter_mix_H[ASP].push_back(-1453.1760425275006);
    4731           6 :   parameter_mix_H[ASP].push_back(-365.0424824614137);
    4732           6 :   parameter_mix_H[ASP].push_back(2443.570600976796);
    4733           6 :   parameter_mix_H[ASP].push_back(-1679.8996339740277);
    4734           6 :   parameter_mix_H[ASP].push_back(352.33054461512455);
    4735             : 
    4736           6 :   parameter_mix_H[GLU].push_back(1075.4955601191884);
    4737           6 :   parameter_mix_H[GLU].push_back(-6.917429973203965);
    4738           6 :   parameter_mix_H[GLU].push_back(-2262.861870389347);
    4739           6 :   parameter_mix_H[GLU].push_back(-909.8078514527992);
    4740           6 :   parameter_mix_H[GLU].push_back(5841.923857549836);
    4741           6 :   parameter_mix_H[GLU].push_back(-4784.620969556751);
    4742           6 :   parameter_mix_H[GLU].push_back(1230.873134652953);
    4743             : 
    4744           6 :   parameter_mix_H[ILE].push_back(466.0127201192081);
    4745           6 :   parameter_mix_H[ILE].push_back(-0.9323443258150218);
    4746           6 :   parameter_mix_H[ILE].push_back(-576.7178005955719);
    4747           6 :   parameter_mix_H[ILE].push_back(-103.03003361062478);
    4748           6 :   parameter_mix_H[ILE].push_back(706.4269951176641);
    4749           6 :   parameter_mix_H[ILE].push_back(-420.4412859632717);
    4750           6 :   parameter_mix_H[ILE].push_back(71.53175726608731);
    4751             : 
    4752           6 :   parameter_mix_H[LEU].push_back(466.0127201192081);
    4753           6 :   parameter_mix_H[LEU].push_back(-1.9793605752606065);
    4754           6 :   parameter_mix_H[LEU].push_back(-718.3988478701591);
    4755           6 :   parameter_mix_H[LEU].push_back(-227.36409339012113);
    4756           6 :   parameter_mix_H[LEU].push_back(1389.2058254917304);
    4757           6 :   parameter_mix_H[LEU].push_back(-990.0033118748643);
    4758           6 :   parameter_mix_H[LEU].push_back(213.15736815883042);
    4759             : 
    4760           6 :   parameter_mix_H[MET].push_back(562.9855401192196);
    4761           6 :   parameter_mix_H[MET].push_back(-3.7994094933771643);
    4762           6 :   parameter_mix_H[MET].push_back(-1139.6331862451661);
    4763           6 :   parameter_mix_H[MET].push_back(-516.6313269725724);
    4764           6 :   parameter_mix_H[MET].push_back(3268.957245190869);
    4765           6 :   parameter_mix_H[MET].push_back(-2809.178864807947);
    4766           6 :   parameter_mix_H[MET].push_back(761.4832732100416);
    4767             : 
    4768           6 :   parameter_mix_H[ASN].push_back(828.7488001191887);
    4769           6 :   parameter_mix_H[ASN].push_back(-2.1275493073799625);
    4770           6 :   parameter_mix_H[ASN].push_back(-1222.248291388804);
    4771           6 :   parameter_mix_H[ASN].push_back(-238.94210659613537);
    4772           6 :   parameter_mix_H[ASN].push_back(1660.8322402171973);
    4773           6 :   parameter_mix_H[ASN].push_back(-1008.7934996077323);
    4774           6 :   parameter_mix_H[ASN].push_back(173.6082238625797);
    4775             : 
    4776           6 :   parameter_mix_H[PRO].push_back(578.4409801192146);
    4777           6 :   parameter_mix_H[PRO].push_back(-0.5379505780909722);
    4778           6 :   parameter_mix_H[PRO].push_back(-648.146493857212);
    4779           6 :   parameter_mix_H[PRO].push_back(-56.67223895342921);
    4780           6 :   parameter_mix_H[PRO].push_back(509.88860586987437);
    4781           6 :   parameter_mix_H[PRO].push_back(-214.57871784725265);
    4782           6 :   parameter_mix_H[PRO].push_back(11.99659463759968);
    4783             : 
    4784           6 :   parameter_mix_H[GLN].push_back(989.2334401191976);
    4785           6 :   parameter_mix_H[GLN].push_back(-6.307760694331967);
    4786           6 :   parameter_mix_H[GLN].push_back(-1971.7067150503622);
    4787           6 :   parameter_mix_H[GLN].push_back(-791.333088386235);
    4788           6 :   parameter_mix_H[GLN].push_back(4900.009768434847);
    4789           6 :   parameter_mix_H[GLN].push_back(-3909.7740976374153);
    4790           6 :   parameter_mix_H[GLN].push_back(975.4952613244343);
    4791             : 
    4792           6 :   parameter_mix_H[SER].push_back(426.39900011920196);
    4793           6 :   parameter_mix_H[SER].push_back(-0.42304498358319664);
    4794           6 :   parameter_mix_H[SER].push_back(-484.2066027682147);
    4795           6 :   parameter_mix_H[SER].push_back(-45.38968988754228);
    4796           6 :   parameter_mix_H[SER].push_back(401.3420977115044);
    4797           6 :   parameter_mix_H[SER].push_back(-178.0861461692512);
    4798           6 :   parameter_mix_H[SER].push_back(13.540349238730284);
    4799             : 
    4800           6 :   parameter_mix_H[THR].push_back(525.0470401191992);
    4801           6 :   parameter_mix_H[THR].push_back(-0.7419102811534484);
    4802           6 :   parameter_mix_H[THR].push_back(-652.7134808154495);
    4803           6 :   parameter_mix_H[THR].push_back(-80.39481224407903);
    4804           6 :   parameter_mix_H[THR].push_back(641.5487902728123);
    4805           6 :   parameter_mix_H[THR].push_back(-320.4227667104819);
    4806           6 :   parameter_mix_H[THR].push_back(36.03558531183942);
    4807             : 
    4808           6 :   parameter_mix_H[VAL].push_back(414.6228601192123);
    4809           6 :   parameter_mix_H[VAL].push_back(-0.35889335250521337);
    4810           6 :   parameter_mix_H[VAL].push_back(-453.11631644097474);
    4811           6 :   parameter_mix_H[VAL].push_back(-36.402101097644284);
    4812           6 :   parameter_mix_H[VAL].push_back(336.24049431626804);
    4813           6 :   parameter_mix_H[VAL].push_back(-127.42235327515239);
    4814           6 :   parameter_mix_H[VAL].push_back(0.8013280923923705);
    4815             : 
    4816           6 :   parameter_mix_H[ALA].push_back(285.21010011920816);
    4817           6 :   parameter_mix_H[ALA].push_back(-0.1573012439142169);
    4818           6 :   parameter_mix_H[ALA].push_back(-282.8945838800694);
    4819           6 :   parameter_mix_H[ALA].push_back(-16.32030056827785);
    4820           6 :   parameter_mix_H[ALA].push_back(178.065895049598);
    4821           6 :   parameter_mix_H[ALA].push_back(-60.27423229179658);
    4822           6 :   parameter_mix_H[ALA].push_back(-1.4695219304131588);
    4823             : 
    4824           6 :   parameter_mix_H[GLY].push_back(207.18720011920414);
    4825           6 :   parameter_mix_H[GLY].push_back(-0.1036587134183235);
    4826           6 :   parameter_mix_H[GLY].push_back(-185.70794948240638);
    4827           6 :   parameter_mix_H[GLY].push_back(-11.008101039836257);
    4828           6 :   parameter_mix_H[GLY].push_back(115.30600405624061);
    4829           6 :   parameter_mix_H[GLY].push_back(-42.46629718037158);
    4830           6 :   parameter_mix_H[GLY].push_back(0.9238928987070913);
    4831             : 
    4832           6 :   parameter_mix_H[HIS].push_back(1443.9117601192354);
    4833           6 :   parameter_mix_H[HIS].push_back(-7.478618745973115);
    4834           6 :   parameter_mix_H[HIS].push_back(-2715.0835155803215);
    4835           6 :   parameter_mix_H[HIS].push_back(-918.5243015382779);
    4836           6 :   parameter_mix_H[HIS].push_back(5821.6258431396);
    4837           6 :   parameter_mix_H[HIS].push_back(-4415.32722209556);
    4838           6 :   parameter_mix_H[HIS].push_back(1044.7044029209756);
    4839             : 
    4840           6 :   parameter_vac_H[TRP].push_back(36.42122511920832);
    4841           6 :   parameter_vac_H[TRP].push_back(-0.36925500341767903);
    4842           6 :   parameter_vac_H[TRP].push_back(-51.34228792835503);
    4843           6 :   parameter_vac_H[TRP].push_back(-34.10021080004831);
    4844           6 :   parameter_vac_H[TRP].push_back(132.647034983933);
    4845           6 :   parameter_vac_H[TRP].push_back(-82.89152328934257);
    4846           6 :   parameter_vac_H[TRP].push_back(13.029994092013231);
    4847             : 
    4848           6 :   parameter_vac_H[TYR].push_back(22.268961119209557);
    4849           6 :   parameter_vac_H[TYR].push_back(-0.1995573892347673);
    4850           6 :   parameter_vac_H[TYR].push_back(-36.54202179838511);
    4851           6 :   parameter_vac_H[TYR].push_back(-23.820801043096694);
    4852           6 :   parameter_vac_H[TYR].push_back(127.46799692275353);
    4853           6 :   parameter_vac_H[TYR].push_back(-107.63783234245744);
    4854           6 :   parameter_vac_H[TYR].push_back(28.180858902960775);
    4855             : 
    4856           6 :   parameter_vac_H[PHE].push_back(17.131321119209627);
    4857           6 :   parameter_vac_H[PHE].push_back(-0.15766725674246446);
    4858           6 :   parameter_vac_H[PHE].push_back(-19.19964432024534);
    4859           6 :   parameter_vac_H[PHE].push_back(-12.34326882843138);
    4860           6 :   parameter_vac_H[PHE].push_back(38.17216645824474);
    4861           6 :   parameter_vac_H[PHE].push_back(-11.245288857407298);
    4862           6 :   parameter_vac_H[PHE].push_back(-3.8114731300899343);
    4863             : 
    4864           6 :   parameter_vac_H[HIP].push_back(19.34240411920875);
    4865           6 :   parameter_vac_H[HIP].push_back(-0.13533410292592593);
    4866           6 :   parameter_vac_H[HIP].push_back(-25.924121027387276);
    4867           6 :   parameter_vac_H[HIP].push_back(-12.36586927492752);
    4868           6 :   parameter_vac_H[HIP].push_back(56.75268702111191);
    4869           6 :   parameter_vac_H[HIP].push_back(-31.126240293638094);
    4870           6 :   parameter_vac_H[HIP].push_back(2.749811579250848);
    4871             : 
    4872           6 :   parameter_vac_H[ARG].push_back(12.027024119209557);
    4873           6 :   parameter_vac_H[ARG].push_back(-0.41927538341868287);
    4874           6 :   parameter_vac_H[ARG].push_back(-22.137566939867042);
    4875           6 :   parameter_vac_H[ARG].push_back(-43.22615008762667);
    4876           6 :   parameter_vac_H[ARG].push_back(165.77466655520323);
    4877           6 :   parameter_vac_H[ARG].push_back(-140.68664871425898);
    4878           6 :   parameter_vac_H[ARG].push_back(36.67401195170306);
    4879             : 
    4880           6 :   parameter_vac_H[LYS].push_back(2.5217441192093717);
    4881           6 :   parameter_vac_H[LYS].push_back(-0.0032825476242835413);
    4882           6 :   parameter_vac_H[LYS].push_back(14.019071697737793);
    4883           6 :   parameter_vac_H[LYS].push_back(7.8634074595069245);
    4884           6 :   parameter_vac_H[LYS].push_back(-82.44639716451474);
    4885           6 :   parameter_vac_H[LYS].push_back(94.32937851921197);
    4886           6 :   parameter_vac_H[LYS].push_back(-32.324473823417);
    4887             : 
    4888           6 :   parameter_vac_H[CYS].push_back(3.705624880856525);
    4889           6 :   parameter_vac_H[CYS].push_back(0.005214780840206113);
    4890           6 :   parameter_vac_H[CYS].push_back(1.25680902661715);
    4891           6 :   parameter_vac_H[CYS].push_back(0.5779209425501814);
    4892           6 :   parameter_vac_H[CYS].push_back(-3.716408071089366);
    4893           6 :   parameter_vac_H[CYS].push_back(2.3947518943233117);
    4894           6 :   parameter_vac_H[CYS].push_back(-0.40204949737133333);
    4895             : 
    4896           6 :   parameter_vac_H[CYX].push_back(5.285401118868);
    4897           6 :   parameter_vac_H[CYX].push_back(-0.006119528779);
    4898           6 :   parameter_vac_H[CYX].push_back(-3.091212256902);
    4899           6 :   parameter_vac_H[CYX].push_back(-0.679948780910);
    4900           6 :   parameter_vac_H[CYX].push_back(4.495837313271);
    4901           6 :   parameter_vac_H[CYX].push_back(-2.827133444940);
    4902           6 :   parameter_vac_H[CYX].push_back(0.494583310914);
    4903             : 
    4904           6 :   parameter_vac_H[ASP].push_back(14.776336119209605);
    4905           6 :   parameter_vac_H[ASP].push_back(-0.037351220316916435);
    4906           6 :   parameter_vac_H[ASP].push_back(-18.556358387626286);
    4907           6 :   parameter_vac_H[ASP].push_back(-4.1737354794552886);
    4908           6 :   parameter_vac_H[ASP].push_back(28.424721213037405);
    4909           6 :   parameter_vac_H[ASP].push_back(-17.51389895324883);
    4910           6 :   parameter_vac_H[ASP].push_back(2.9729111724708597);
    4911             : 
    4912           6 :   parameter_vac_H[GLU].push_back(14.145121119208973);
    4913           6 :   parameter_vac_H[GLU].push_back(-0.11468766098213011);
    4914           6 :   parameter_vac_H[GLU].push_back(-26.272637652294613);
    4915           6 :   parameter_vac_H[GLU].push_back(-13.769758826440151);
    4916           6 :   parameter_vac_H[GLU].push_back(80.4575683578491);
    4917           6 :   parameter_vac_H[GLU].push_back(-64.19346347075);
    4918           6 :   parameter_vac_H[GLU].push_back(15.545440117656236);
    4919             : 
    4920           6 :   parameter_vac_H[ILE].push_back(1.9488158808808775);
    4921           6 :   parameter_vac_H[ILE].push_back(0.05873132133874459);
    4922           6 :   parameter_vac_H[ILE].push_back(12.032778845884135);
    4923           6 :   parameter_vac_H[ILE].push_back(7.148416980612881);
    4924           6 :   parameter_vac_H[ILE].push_back(-41.87377843832961);
    4925           6 :   parameter_vac_H[ILE].push_back(33.96120749582283);
    4926           6 :   parameter_vac_H[ILE].push_back(-8.362535852631256);
    4927             : 
    4928           6 :   parameter_vac_H[LEU].push_back(1.9488158808977816);
    4929           6 :   parameter_vac_H[LEU].push_back(0.0778305500414777);
    4930           6 :   parameter_vac_H[LEU].push_back(12.333370614594);
    4931           6 :   parameter_vac_H[LEU].push_back(9.449427967560764);
    4932           6 :   parameter_vac_H[LEU].push_back(-52.65457680603262);
    4933           6 :   parameter_vac_H[LEU].push_back(44.681877289399615);
    4934           6 :   parameter_vac_H[LEU].push_back(-11.460498338671227);
    4935             : 
    4936           6 :   parameter_vac_H[MET].push_back(3.0940808808117652);
    4937           6 :   parameter_vac_H[MET].push_back(0.04903755678213222);
    4938           6 :   parameter_vac_H[MET].push_back(8.981927022922049);
    4939           6 :   parameter_vac_H[MET].push_back(8.654862771879014);
    4940           6 :   parameter_vac_H[MET].push_back(-57.09889409156816);
    4941           6 :   parameter_vac_H[MET].push_back(58.87704775164829);
    4942           6 :   parameter_vac_H[MET].push_back(-18.60431990258862);
    4943             : 
    4944           6 :   parameter_vac_H[ASN].push_back(11.943936119209074);
    4945           6 :   parameter_vac_H[ASN].push_back(-0.0005000836239497835);
    4946           6 :   parameter_vac_H[ASN].push_back(-9.581236453763157);
    4947           6 :   parameter_vac_H[ASN].push_back(0.16244025786232308);
    4948           6 :   parameter_vac_H[ASN].push_back(2.9276580099749574);
    4949           6 :   parameter_vac_H[ASN].push_back(2.133535783835143);
    4950           6 :   parameter_vac_H[ASN].push_back(-1.5709968820975018);
    4951             : 
    4952           6 :   parameter_vac_H[PRO].push_back(4.9595288808229245);
    4953           6 :   parameter_vac_H[PRO].push_back(0.017853932680793515);
    4954           6 :   parameter_vac_H[PRO].push_back(4.5421559293101605);
    4955           6 :   parameter_vac_H[PRO].push_back(2.008455612787203);
    4956           6 :   parameter_vac_H[PRO].push_back(-12.444117841318494);
    4957           6 :   parameter_vac_H[PRO].push_back(8.511723688836447);
    4958           6 :   parameter_vac_H[PRO].push_back(-1.6337543903496765);
    4959             : 
    4960           6 :   parameter_vac_H[GLN].push_back(11.377129119208574);
    4961           6 :   parameter_vac_H[GLN].push_back(-0.0674805307761209);
    4962           6 :   parameter_vac_H[GLN].push_back(-16.56692720411458);
    4963           6 :   parameter_vac_H[GLN].push_back(-6.477707440126834);
    4964           6 :   parameter_vac_H[GLN].push_back(34.78232259512621);
    4965           6 :   parameter_vac_H[GLN].push_back(-19.450886909938312);
    4966           6 :   parameter_vac_H[GLN].push_back(1.944286925108988);
    4967             : 
    4968           6 :   parameter_vac_H[SER].push_back(4.95062488096605);
    4969           6 :   parameter_vac_H[SER].push_back(0.004676435440506079);
    4970           6 :   parameter_vac_H[SER].push_back(-0.1896653085608564);
    4971           6 :   parameter_vac_H[SER].push_back(0.5142284931977218);
    4972           6 :   parameter_vac_H[SER].push_back(-2.8946087252759893);
    4973           6 :   parameter_vac_H[SER].push_back(2.1031239401634836);
    4974           6 :   parameter_vac_H[SER].push_back(-0.38226443516361713);
    4975             : 
    4976           6 :   parameter_vac_H[THR].push_back(4.588163880808971);
    4977           6 :   parameter_vac_H[THR].push_back(0.018587905993982613);
    4978           6 :   parameter_vac_H[THR].push_back(3.5289861308270214);
    4979           6 :   parameter_vac_H[THR].push_back(2.0780583604591567);
    4980           6 :   parameter_vac_H[THR].push_back(-12.3802007068414);
    4981           6 :   parameter_vac_H[THR].push_back(8.720986674116094);
    4982           6 :   parameter_vac_H[THR].push_back(-1.683256475122275);
    4983             : 
    4984           6 :   parameter_vac_H[VAL].push_back(2.187440880853519);
    4985           6 :   parameter_vac_H[VAL].push_back(0.028351524826584255);
    4986           6 :   parameter_vac_H[VAL].push_back(8.36584512491955);
    4987           6 :   parameter_vac_H[VAL].push_back(3.1686206615123926);
    4988           6 :   parameter_vac_H[VAL].push_back(-19.81959917770108);
    4989           6 :   parameter_vac_H[VAL].push_back(13.293003038570571);
    4990           6 :   parameter_vac_H[VAL].push_back(-2.4595257726774125);
    4991             : 
    4992           6 :   parameter_vac_H[ALA].push_back(2.7060248808167935);
    4993           6 :   parameter_vac_H[ALA].push_back(0.004618897267213416);
    4994           6 :   parameter_vac_H[ALA].push_back(2.4990261487383947);
    4995           6 :   parameter_vac_H[ALA].push_back(0.49579332664340864);
    4996           6 :   parameter_vac_H[ALA].push_back(-3.850400071630347);
    4997           6 :   parameter_vac_H[ALA].push_back(1.9501161562030942);
    4998           6 :   parameter_vac_H[ALA].push_back(-0.18332582719788362);
    4999             : 
    5000           6 :   parameter_vac_H[GLY].push_back(2.985983880876256);
    5001           6 :   parameter_vac_H[GLY].push_back(0.0005033131808079042);
    5002           6 :   parameter_vac_H[GLY].push_back(-0.42250170279962684);
    5003           6 :   parameter_vac_H[GLY].push_back(0.05620517453257455);
    5004           6 :   parameter_vac_H[GLY].push_back(-0.16801962822020733);
    5005           6 :   parameter_vac_H[GLY].push_back(0.23635459648780555);
    5006           6 :   parameter_vac_H[GLY].push_back(-0.06585244715658795);
    5007             : 
    5008           6 :   parameter_vac_H[HIS].push_back(22.77198411920933);
    5009           6 :   parameter_vac_H[HIS].push_back(-0.06607491006655417);
    5010           6 :   parameter_vac_H[HIS].push_back(-27.277710268717247);
    5011           6 :   parameter_vac_H[HIS].push_back(-5.674444390934355);
    5012           6 :   parameter_vac_H[HIS].push_back(33.4059567406171);
    5013           6 :   parameter_vac_H[HIS].push_back(-11.60826210271092);
    5014           6 :   parameter_vac_H[HIS].push_back(-1.7359607560773076);
    5015             : 
    5016             :   // NUCLEIC ACIDS
    5017             : 
    5018             :   // BB_PO2-BB_PO3 H and D parameters are identical as there is no H or D in the bead.
    5019           6 :   parameter_solv_H[BB_PO3].push_back(1464.5929001192262);
    5020           6 :   parameter_solv_H[BB_PO3].push_back(-2.316908934494931);
    5021           6 :   parameter_solv_H[BB_PO3].push_back(-1882.4844584696532);
    5022           6 :   parameter_solv_H[BB_PO3].push_back(-258.8660305554736);
    5023           6 :   parameter_solv_H[BB_PO3].push_back(2007.5216385943972);
    5024           6 :   parameter_solv_H[BB_PO3].push_back(-1087.6423562424877);
    5025           6 :   parameter_solv_H[BB_PO3].push_back(154.89236486681165);
    5026             : 
    5027           6 :   parameter_solv_H[BB_PO2].push_back(575.5201001192197);
    5028           6 :   parameter_solv_H[BB_PO2].push_back(-0.6126595489733864);
    5029           6 :   parameter_solv_H[BB_PO2].push_back(-623.3371092254899);
    5030           6 :   parameter_solv_H[BB_PO2].push_back(-68.05795957022144);
    5031           6 :   parameter_solv_H[BB_PO2].push_back(561.8052621243661);
    5032           6 :   parameter_solv_H[BB_PO2].push_back(-283.39573309540276);
    5033           6 :   parameter_solv_H[BB_PO2].push_back(35.550016980100295);
    5034             : 
    5035           6 :   parameter_solv_H[BB_DNA].push_back(21211.009600118316);
    5036           6 :   parameter_solv_H[BB_DNA].push_back(-90.18805990529991);
    5037           6 :   parameter_solv_H[BB_DNA].push_back(-39731.13373512149);
    5038           6 :   parameter_solv_H[BB_DNA].push_back(-10920.373563712872);
    5039           6 :   parameter_solv_H[BB_DNA].push_back(72882.21702424981);
    5040           6 :   parameter_solv_H[BB_DNA].push_back(-51747.487078112776);
    5041           6 :   parameter_solv_H[BB_DNA].push_back(11308.678429018755);
    5042             : 
    5043           6 :   parameter_solv_H[BB_DNA_5].push_back(22737.624100119025);
    5044           6 :   parameter_solv_H[BB_DNA_5].push_back(-102.72714886664161);
    5045           6 :   parameter_solv_H[BB_DNA_5].push_back(-43685.329677789734);
    5046           6 :   parameter_solv_H[BB_DNA_5].push_back(-12564.25937409345);
    5047           6 :   parameter_solv_H[BB_DNA_5].push_back(83454.87540484878);
    5048           6 :   parameter_solv_H[BB_DNA_5].push_back(-60367.15652138887);
    5049           6 :   parameter_solv_H[BB_DNA_5].push_back(13507.333729868991);
    5050             : 
    5051           6 :   parameter_solv_H[BB_DNA_3].push_back(22737.62410011902);
    5052           6 :   parameter_solv_H[BB_DNA_3].push_back(-101.57816684452251);
    5053           6 :   parameter_solv_H[BB_DNA_3].push_back(-43488.536705576145);
    5054           6 :   parameter_solv_H[BB_DNA_3].push_back(-12345.056184958425);
    5055           6 :   parameter_solv_H[BB_DNA_3].push_back(81963.52364114887);
    5056           6 :   parameter_solv_H[BB_DNA_3].push_back(-58791.59443618196);
    5057           6 :   parameter_solv_H[BB_DNA_3].push_back(13003.199362335583);
    5058             : 
    5059           6 :   parameter_solv_H[BB_RNA].push_back(23953.752900120977);
    5060           6 :   parameter_solv_H[BB_RNA].push_back(-117.35779348824417);
    5061           6 :   parameter_solv_H[BB_RNA].push_back(-47644.41735332843);
    5062           6 :   parameter_solv_H[BB_RNA].push_back(-14641.556643789861);
    5063           6 :   parameter_solv_H[BB_RNA].push_back(96893.48627050371);
    5064           6 :   parameter_solv_H[BB_RNA].push_back(-72249.62534169303);
    5065           6 :   parameter_solv_H[BB_RNA].push_back(16792.055521055358);
    5066             : 
    5067           6 :   parameter_solv_H[BB_RNA_5].push_back(25574.406400119024);
    5068           6 :   parameter_solv_H[BB_RNA_5].push_back(-131.99642772933734);
    5069           6 :   parameter_solv_H[BB_RNA_5].push_back(-52136.51404531251);
    5070           6 :   parameter_solv_H[BB_RNA_5].push_back(-16682.14273917604);
    5071           6 :   parameter_solv_H[BB_RNA_5].push_back(110278.01921639398);
    5072           6 :   parameter_solv_H[BB_RNA_5].push_back(-83715.92027818544);
    5073           6 :   parameter_solv_H[BB_RNA_5].push_back(19875.89133770605);
    5074             : 
    5075           6 :   parameter_solv_H[BB_RNA_3].push_back(25574.406400119027);
    5076           6 :   parameter_solv_H[BB_RNA_3].push_back(-127.96875237036166);
    5077           6 :   parameter_solv_H[BB_RNA_3].push_back(-51407.18391758439);
    5078           6 :   parameter_solv_H[BB_RNA_3].push_back(-15922.900669975606);
    5079           6 :   parameter_solv_H[BB_RNA_3].push_back(105078.5888910626);
    5080           6 :   parameter_solv_H[BB_RNA_3].push_back(-78289.16276190645);
    5081           6 :   parameter_solv_H[BB_RNA_3].push_back(18156.832143441192);
    5082             : 
    5083           6 :   parameter_solv_H[BASE_A].push_back(13282.562500119211);
    5084           6 :   parameter_solv_H[BASE_A].push_back(-76.45124168404048);
    5085           6 :   parameter_solv_H[BASE_A].push_back(-28376.06994108963);
    5086           6 :   parameter_solv_H[BASE_A].push_back(-9972.910773722022);
    5087           6 :   parameter_solv_H[BASE_A].push_back(65873.86341939073);
    5088           6 :   parameter_solv_H[BASE_A].push_back(-52064.33492910885);
    5089           6 :   parameter_solv_H[BASE_A].push_back(12931.608989412513);
    5090             : 
    5091           6 :   parameter_solv_H[BASE_C].push_back(10600.76160011891);
    5092           6 :   parameter_solv_H[BASE_C].push_back(-49.1670871249108);
    5093           6 :   parameter_solv_H[BASE_C].push_back(-20239.818742072875);
    5094           6 :   parameter_solv_H[BASE_C].push_back(-6020.278780090207);
    5095           6 :   parameter_solv_H[BASE_C].push_back(39632.13288981881);
    5096           6 :   parameter_solv_H[BASE_C].push_back(-28954.779736165576);
    5097           6 :   parameter_solv_H[BASE_C].push_back(6551.541109526305);
    5098             : 
    5099           6 :   parameter_solv_H[BASE_G].push_back(15470.384400119934);
    5100           6 :   parameter_solv_H[BASE_G].push_back(-93.8013620200972);
    5101           6 :   parameter_solv_H[BASE_G].push_back(-36188.29687013545);
    5102           6 :   parameter_solv_H[BASE_G].push_back(-13717.685098209471);
    5103           6 :   parameter_solv_H[BASE_G].push_back(95658.18473657136);
    5104           6 :   parameter_solv_H[BASE_G].push_back(-81262.37811451119);
    5105           6 :   parameter_solv_H[BASE_G].push_back(21841.903930943085);
    5106             : 
    5107           6 :   parameter_solv_H[BASE_T].push_back(17210.81610011936);
    5108           6 :   parameter_solv_H[BASE_T].push_back(-93.10189802920208);
    5109           6 :   parameter_solv_H[BASE_T].push_back(-36466.51927689957);
    5110           6 :   parameter_solv_H[BASE_T].push_back(-12425.55615716932);
    5111           6 :   parameter_solv_H[BASE_T].push_back(83847.427808925);
    5112           6 :   parameter_solv_H[BASE_T].push_back(-66735.64997846584);
    5113           6 :   parameter_solv_H[BASE_T].push_back(16757.3463987507);
    5114             : 
    5115           6 :   parameter_solv_H[BASE_U].push_back(10909.802500119395);
    5116           6 :   parameter_solv_H[BASE_U].push_back(-46.17712672768298);
    5117           6 :   parameter_solv_H[BASE_U].push_back(-20149.67695512526);
    5118           6 :   parameter_solv_H[BASE_U].push_back(-5590.242961204435);
    5119           6 :   parameter_solv_H[BASE_U].push_back(37169.2740983132);
    5120           6 :   parameter_solv_H[BASE_U].push_back(-26475.631627167604);
    5121           6 :   parameter_solv_H[BASE_U].push_back(5808.201015156168);
    5122             : 
    5123           6 :   parameter_mix_H[BB_PO3].push_back(143.5890401192106);
    5124           6 :   parameter_mix_H[BB_PO3].push_back(-0.0679405156108208);
    5125           6 :   parameter_mix_H[BB_PO3].push_back(-131.78648321068806);
    5126           6 :   parameter_mix_H[BB_PO3].push_back(-7.222980065241985);
    5127           6 :   parameter_mix_H[BB_PO3].push_back(79.67309464590994);
    5128           6 :   parameter_mix_H[BB_PO3].push_back(-27.950095608460042);
    5129           6 :   parameter_mix_H[BB_PO3].push_back(0.12790403369995257);
    5130             : 
    5131           6 :   parameter_mix_H[BB_PO2].push_back(80.12660011920252);
    5132           6 :   parameter_mix_H[BB_PO2].push_back(-0.0278885551982023);
    5133           6 :   parameter_mix_H[BB_PO2].push_back(-60.532194918222984);
    5134           6 :   parameter_mix_H[BB_PO2].push_back(-2.976882903409687);
    5135           6 :   parameter_mix_H[BB_PO2].push_back(33.30645116638125);
    5136           6 :   parameter_mix_H[BB_PO2].push_back(-11.601573219761374);
    5137           6 :   parameter_mix_H[BB_PO2].push_back(0.12551046492022422);
    5138             : 
    5139           6 :   parameter_mix_H[BB_DNA].push_back(712.7621601191935);
    5140           6 :   parameter_mix_H[BB_DNA].push_back(-0.3228709821198571);
    5141           6 :   parameter_mix_H[BB_DNA].push_back(-784.5118228559945);
    5142           6 :   parameter_mix_H[BB_DNA].push_back(-27.196125702249613);
    5143           6 :   parameter_mix_H[BB_DNA].push_back(410.0185035102729);
    5144           6 :   parameter_mix_H[BB_DNA].push_back(-54.453513369320355);
    5145           6 :   parameter_mix_H[BB_DNA].push_back(-44.85506789237683);
    5146             : 
    5147           6 :   parameter_mix_H[BB_DNA_5].push_back(625.175339965785);
    5148           6 :   parameter_mix_H[BB_DNA_5].push_back(0.2691706617748245);
    5149           6 :   parameter_mix_H[BB_DNA_5].push_back(-582.8721350420001);
    5150           6 :   parameter_mix_H[BB_DNA_5].push_back(46.512408351374326);
    5151           6 :   parameter_mix_H[BB_DNA_5].push_back(-58.93886949899108);
    5152           6 :   parameter_mix_H[BB_DNA_5].push_back(307.29720336085046);
    5153           6 :   parameter_mix_H[BB_DNA_5].push_back(-131.71996309259953);
    5154             : 
    5155           6 :   parameter_mix_H[BB_DNA_3].push_back(625.1753399401266);
    5156           6 :   parameter_mix_H[BB_DNA_3].push_back(0.08763234414546289);
    5157           6 :   parameter_mix_H[BB_DNA_3].push_back(-606.8067575087485);
    5158           6 :   parameter_mix_H[BB_DNA_3].push_back(20.84427254872218);
    5159           6 :   parameter_mix_H[BB_DNA_3].push_back(92.53523123608991);
    5160           6 :   parameter_mix_H[BB_DNA_3].push_back(162.04688035654937);
    5161           6 :   parameter_mix_H[BB_DNA_3].push_back(-89.13571774638052);
    5162             : 
    5163           6 :   parameter_mix_H[BB_RNA].push_back(936.9775801191857);
    5164           6 :   parameter_mix_H[BB_RNA].push_back(-1.3233686929680253);
    5165           6 :   parameter_mix_H[BB_RNA].push_back(-1212.1627155263773);
    5166           6 :   parameter_mix_H[BB_RNA].push_back(-141.35324744384351);
    5167           6 :   parameter_mix_H[BB_RNA].push_back(1155.8281658363026);
    5168           6 :   parameter_mix_H[BB_RNA].push_back(-548.9340055857343);
    5169           6 :   parameter_mix_H[BB_RNA].push_back(50.81734777881503);
    5170             : 
    5171           6 :   parameter_mix_H[BB_RNA_5].push_back(848.5355201165631);
    5172           6 :   parameter_mix_H[BB_RNA_5].push_back(-0.49570338490120175);
    5173           6 :   parameter_mix_H[BB_RNA_5].push_back(-976.1033073783973);
    5174           6 :   parameter_mix_H[BB_RNA_5].push_back(-32.943532187986605);
    5175           6 :   parameter_mix_H[BB_RNA_5].push_back(475.66177061923884);
    5176           6 :   parameter_mix_H[BB_RNA_5].push_back(17.51955845824258);
    5177           6 :   parameter_mix_H[BB_RNA_5].push_back(-96.74451972314769);
    5178             : 
    5179           6 :   parameter_mix_H[BB_RNA_3].push_back(848.5355201192122);
    5180           6 :   parameter_mix_H[BB_RNA_3].push_back(-0.8301109354355396);
    5181           6 :   parameter_mix_H[BB_RNA_3].push_back(-1019.9524389785406);
    5182           6 :   parameter_mix_H[BB_RNA_3].push_back(-84.1388451424885);
    5183           6 :   parameter_mix_H[BB_RNA_3].push_back(787.1277245040931);
    5184           6 :   parameter_mix_H[BB_RNA_3].push_back(-294.67807432795627);
    5185           6 :   parameter_mix_H[BB_RNA_3].push_back(-1.3214626461251089);
    5186             : 
    5187           6 :   parameter_mix_H[BASE_A].push_back(1504.9345001191857);
    5188           6 :   parameter_mix_H[BASE_A].push_back(-3.5306888452552663);
    5189           6 :   parameter_mix_H[BASE_A].push_back(-2234.3933572775572);
    5190           6 :   parameter_mix_H[BASE_A].push_back(-380.0255208494757);
    5191           6 :   parameter_mix_H[BASE_A].push_back(2726.27802432048);
    5192           6 :   parameter_mix_H[BASE_A].push_back(-1490.8825754968443);
    5193           6 :   parameter_mix_H[BASE_A].push_back(199.7501110740159);
    5194             : 
    5195           6 :   parameter_mix_H[BASE_C].push_back(939.8188801192172);
    5196           6 :   parameter_mix_H[BASE_C].push_back(-1.489638186262854);
    5197           6 :   parameter_mix_H[BASE_C].push_back(-1244.5515798554075);
    5198           6 :   parameter_mix_H[BASE_C].push_back(-161.3972705672055);
    5199           6 :   parameter_mix_H[BASE_C].push_back(1276.3568466722545);
    5200           6 :   parameter_mix_H[BASE_C].push_back(-643.3057776225742);
    5201           6 :   parameter_mix_H[BASE_C].push_back(72.75963113826273);
    5202             : 
    5203           6 :   parameter_mix_H[BASE_G].push_back(1768.434840119199);
    5204           6 :   parameter_mix_H[BASE_G].push_back(-6.505347007077434);
    5205           6 :   parameter_mix_H[BASE_G].push_back(-2919.3856777898427);
    5206           6 :   parameter_mix_H[BASE_G].push_back(-701.2456464463938);
    5207           6 :   parameter_mix_H[BASE_G].push_back(4464.594230284102);
    5208           6 :   parameter_mix_H[BASE_G].push_back(-2733.138521295608);
    5209           6 :   parameter_mix_H[BASE_G].push_back(458.1177706235891);
    5210             : 
    5211           6 :   parameter_mix_H[BASE_T].push_back(1179.3981001192033);
    5212           6 :   parameter_mix_H[BASE_T].push_back(-3.2037849252756527);
    5213           6 :   parameter_mix_H[BASE_T].push_back(-1821.255498763799);
    5214           6 :   parameter_mix_H[BASE_T].push_back(-371.01993266441303);
    5215           6 :   parameter_mix_H[BASE_T].push_back(2604.074226688971);
    5216           6 :   parameter_mix_H[BASE_T].push_back(-1648.1965787713084);
    5217           6 :   parameter_mix_H[BASE_T].push_back(307.2962186436368);
    5218             : 
    5219           6 :   parameter_mix_H[BASE_U].push_back(956.3442001192266);
    5220           6 :   parameter_mix_H[BASE_U].push_back(-1.724458000760567);
    5221           6 :   parameter_mix_H[BASE_U].push_back(-1287.9746970192687);
    5222           6 :   parameter_mix_H[BASE_U].push_back(-192.74748379510373);
    5223           6 :   parameter_mix_H[BASE_U].push_back(1459.0789258833893);
    5224           6 :   parameter_mix_H[BASE_U].push_back(-810.0763075080915);
    5225           6 :   parameter_mix_H[BASE_U].push_back(119.81810290248339);
    5226             : 
    5227           6 :   parameter_vac_H[BB_PO3].push_back(3.519375907888525);
    5228           6 :   parameter_vac_H[BB_PO3].push_back(7.742660056553524e-05);
    5229           6 :   parameter_vac_H[BB_PO3].push_back(-1.3856562746347367);
    5230           6 :   parameter_vac_H[BB_PO3].push_back(0.00821183249969174);
    5231           6 :   parameter_vac_H[BB_PO3].push_back(0.21213096729728745);
    5232           6 :   parameter_vac_H[BB_PO3].push_back(0.032592855104331325);
    5233           6 :   parameter_vac_H[BB_PO3].push_back(-0.02236149538438434);
    5234             : 
    5235           6 :   parameter_vac_H[BB_PO2].push_back(2.7889001116093275);
    5236           6 :   parameter_vac_H[BB_PO2].push_back(-0.00011178884266113128);
    5237           6 :   parameter_vac_H[BB_PO2].push_back(-1.1702605818380667);
    5238           6 :   parameter_vac_H[BB_PO2].push_back(-0.011278044036819933);
    5239           6 :   parameter_vac_H[BB_PO2].push_back(0.3214006584089025);
    5240           6 :   parameter_vac_H[BB_PO2].push_back(-0.04097165983591666);
    5241           6 :   parameter_vac_H[BB_PO2].push_back(-0.017525098100539722);
    5242             : 
    5243           6 :   parameter_vac_H[BB_DNA].push_back(5.987809026456476);
    5244           6 :   parameter_vac_H[BB_DNA].push_back(9.945454528827912e-05);
    5245           6 :   parameter_vac_H[BB_DNA].push_back(-1.1884708569330031);
    5246           6 :   parameter_vac_H[BB_DNA].push_back(-0.007457733256362841);
    5247           6 :   parameter_vac_H[BB_DNA].push_back(0.05666858781418339);
    5248           6 :   parameter_vac_H[BB_DNA].push_back(-0.15158797629971757);
    5249           6 :   parameter_vac_H[BB_DNA].push_back(0.11642340861329734);
    5250             : 
    5251           6 :   parameter_vac_H[BB_DNA_5].push_back(4.297328944539055);
    5252           6 :   parameter_vac_H[BB_DNA_5].push_back(0.0014793971885106831);
    5253           6 :   parameter_vac_H[BB_DNA_5].push_back(1.3961088365255605);
    5254           6 :   parameter_vac_H[BB_DNA_5].push_back(0.08974639858979384);
    5255           6 :   parameter_vac_H[BB_DNA_5].push_back(-1.5198099705167643);
    5256           6 :   parameter_vac_H[BB_DNA_5].push_back(-0.12127122359433733);
    5257           6 :   parameter_vac_H[BB_DNA_5].push_back(0.4134601046223601);
    5258             : 
    5259           6 :   parameter_vac_H[BB_DNA_3].push_back(4.297328886488132);
    5260           6 :   parameter_vac_H[BB_DNA_3].push_back(0.0041802954281271905);
    5261           6 :   parameter_vac_H[BB_DNA_3].push_back(1.6065462295705266);
    5262           6 :   parameter_vac_H[BB_DNA_3].push_back(0.4399805535688805);
    5263           6 :   parameter_vac_H[BB_DNA_3].push_back(-3.3806711791929804);
    5264           6 :   parameter_vac_H[BB_DNA_3].push_back(1.6729551563628675);
    5265           6 :   parameter_vac_H[BB_DNA_3].push_back(-0.10911063067909885);
    5266             : 
    5267           6 :   parameter_vac_H[BB_RNA].push_back(9.162728984394093);
    5268           6 :   parameter_vac_H[BB_RNA].push_back(0.00019952321584579868);
    5269           6 :   parameter_vac_H[BB_RNA].push_back(-4.744748946331966);
    5270           6 :   parameter_vac_H[BB_RNA].push_back(0.025106563403946364);
    5271           6 :   parameter_vac_H[BB_RNA].push_back(1.2302956694109803);
    5272           6 :   parameter_vac_H[BB_RNA].push_back(0.12359062278096915);
    5273           6 :   parameter_vac_H[BB_RNA].push_back(-0.1725633367685285);
    5274             : 
    5275           6 :   parameter_vac_H[BB_RNA_5].push_back(7.038408898671503);
    5276           6 :   parameter_vac_H[BB_RNA_5].push_back(0.005106788424920148);
    5277           6 :   parameter_vac_H[BB_RNA_5].push_back(-0.8981588221803118);
    5278           6 :   parameter_vac_H[BB_RNA_5].push_back(0.4922588155214312);
    5279           6 :   parameter_vac_H[BB_RNA_5].push_back(-2.6667853454023644);
    5280           6 :   parameter_vac_H[BB_RNA_5].push_back(1.533316567240718);
    5281           6 :   parameter_vac_H[BB_RNA_5].push_back(-0.07199604869737707);
    5282             : 
    5283           6 :   parameter_vac_H[BB_RNA_3].push_back(7.038408892621863);
    5284           6 :   parameter_vac_H[BB_RNA_3].push_back(0.002993083907266898);
    5285           6 :   parameter_vac_H[BB_RNA_3].push_back(-1.3626596831098492);
    5286           6 :   parameter_vac_H[BB_RNA_3].push_back(0.3138856961130113);
    5287           6 :   parameter_vac_H[BB_RNA_3].push_back(-1.684185014289391);
    5288           6 :   parameter_vac_H[BB_RNA_3].push_back(1.1862168720864616);
    5289           6 :   parameter_vac_H[BB_RNA_3].push_back(-0.1443894172417523);
    5290             : 
    5291           6 :   parameter_vac_H[BASE_A].push_back(42.62784088079008);
    5292           6 :   parameter_vac_H[BASE_A].push_back(0.02302908536431516);
    5293           6 :   parameter_vac_H[BASE_A].push_back(-33.22707177297222);
    5294           6 :   parameter_vac_H[BASE_A].push_back(2.6853748424439834);
    5295           6 :   parameter_vac_H[BASE_A].push_back(-1.6632902891624768);
    5296           6 :   parameter_vac_H[BASE_A].push_back(11.905766349515268);
    5297           6 :   parameter_vac_H[BASE_A].push_back(-4.547083454788805);
    5298             : 
    5299           6 :   parameter_vac_H[BASE_C].push_back(20.83009588079022);
    5300           6 :   parameter_vac_H[BASE_C].push_back(0.017055822321768378);
    5301           6 :   parameter_vac_H[BASE_C].push_back(-8.349634734370916);
    5302           6 :   parameter_vac_H[BASE_C].push_back(1.9324634367723073);
    5303           6 :   parameter_vac_H[BASE_C].push_back(-8.435199734060882);
    5304           6 :   parameter_vac_H[BASE_C].push_back(8.272798368731268);
    5305           6 :   parameter_vac_H[BASE_C].push_back(-1.986671440757263);
    5306             : 
    5307           6 :   parameter_vac_H[BASE_G].push_back(50.53788088079374);
    5308           6 :   parameter_vac_H[BASE_G].push_back(0.024035597617780367);
    5309           6 :   parameter_vac_H[BASE_G].push_back(-47.94916639302998);
    5310           6 :   parameter_vac_H[BASE_G].push_back(3.143375731466498);
    5311           6 :   parameter_vac_H[BASE_G].push_back(4.297009866708155);
    5312           6 :   parameter_vac_H[BASE_G].push_back(15.855448505050578);
    5313           6 :   parameter_vac_H[BASE_G].push_back(-7.827484135873966);
    5314             : 
    5315           6 :   parameter_vac_H[BASE_T].push_back(20.20502488079069);
    5316           6 :   parameter_vac_H[BASE_T].push_back(0.033659966153300002);
    5317           6 :   parameter_vac_H[BASE_T].push_back(-6.057999187718758);
    5318           6 :   parameter_vac_H[BASE_T].push_back(4.146969282504351);
    5319           6 :   parameter_vac_H[BASE_T].push_back(-20.664315319574357);
    5320           6 :   parameter_vac_H[BASE_T].push_back(19.982178623201648);
    5321           6 :   parameter_vac_H[BASE_T].push_back(-5.440921587349456);
    5322             : 
    5323           6 :   parameter_vac_H[BASE_U].push_back(20.958084119209754);
    5324           6 :   parameter_vac_H[BASE_U].push_back(-0.005164660707148803);
    5325           6 :   parameter_vac_H[BASE_U].push_back(-14.53831312442302);
    5326           6 :   parameter_vac_H[BASE_U].push_back(-0.5276995756310442);
    5327           6 :   parameter_vac_H[BASE_U].push_back(7.060900707522138);
    5328           6 :   parameter_vac_H[BASE_U].push_back(-1.8988408480951036);
    5329           6 :   parameter_vac_H[BASE_U].push_back(-0.215000567681094);
    5330             : 
    5331       21340 :   for(unsigned i=0; i<atoms.size(); ++i) {
    5332       21334 :     std::string Aname = pdb.getAtomName(atoms[i]);
    5333       21334 :     std::string Rname = pdb.getResidueName(atoms[i]);
    5334       21334 :     Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
    5335       21334 :     if(Rname=="ALA") {
    5336        1078 :       atoi[residue_atom[i]]=ALA;
    5337       20256 :     } else if(Rname=="ARG") {
    5338        1296 :       atoi[residue_atom[i]]=ARG;
    5339       18960 :     } else if(Rname=="ASN") {
    5340        1080 :       atoi[residue_atom[i]]=ASN;
    5341       17880 :     } else if(Rname=="ASP") {
    5342         936 :       atoi[residue_atom[i]]=ASP;
    5343       16944 :     } else if(Rname=="CYS") {
    5344          72 :       atoi[residue_atom[i]]=CYS;
    5345       16872 :     } else if(Rname=="CYX") {
    5346           0 :       atoi[residue_atom[i]]=CYX;
    5347       16872 :     } else if(Rname=="GLN") {
    5348        1558 :       atoi[residue_atom[i]]=GLN;
    5349       15314 :     } else if(Rname=="GLU") {
    5350         714 :       atoi[residue_atom[i]]=GLU;
    5351       14600 :     } else if(Rname=="GLY") {
    5352         936 :       atoi[residue_atom[i]]=GLY;
    5353       13664 :     } else if(Rname=="HIS") {
    5354           0 :       atoi[residue_atom[i]]=HIS;
    5355       13664 :     } else if(Rname=="HID") {
    5356           0 :       atoi[residue_atom[i]]=HIS;
    5357       13664 :     } else if(Rname=="HIE") {
    5358         216 :       atoi[residue_atom[i]]=HIS;
    5359       13448 :     } else if(Rname=="HIP") {
    5360           0 :       atoi[residue_atom[i]]=HIP;
    5361             :       // CHARMM NAMING FOR PROTONATION STATES OF HISTIDINE
    5362       13448 :     } else if(Rname=="HSD") {
    5363           0 :       atoi[residue_atom[i]]=HIS;
    5364       13448 :     } else if(Rname=="HSE") {
    5365           0 :       atoi[residue_atom[i]]=HIS;
    5366       13448 :     } else if(Rname=="HSP") {
    5367           0 :       atoi[residue_atom[i]]=HIP;
    5368       13448 :     } else if(Rname=="ILE") {
    5369        1296 :       atoi[residue_atom[i]]=ILE;
    5370       12152 :     } else if(Rname=="LEU") {
    5371        2280 :       atoi[residue_atom[i]]=LEU;
    5372        9872 :     } else if(Rname=="LYS") {
    5373        1560 :       atoi[residue_atom[i]]=LYS;
    5374        8312 :     } else if(Rname=="MET") {
    5375         836 :       atoi[residue_atom[i]]=MET;
    5376        7476 :     } else if(Rname=="PHE") {
    5377        1512 :       atoi[residue_atom[i]]=PHE;
    5378        5964 :     } else if(Rname=="PRO") {
    5379        1122 :       atoi[residue_atom[i]]=PRO;
    5380        4842 :     } else if(Rname=="SER") {
    5381         768 :       atoi[residue_atom[i]]=SER;
    5382        4074 :     } else if(Rname=="THR") {
    5383         728 :       atoi[residue_atom[i]]=THR;
    5384        3346 :     } else if(Rname=="TRP") {
    5385           0 :       atoi[residue_atom[i]]=TRP;
    5386        3346 :     } else if(Rname=="TYR") {
    5387         792 :       atoi[residue_atom[i]]=TYR;
    5388        2554 :     } else if(Rname=="VAL") {
    5389        1600 :       atoi[residue_atom[i]]=VAL;
    5390             :     }
    5391             :     // NUCLEIC ACIDS
    5392             :     // nucleobases are not automatically populated as an additional check on the health of the PDB.
    5393             :     // RNA - G
    5394         954 :     else if(Rname=="G") {
    5395           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    5396           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    5397           0 :         atoi [residue_atom[i]]=BB_PO2;
    5398           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5399           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5400           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5401           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5402           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5403           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5404           0 :         atoi[residue_atom[i]]=BB_RNA;
    5405           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5406           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5407           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5408           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5409           0 :         atoi[residue_atom[i]]=BASE_G;
    5410           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5411             :       // RNA - G3
    5412         954 :     } else if(Rname=="G3") {
    5413           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5414           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5415           0 :         atoi [residue_atom[i]]=BB_PO2;
    5416           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    5417           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    5418           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    5419           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    5420           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    5421           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    5422           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    5423           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5424           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5425           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5426           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5427           0 :         atoi[residue_atom[i]]=BASE_G;
    5428           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5429             :       // RNA - G5
    5430         954 :     } else if(Rname=="G5") {
    5431           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5432           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5433           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5434           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    5435           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    5436           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    5437           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    5438           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5439           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5440           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5441           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5442           0 :         atoi[residue_atom[i]]=BASE_G;
    5443           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5444             :       // RNA - GT
    5445         954 :     } else if(Rname=="GT") {
    5446           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    5447           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    5448           0 :         atoi [residue_atom[i]]=BB_PO3;
    5449           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5450           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5451           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5452           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5453           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5454           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5455           0 :         atoi[residue_atom[i]]=BB_RNA;
    5456           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5457           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5458           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5459           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5460           0 :         atoi[residue_atom[i]]=BASE_G;
    5461           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5462             :       // RNA - U
    5463         954 :     } else if(Rname=="U") {
    5464        2886 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    5465        1482 :           Aname=="O1P" || Aname=="O2P"  ) {
    5466          78 :         atoi [residue_atom[i]]=BB_PO2;
    5467        2548 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5468        2132 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5469        1716 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5470        1326 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5471        1196 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5472        1560 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5473         416 :         atoi[residue_atom[i]]=BB_RNA;
    5474         884 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    5475         468 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    5476         364 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    5477         286 :         atoi[residue_atom[i]]=BASE_U;
    5478           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5479             :       // RNA - U3
    5480         174 :     } else if(Rname=="U3") {
    5481         230 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5482         174 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5483           6 :         atoi [residue_atom[i]]=BB_PO2;
    5484         204 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    5485         172 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    5486         140 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    5487         110 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    5488          94 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    5489          78 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    5490          34 :         atoi[residue_atom[i]]=BB_RNA_3;
    5491          68 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    5492          36 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    5493          28 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    5494          22 :         atoi[residue_atom[i]]=BASE_U;
    5495           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5496             :       // RNA - U5
    5497         112 :     } else if(Rname=="U5") {
    5498         408 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5499         344 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5500         280 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5501         216 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    5502         176 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    5503         156 :           Aname=="H2'1" || Aname=="H5T" ) {
    5504          68 :         atoi[residue_atom[i]]=BB_RNA_5;
    5505         136 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    5506          72 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    5507          56 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    5508          44 :         atoi[residue_atom[i]]=BASE_U;
    5509           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5510             :       // RNA - UT
    5511           0 :     } else if(Rname=="UT") {
    5512           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    5513           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    5514           0 :         atoi [residue_atom[i]]=BB_PO3;
    5515           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5516           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5517           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5518           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5519           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5520           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5521           0 :         atoi[residue_atom[i]]=BB_RNA;
    5522           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    5523           0 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    5524           0 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    5525           0 :         atoi[residue_atom[i]]=BASE_U;
    5526           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5527             :       // RNA - A
    5528           0 :     } else if(Rname=="A") {
    5529           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    5530           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    5531           0 :         atoi [residue_atom[i]]=BB_PO2;
    5532           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5533           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5534           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5535           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5536           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5537           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5538           0 :         atoi[residue_atom[i]]=BB_RNA;
    5539           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5540           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5541           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5542           0 :                 Aname=="H61" || Aname=="H62" ) {
    5543           0 :         atoi[residue_atom[i]]=BASE_A;
    5544           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5545             :       // RNA - A3
    5546           0 :     } else if(Rname=="A3") {
    5547           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5548           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5549           0 :         atoi [residue_atom[i]]=BB_PO2;
    5550           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    5551           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    5552           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    5553           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    5554           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    5555           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    5556           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    5557           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5558           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5559           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5560           0 :                 Aname=="H61" || Aname=="H62" ) {
    5561           0 :         atoi[residue_atom[i]]=BASE_A;
    5562           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5563             :       // RNA - A5
    5564           0 :     } else if(Rname=="A5") {
    5565           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5566           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5567           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5568           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    5569           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    5570           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    5571           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    5572           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5573           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5574           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5575           0 :                 Aname=="H61" || Aname=="H62" ) {
    5576           0 :         atoi[residue_atom[i]]=BASE_A;
    5577           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5578             :       // RNA - AT
    5579           0 :     } else if(Rname=="AT") {
    5580           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    5581           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    5582           0 :         atoi [residue_atom[i]]=BB_PO3;
    5583           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5584           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5585           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5586           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5587           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5588           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5589           0 :         atoi[residue_atom[i]]=BB_RNA;
    5590           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5591           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5592           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5593           0 :                 Aname=="H61" || Aname=="H62" ) {
    5594           0 :         atoi[residue_atom[i]]=BASE_A;
    5595           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5596             :       // RNA - C
    5597           0 :     } else if(Rname=="C") {
    5598           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    5599           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    5600           0 :         atoi [residue_atom[i]]=BB_PO2;
    5601           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5602           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5603           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5604           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5605           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5606           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5607           0 :         atoi[residue_atom[i]]=BB_RNA;
    5608           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5609           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5610           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5611           0 :         atoi[residue_atom[i]]=BASE_C;
    5612           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5613             :       // RNA - C3
    5614           0 :     } else if(Rname=="C3") {
    5615           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5616           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5617           0 :         atoi [residue_atom[i]]=BB_PO2;
    5618           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    5619           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    5620           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    5621           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    5622           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    5623           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    5624           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    5625           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5626           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5627           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5628           0 :         atoi[residue_atom[i]]=BASE_C;
    5629           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5630             :       // RNA - C5
    5631           0 :     } else if(Rname=="C5") {
    5632           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5633           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5634           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5635           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    5636           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    5637           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    5638           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    5639           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5640           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5641           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5642           0 :         atoi[residue_atom[i]]=BASE_C;
    5643           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5644             :       // RNA - CT
    5645           0 :     } else if(Rname=="CT") {
    5646           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    5647           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    5648           0 :         atoi [residue_atom[i]]=BB_PO3;
    5649           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5650           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5651           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5652           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5653           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5654           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5655           0 :         atoi[residue_atom[i]]=BB_RNA;
    5656           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5657           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5658           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5659           0 :         atoi[residue_atom[i]]=BASE_C;
    5660           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5661             :       // DNA - G
    5662           0 :     } else if(Rname=="DG") {
    5663           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    5664           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    5665           0 :         atoi [residue_atom[i]]=BB_PO2;
    5666           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5667           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5668           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5669           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5670           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    5671           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    5672           0 :         atoi[residue_atom[i]]=BB_DNA;
    5673           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5674           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5675           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5676           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5677           0 :         atoi[residue_atom[i]]=BASE_G;
    5678           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5679             :       // DNA - G3
    5680           0 :     } else if(Rname=="DG3") {
    5681           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5682           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5683           0 :         atoi [residue_atom[i]]=BB_PO2;
    5684           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5685           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5686           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5687           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    5688           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5689             :                 Aname=="H3T" ) {
    5690           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    5691           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5692           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5693           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5694           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5695           0 :         atoi[residue_atom[i]]=BASE_G;
    5696           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5697             :       // DNA - G5
    5698           0 :     } else if(Rname=="DG5") {
    5699           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5700           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    5701           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5702           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5703           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5704             :           Aname=="H5T" ) {
    5705           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    5706           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5707           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5708           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5709           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5710           0 :         atoi[residue_atom[i]]=BASE_G;
    5711           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5712             :       // DNA - GT
    5713           0 :     } else if(Rname=="DGT") {
    5714           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    5715           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    5716           0 :         atoi [residue_atom[i]]=BB_PO3;
    5717           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5718           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5719           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5720           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5721           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    5722           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    5723           0 :         atoi[residue_atom[i]]=BB_DNA;
    5724           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5725           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5726           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5727           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5728           0 :         atoi[residue_atom[i]]=BASE_G;
    5729           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5730             :       // DNA - T
    5731           0 :     } else if(Rname=="DT") {
    5732           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    5733           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    5734           0 :         atoi [residue_atom[i]]=BB_PO2;
    5735           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5736           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5737           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5738           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5739           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    5740           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    5741           0 :         atoi[residue_atom[i]]=BB_DNA;
    5742           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    5743           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    5744           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    5745           0 :                 Aname=="H72" || Aname=="H73" ) {
    5746           0 :         atoi[residue_atom[i]]=BASE_T;
    5747           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5748             :       // DNA - T3
    5749           0 :     } else if(Rname=="DT3") {
    5750           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5751           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5752           0 :         atoi [residue_atom[i]]=BB_PO2;
    5753           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5754           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5755           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5756           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    5757           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5758             :                 Aname=="H3T" ) {
    5759           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    5760           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    5761           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    5762           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    5763           0 :                 Aname=="H72" || Aname=="H73" ) {
    5764           0 :         atoi[residue_atom[i]]=BASE_T;
    5765           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5766             :       // DNA - T5
    5767           0 :     } else if(Rname=="DT5") {
    5768           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5769           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    5770           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5771           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5772           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5773             :           Aname=="H5T" ) {
    5774           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    5775           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    5776           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    5777           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    5778           0 :                 Aname=="H72" || Aname=="H73" ) {
    5779           0 :         atoi[residue_atom[i]]=BASE_T;
    5780           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5781             :       // DNA - TT
    5782           0 :     } else if(Rname=="DTT") {
    5783           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    5784           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    5785           0 :         atoi [residue_atom[i]]=BB_PO3;
    5786           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5787           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5788           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5789           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5790           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    5791           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    5792           0 :         atoi[residue_atom[i]]=BB_DNA;
    5793           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    5794           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    5795           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    5796           0 :                 Aname=="H72" || Aname=="H73" ) {
    5797           0 :         atoi[residue_atom[i]]=BASE_T;
    5798           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5799             :       // DNA - A
    5800           0 :     } else if(Rname=="DA") {
    5801           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    5802           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    5803           0 :         atoi [residue_atom[i]]=BB_PO2;
    5804           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5805           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5806           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5807           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5808           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    5809           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    5810           0 :         atoi[residue_atom[i]]=BB_DNA;
    5811           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5812           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5813           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5814           0 :                 Aname=="H61" || Aname=="H62" ) {
    5815           0 :         atoi[residue_atom[i]]=BASE_A;
    5816           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5817             :       // DNA - A3
    5818           0 :     } else if(Rname=="DA3") {
    5819           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5820           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5821           0 :         atoi [residue_atom[i]]=BB_PO2;
    5822           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5823           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5824           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5825           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    5826           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5827             :                 Aname=="H3T" ) {
    5828           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    5829           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5830           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5831           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5832           0 :                 Aname=="H61" || Aname=="H62" ) {
    5833           0 :         atoi[residue_atom[i]]=BASE_A;
    5834           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5835             :       // DNA - A5
    5836           0 :     } else if(Rname=="DA5") {
    5837           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5838           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    5839           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5840           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5841           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5842             :           Aname=="H5T" ) {
    5843           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    5844           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5845           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5846           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5847           0 :                 Aname=="H61" || Aname=="H62" ) {
    5848           0 :         atoi[residue_atom[i]]=BASE_A;
    5849           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5850             :       // DNA - AT
    5851           0 :     } else if(Rname=="DAT") {
    5852           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    5853           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    5854           0 :         atoi [residue_atom[i]]=BB_PO3;
    5855           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5856           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5857           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5858           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5859           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    5860           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    5861           0 :         atoi[residue_atom[i]]=BB_DNA;
    5862           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5863           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5864           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5865           0 :                 Aname=="H61" || Aname=="H62" ) {
    5866           0 :         atoi[residue_atom[i]]=BASE_A;
    5867           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5868             :       // DNA - C
    5869           0 :     } else if(Rname=="DC") {
    5870           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    5871           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    5872           0 :         atoi [residue_atom[i]]=BB_PO2;
    5873           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5874           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5875           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5876           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5877           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    5878           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    5879           0 :         atoi[residue_atom[i]]=BB_DNA;
    5880           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5881           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5882           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5883           0 :         atoi[residue_atom[i]]=BASE_C;
    5884           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5885             :       // DNA - C3
    5886           0 :     } else if(Rname=="DC3") {
    5887           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5888           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5889           0 :         atoi [residue_atom[i]]=BB_PO2;
    5890           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5891           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5892           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5893           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    5894           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5895             :                 Aname=="H3T" ) {
    5896           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    5897           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5898           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5899           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5900           0 :         atoi[residue_atom[i]]=BASE_C;
    5901           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5902             :       // DNA - C5
    5903           0 :     } else if(Rname=="DC5") {
    5904           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5905           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    5906           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5907           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5908           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5909             :           Aname=="H5T" ) {
    5910           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    5911           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5912           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5913           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5914           0 :         atoi[residue_atom[i]]=BASE_C;
    5915           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5916             :       // DNA - CT
    5917           0 :     } else if(Rname=="DCT") {
    5918           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    5919           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    5920           0 :         atoi [residue_atom[i]]=BB_PO3;
    5921           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5922           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5923           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5924           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5925           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    5926           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    5927           0 :         atoi[residue_atom[i]]=BB_DNA;
    5928           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5929           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5930           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5931           0 :         atoi[residue_atom[i]]=BASE_C;
    5932           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5933           0 :     } else error("Residue not known: "+Rname);
    5934             :   }
    5935           6 : }
    5936             : 
    5937           6 : void SAXS::getOnebeadparam_sansD(const PDB &pdb, const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &parameter_vac_D, std::vector<std::vector<long double> > &parameter_mix_D)
    5938             : { // parameter_solv is identical in SAXS/SANS_H/SANS_D since it depends exclusively on param_v. For that reason we kept param_solv only in SAXS and SANS_H.
    5939           6 :   parameter_mix_D[TRP].push_back(8105.740500119327);
    5940           6 :   parameter_mix_D[TRP].push_back(-41.785616935469804);
    5941           6 :   parameter_mix_D[TRP].push_back(-25456.92790554363);
    5942           6 :   parameter_mix_D[TRP].push_back(-10058.20599969184);
    5943           6 :   parameter_mix_D[TRP].push_back(86171.76479108425);
    5944           6 :   parameter_mix_D[TRP].push_back(-83227.63139882773);
    5945           6 :   parameter_mix_D[TRP].push_back(25121.390436258724);
    5946             : 
    5947           6 :   parameter_mix_D[TYR].push_back(6059.530560118732);
    5948           6 :   parameter_mix_D[TYR].push_back(-24.522695525705736);
    5949           6 :   parameter_mix_D[TYR].push_back(-17180.858815360847);
    5950           6 :   parameter_mix_D[TYR].push_back(-5990.1358528219325);
    5951           6 :   parameter_mix_D[TYR].push_back(52936.46126637543);
    5952           6 :   parameter_mix_D[TYR].push_back(-50150.0042622683);
    5953           6 :   parameter_mix_D[TYR].push_back(14914.553672440441);
    5954             : 
    5955           6 :   parameter_mix_D[PHE].push_back(5563.404880119222);
    5956           6 :   parameter_mix_D[PHE].push_back(-33.609784645922794);
    5957           6 :   parameter_mix_D[PHE].push_back(-14576.935030777448);
    5958           6 :   parameter_mix_D[PHE].push_back(-5759.170105553782);
    5959           6 :   parameter_mix_D[PHE].push_back(43316.895956549866);
    5960           6 :   parameter_mix_D[PHE].push_back(-39106.58694570862);
    5961           6 :   parameter_mix_D[PHE].push_back(11143.375742877468);
    5962             : 
    5963           6 :   parameter_mix_D[HIP].push_back(3981.7108801192553);
    5964           6 :   parameter_mix_D[HIP].push_back(-23.788371565946427);
    5965           6 :   parameter_mix_D[HIP].push_back(-9471.73953776056);
    5966           6 :   parameter_mix_D[HIP].push_back(-3690.3981577198365);
    5967           6 :   parameter_mix_D[HIP].push_back(26365.958584217453);
    5968           6 :   parameter_mix_D[HIP].push_back(-23067.58974902849);
    5969           6 :   parameter_mix_D[HIP].push_back(6390.507451097114);
    5970             : 
    5971           6 :   parameter_mix_D[ARG].push_back(6279.489359881259);
    5972           6 :   parameter_mix_D[ARG].push_back(1.2061878338083583);
    5973           6 :   parameter_mix_D[ARG].push_back(-20305.413937989913);
    5974           6 :   parameter_mix_D[ARG].push_back(-5621.666335222669);
    5975           6 :   parameter_mix_D[ARG].push_back(67341.96785520067);
    5976           6 :   parameter_mix_D[ARG].push_back(-68849.15464591733);
    5977           6 :   parameter_mix_D[ARG].push_back(21773.0630363882);
    5978             : 
    5979           6 :   parameter_mix_D[LYS].push_back(5434.487400119193);
    5980           6 :   parameter_mix_D[LYS].push_back(-29.32356328987909);
    5981           6 :   parameter_mix_D[LYS].push_back(-14363.66155749977);
    5982           6 :   parameter_mix_D[LYS].push_back(-5650.383128516514);
    5983           6 :   parameter_mix_D[LYS].push_back(44573.73888236887);
    5984           6 :   parameter_mix_D[LYS].push_back(-41515.980945300485);
    5985           6 :   parameter_mix_D[LYS].push_back(12181.965046747513);
    5986             : 
    5987           6 :   parameter_mix_D[CYS].push_back(1519.4030001192032);
    5988           6 :   parameter_mix_D[CYS].push_back(-3.564386334921097);
    5989           6 :   parameter_mix_D[CYS].push_back(-2275.813167459516);
    5990           6 :   parameter_mix_D[CYS].push_back(-409.54431591328125);
    5991           6 :   parameter_mix_D[CYS].push_back(2969.5412742839258);
    5992           6 :   parameter_mix_D[CYS].push_back(-1798.3157146799638);
    5993           6 :   parameter_mix_D[CYS].push_back(314.568167888235);
    5994             : 
    5995           6 :   parameter_mix_D[CYX].push_back(1310.696400119220);
    5996           6 :   parameter_mix_D[CYX].push_back(-2.919852579787);
    5997           6 :   parameter_mix_D[CYX].push_back(-1902.283026713150);
    5998           6 :   parameter_mix_D[CYX].push_back(-340.431267947190);
    5999           6 :   parameter_mix_D[CYX].push_back(2480.025274590502);
    6000           6 :   parameter_mix_D[CYX].push_back(-1529.188197179144);
    6001           6 :   parameter_mix_D[CYX].push_back(278.926068515295);
    6002             : 
    6003           6 :   parameter_mix_D[ASP].push_back(1861.6998401191709);
    6004           6 :   parameter_mix_D[ASP].push_back(-5.349780637260551);
    6005           6 :   parameter_mix_D[ASP].push_back(-2960.36741510377);
    6006           6 :   parameter_mix_D[ASP].push_back(-621.8270745040523);
    6007           6 :   parameter_mix_D[ASP].push_back(4334.798300452934);
    6008           6 :   parameter_mix_D[ASP].push_back(-2776.8560521554878);
    6009           6 :   parameter_mix_D[ASP].push_back(527.9777182094936);
    6010             : 
    6011           6 :   parameter_mix_D[GLU].push_back(2861.6017201192253);
    6012           6 :   parameter_mix_D[GLU].push_back(-13.146456903921809);
    6013           6 :   parameter_mix_D[GLU].push_back(-5393.408563875243);
    6014           6 :   parameter_mix_D[GLU].push_back(-1646.460570818364);
    6015           6 :   parameter_mix_D[GLU].push_back(10884.544923253858);
    6016           6 :   parameter_mix_D[GLU].push_back(-8159.923373048856);
    6017           6 :   parameter_mix_D[GLU].push_back(1914.545660397314);
    6018             : 
    6019           6 :   parameter_mix_D[ILE].push_back(4288.585540119189);
    6020           6 :   parameter_mix_D[ILE].push_back(-19.937215352880365);
    6021           6 :   parameter_mix_D[ILE].push_back(-8324.540144463375);
    6022           6 :   parameter_mix_D[ILE].push_back(-2431.835931316717);
    6023           6 :   parameter_mix_D[ILE].push_back(16079.9912986194);
    6024           6 :   parameter_mix_D[ILE].push_back(-11637.693060394462);
    6025           6 :   parameter_mix_D[ILE].push_back(2600.8258068480495);
    6026             : 
    6027           6 :   parameter_mix_D[LEU].push_back(4288.585540119186);
    6028           6 :   parameter_mix_D[LEU].push_back(-21.50343599461759);
    6029           6 :   parameter_mix_D[LEU].push_back(-8479.703435720274);
    6030           6 :   parameter_mix_D[LEU].push_back(-2647.8693829269596);
    6031           6 :   parameter_mix_D[LEU].push_back(17297.18115838578);
    6032           6 :   parameter_mix_D[LEU].push_back(-12826.972408323161);
    6033           6 :   parameter_mix_D[LEU].push_back(2953.1262521615645);
    6034             : 
    6035           6 :   parameter_mix_D[MET].push_back(3561.6276801191552);
    6036           6 :   parameter_mix_D[MET].push_back(-22.19323392975885);
    6037           6 :   parameter_mix_D[MET].push_back(-8348.33907053846);
    6038           6 :   parameter_mix_D[MET].push_back(-3323.053272414289);
    6039           6 :   parameter_mix_D[MET].push_back(23153.238909304255);
    6040           6 :   parameter_mix_D[MET].push_back(-20091.960440908682);
    6041           6 :   parameter_mix_D[MET].push_back(5518.759669687693);
    6042             : 
    6043           6 :   parameter_mix_D[ASN].push_back(2326.5396001192003);
    6044           6 :   parameter_mix_D[ASN].push_back(-8.634908921289112);
    6045           6 :   parameter_mix_D[ASN].push_back(-4057.4552636749636);
    6046           6 :   parameter_mix_D[ASN].push_back(-1032.743130124821);
    6047           6 :   parameter_mix_D[ASN].push_back(6957.141592429445);
    6048           6 :   parameter_mix_D[ASN].push_back(-4808.265318722317);
    6049           6 :   parameter_mix_D[ASN].push_back(1016.3944815533755);
    6050             : 
    6051           6 :   parameter_mix_D[PRO].push_back(2471.1663601191985);
    6052           6 :   parameter_mix_D[PRO].push_back(-6.360795284260088);
    6053           6 :   parameter_mix_D[PRO].push_back(-3825.4533158429153);
    6054           6 :   parameter_mix_D[PRO].push_back(-728.7164844824666);
    6055           6 :   parameter_mix_D[PRO].push_back(5195.036303827973);
    6056           6 :   parameter_mix_D[PRO].push_back(-3183.733716480742);
    6057           6 :   parameter_mix_D[PRO].push_back(563.2376162754107);
    6058             : 
    6059           6 :   parameter_mix_D[GLN].push_back(3431.669280119236);
    6060           6 :   parameter_mix_D[GLN].push_back(-19.412747205646166);
    6061           6 :   parameter_mix_D[GLN].push_back(-7298.017973002134);
    6062           6 :   parameter_mix_D[GLN].push_back(-2659.3014182337706);
    6063           6 :   parameter_mix_D[GLN].push_back(17890.76595805173);
    6064           6 :   parameter_mix_D[GLN].push_back(-14684.603067192957);
    6065           6 :   parameter_mix_D[GLN].push_back(3814.338335151394);
    6066             : 
    6067           6 :   parameter_mix_D[SER].push_back(1423.885200119192);
    6068           6 :   parameter_mix_D[SER].push_back(-2.586428606204385);
    6069           6 :   parameter_mix_D[SER].push_back(-1966.7369507188134);
    6070           6 :   parameter_mix_D[SER].push_back(-289.17277383434106);
    6071           6 :   parameter_mix_D[SER].push_back(2209.478296043199);
    6072           6 :   parameter_mix_D[SER].push_back(-1216.1521614944);
    6073           6 :   parameter_mix_D[SER].push_back(177.0615931546754);
    6074             : 
    6075           6 :   parameter_mix_D[THR].push_back(2311.2364801191825);
    6076           6 :   parameter_mix_D[THR].push_back(-6.258071321531929);
    6077           6 :   parameter_mix_D[THR].push_back(-3656.295629081312);
    6078           6 :   parameter_mix_D[THR].push_back(-716.4013890357804);
    6079           6 :   parameter_mix_D[THR].push_back(5071.656317108832);
    6080           6 :   parameter_mix_D[THR].push_back(-3125.8076789667816);
    6081           6 :   parameter_mix_D[THR].push_back(555.9775741081131);
    6082             : 
    6083           6 :   parameter_mix_D[VAL].push_back(3041.128320119224);
    6084           6 :   parameter_mix_D[VAL].push_back(-9.314034190716423);
    6085           6 :   parameter_mix_D[VAL].push_back(-5075.684780220629);
    6086           6 :   parameter_mix_D[VAL].push_back(-1070.7083380665008);
    6087           6 :   parameter_mix_D[VAL].push_back(7455.654515006894);
    6088           6 :   parameter_mix_D[VAL].push_back(-4701.19187164774);
    6089           6 :   parameter_mix_D[VAL].push_back(863.4906179388547);
    6090             : 
    6091           6 :   parameter_mix_D[ALA].push_back(1187.65300011922);
    6092           6 :   parameter_mix_D[ALA].push_back(-1.7011187932116822);
    6093           6 :   parameter_mix_D[ALA].push_back(-1521.0113615359212);
    6094           6 :   parameter_mix_D[ALA].push_back(-187.93745840575576);
    6095           6 :   parameter_mix_D[ALA].push_back(1514.6745873304449);
    6096           6 :   parameter_mix_D[ALA].push_back(-775.3890045113897);
    6097           6 :   parameter_mix_D[ALA].push_back(96.41428177656567);
    6098             : 
    6099           6 :   parameter_mix_D[GLY].push_back(581.6349001192067);
    6100           6 :   parameter_mix_D[GLY].push_back(-0.5877833598361395);
    6101           6 :   parameter_mix_D[GLY].push_back(-640.0421286186524);
    6102           6 :   parameter_mix_D[GLY].push_back(-64.58515074152534);
    6103           6 :   parameter_mix_D[GLY].push_back(551.9509853583185);
    6104           6 :   parameter_mix_D[GLY].push_back(-264.1522021146006);
    6105           6 :   parameter_mix_D[GLY].push_back(28.36986478439301);
    6106             : 
    6107           6 :   parameter_mix_D[HIS].push_back(3648.812220119277);
    6108           6 :   parameter_mix_D[HIS].push_back(-22.703075403555548);
    6109           6 :   parameter_mix_D[HIS].push_back(-8260.235189881098);
    6110           6 :   parameter_mix_D[HIS].push_back(-3190.3176569039265);
    6111           6 :   parameter_mix_D[HIS].push_back(21589.074332364213);
    6112           6 :   parameter_mix_D[HIS].push_back(-18108.640157613925);
    6113           6 :   parameter_mix_D[HIS].push_back(4801.237639634437);
    6114             : 
    6115           6 :   parameter_vac_D[TRP].push_back(270.43802511921314);
    6116           6 :   parameter_vac_D[TRP].push_back(-2.196022464340772);
    6117           6 :   parameter_vac_D[TRP].push_back(-780.9546710244318);
    6118           6 :   parameter_vac_D[TRP].push_back(-371.1573508312626);
    6119           6 :   parameter_vac_D[TRP].push_back(2668.7678731652445);
    6120           6 :   parameter_vac_D[TRP].push_back(-2478.2920954223678);
    6121           6 :   parameter_vac_D[TRP].push_back(722.3731624901676);
    6122             : 
    6123           6 :   parameter_vac_D[TYR].push_back(198.471744119211);
    6124           6 :   parameter_vac_D[TYR].push_back(-1.236792846228289);
    6125           6 :   parameter_vac_D[TYR].push_back(-508.0448711054671);
    6126           6 :   parameter_vac_D[TYR].push_back(-210.55908129481216);
    6127           6 :   parameter_vac_D[TYR].push_back(1558.3884734212413);
    6128           6 :   parameter_vac_D[TYR].push_back(-1418.36319255665);
    6129           6 :   parameter_vac_D[TYR].push_back(407.21567613893296);
    6130             : 
    6131           6 :   parameter_vac_D[PHE].push_back(182.46606411921402);
    6132           6 :   parameter_vac_D[PHE].push_back(-1.2708008333861447);
    6133           6 :   parameter_vac_D[PHE].push_back(-424.50905926426054);
    6134           6 :   parameter_vac_D[PHE].push_back(-177.97207825696387);
    6135           6 :   parameter_vac_D[PHE].push_back(1180.839971941918);
    6136           6 :   parameter_vac_D[PHE].push_back(-1004.004765231886);
    6137           6 :   parameter_vac_D[PHE].push_back(269.34384064610344);
    6138             : 
    6139           6 :   parameter_vac_D[HIP].push_back(161.95107611920753);
    6140           6 :   parameter_vac_D[HIP].push_back(-0.9661246983835707);
    6141           6 :   parameter_vac_D[HIP].push_back(-332.04673226423995);
    6142           6 :   parameter_vac_D[HIP].push_back(-125.41755194926544);
    6143           6 :   parameter_vac_D[HIP].push_back(808.705672166199);
    6144           6 :   parameter_vac_D[HIP].push_back(-648.8340711218191);
    6145           6 :   parameter_vac_D[HIP].push_back(163.71251277400307);
    6146             : 
    6147           6 :   parameter_vac_D[ARG].push_back(289.0340011192071);
    6148           6 :   parameter_vac_D[ARG].push_back(-1.4195753436279361);
    6149           6 :   parameter_vac_D[ARG].push_back(-836.3864005546434);
    6150           6 :   parameter_vac_D[ARG].push_back(-346.7081039129904);
    6151           6 :   parameter_vac_D[ARG].push_back(2922.003491580559);
    6152           6 :   parameter_vac_D[ARG].push_back(-2864.816533173085);
    6153           6 :   parameter_vac_D[ARG].push_back(877.9525045072293);
    6154             : 
    6155           6 :   parameter_vac_D[LYS].push_back(228.64464111920753);
    6156           6 :   parameter_vac_D[LYS].push_back(-1.686580749083617);
    6157           6 :   parameter_vac_D[LYS].push_back(-544.8870548339771);
    6158           6 :   parameter_vac_D[LYS].push_back(-252.11087773186324);
    6159           6 :   parameter_vac_D[LYS].push_back(1693.784850493428);
    6160           6 :   parameter_vac_D[LYS].push_back(-1514.2375008160348);
    6161           6 :   parameter_vac_D[LYS].push_back(427.0713155512121);
    6162             : 
    6163           6 :   parameter_vac_D[CYS].push_back(50.836900116324315);
    6164           6 :   parameter_vac_D[CYS].push_back(-0.040204572899665315);
    6165           6 :   parameter_vac_D[CYS].push_back(-55.592868149339424);
    6166           6 :   parameter_vac_D[CYS].push_back(-4.341359624977117);
    6167           6 :   parameter_vac_D[CYS].push_back(41.55290573185214);
    6168           6 :   parameter_vac_D[CYS].push_back(-17.248208429078456);
    6169           6 :   parameter_vac_D[CYS].push_back(1.0736187172140528);
    6170             : 
    6171           6 :   parameter_vac_D[CYX].push_back(41.770369115535);
    6172           6 :   parameter_vac_D[CYX].push_back(-0.019277246931);
    6173           6 :   parameter_vac_D[CYX].push_back(-40.006821199463);
    6174           6 :   parameter_vac_D[CYX].push_back(-2.056736901533);
    6175           6 :   parameter_vac_D[CYX].push_back(23.707430747544);
    6176           6 :   parameter_vac_D[CYX].push_back(-8.010813092204);
    6177           6 :   parameter_vac_D[CYX].push_back(-0.023482540763);
    6178             : 
    6179           6 :   parameter_vac_D[ASP].push_back(64.12806411920792);
    6180           6 :   parameter_vac_D[ASP].push_back(-0.08245818875074411);
    6181           6 :   parameter_vac_D[ASP].push_back(-78.95500211069523);
    6182           6 :   parameter_vac_D[ASP].push_back(-9.030157332821238);
    6183           6 :   parameter_vac_D[ASP].push_back(74.72033164806712);
    6184           6 :   parameter_vac_D[ASP].push_back(-36.71042192737952);
    6185           6 :   parameter_vac_D[ASP].push_back(4.0989206257493676);
    6186             : 
    6187           6 :   parameter_vac_D[GLU].push_back(100.14004911920799);
    6188           6 :   parameter_vac_D[GLU].push_back(-0.28685123265362006);
    6189           6 :   parameter_vac_D[GLU].push_back(-152.44619103423773);
    6190           6 :   parameter_vac_D[GLU].push_back(-32.99432901288321);
    6191           6 :   parameter_vac_D[GLU].push_back(225.5853175183811);
    6192           6 :   parameter_vac_D[GLU].push_back(-144.8489352831419);
    6193           6 :   parameter_vac_D[GLU].push_back(27.49692658880534);
    6194             : 
    6195           6 :   parameter_vac_D[ILE].push_back(165.04540911921134);
    6196           6 :   parameter_vac_D[ILE].push_back(-0.5061553029227089);
    6197           6 :   parameter_vac_D[ILE].push_back(-275.1890586090823);
    6198           6 :   parameter_vac_D[ILE].push_back(-57.288063177375356);
    6199           6 :   parameter_vac_D[ILE].push_back(398.9780357099449);
    6200           6 :   parameter_vac_D[ILE].push_back(-245.42678814428692);
    6201           6 :   parameter_vac_D[ILE].push_back(42.72941025472001);
    6202             : 
    6203           6 :   parameter_vac_D[LEU].push_back(165.04540911921134);
    6204           6 :   parameter_vac_D[LEU].push_back(-0.580034983510499);
    6205           6 :   parameter_vac_D[LEU].push_back(-281.30910057877514);
    6206           6 :   parameter_vac_D[LEU].push_back(-66.19427345166183);
    6207           6 :   parameter_vac_D[LEU].push_back(445.19214155995115);
    6208           6 :   parameter_vac_D[LEU].push_back(-287.0653610399624);
    6209           6 :   parameter_vac_D[LEU].push_back(53.86626261066706);
    6210             : 
    6211           6 :   parameter_vac_D[MET].push_back(123.83238411920684);
    6212           6 :   parameter_vac_D[MET].push_back(-0.7698672022751385);
    6213           6 :   parameter_vac_D[MET].push_back(-251.2481622173618);
    6214           6 :   parameter_vac_D[MET].push_back(-100.67742019193848);
    6215           6 :   parameter_vac_D[MET].push_back(641.1563254731632);
    6216           6 :   parameter_vac_D[MET].push_back(-524.8742634212379);
    6217           6 :   parameter_vac_D[MET].push_back(135.36487813767542);
    6218             : 
    6219           6 :   parameter_vac_D[ASN].push_back(94.12880411921148);
    6220           6 :   parameter_vac_D[ASN].push_back(-0.22986194121078912);
    6221           6 :   parameter_vac_D[ASN].push_back(-138.78769705028003);
    6222           6 :   parameter_vac_D[ASN].push_back(-25.896846049402594);
    6223           6 :   parameter_vac_D[ASN].push_back(184.55609781654326);
    6224           6 :   parameter_vac_D[ASN].push_back(-110.14043851975404);
    6225           6 :   parameter_vac_D[ASN].push_back(18.388834098004153);
    6226             : 
    6227           6 :   parameter_vac_D[PRO].push_back(90.51619611920745);
    6228           6 :   parameter_vac_D[PRO].push_back(-0.0977238494110807);
    6229           6 :   parameter_vac_D[PRO].push_back(-109.43531311067846);
    6230           6 :   parameter_vac_D[PRO].push_back(-10.592981104983805);
    6231           6 :   parameter_vac_D[PRO].push_back(93.64863466237733);
    6232           6 :   parameter_vac_D[PRO].push_back(-42.348197720920865);
    6233           6 :   parameter_vac_D[PRO].push_back(3.5854078482704574);
    6234             : 
    6235           6 :   parameter_vac_D[GLN].push_back(136.91340111920806);
    6236           6 :   parameter_vac_D[GLN].push_back(-0.7259026842220699);
    6237           6 :   parameter_vac_D[GLN].push_back(-257.0347011897067);
    6238           6 :   parameter_vac_D[GLN].push_back(-89.99600255417684);
    6239           6 :   parameter_vac_D[GLN].push_back(570.3890595917421);
    6240           6 :   parameter_vac_D[GLN].push_back(-438.8977029769549);
    6241           6 :   parameter_vac_D[GLN].push_back(105.48846039376491);
    6242             : 
    6243           6 :   parameter_vac_D[SER].push_back(55.20490011583253);
    6244           6 :   parameter_vac_D[SER].push_back(-0.038078030710377984);
    6245           6 :   parameter_vac_D[SER].push_back(-58.79085960838952);
    6246           6 :   parameter_vac_D[SER].push_back(-4.067364063406562);
    6247           6 :   parameter_vac_D[SER].push_back(41.319899403658475);
    6248           6 :   parameter_vac_D[SER].push_back(-15.865682241288962);
    6249           6 :   parameter_vac_D[SER].push_back(0.5028409006168431);
    6250             : 
    6251           6 :   parameter_vac_D[THR].push_back(88.90604111920842);
    6252           6 :   parameter_vac_D[THR].push_back(-0.11566717587697625);
    6253           6 :   parameter_vac_D[THR].push_back(-114.4541243837681);
    6254           6 :   parameter_vac_D[THR].push_back(-12.541537413808342);
    6255           6 :   parameter_vac_D[THR].push_back(106.4974738790947);
    6256           6 :   parameter_vac_D[THR].push_back(-50.15009912825225);
    6257           6 :   parameter_vac_D[THR].push_back(4.719349514074467);
    6258             : 
    6259           6 :   parameter_vac_D[VAL].push_back(117.67910411920792);
    6260           6 :   parameter_vac_D[VAL].push_back(-0.18187311248567883);
    6261           6 :   parameter_vac_D[VAL].push_back(-162.8697844894754);
    6262           6 :   parameter_vac_D[VAL].push_back(-19.769248288711825);
    6263           6 :   parameter_vac_D[VAL].push_back(162.59270939168965);
    6264           6 :   parameter_vac_D[VAL].push_back(-79.37261506441627);
    6265           6 :   parameter_vac_D[VAL].push_back(8.230771959393175);
    6266             : 
    6267           6 :   parameter_vac_D[ALA].push_back(46.92250011448002);
    6268           6 :   parameter_vac_D[ALA].push_back(-0.020339064649444412);
    6269           6 :   parameter_vac_D[ALA].push_back(-44.41584945233503);
    6270           6 :   parameter_vac_D[ALA].push_back(-2.1483754537886113);
    6271           6 :   parameter_vac_D[ALA].push_back(25.713667829058785);
    6272           6 :   parameter_vac_D[ALA].push_back(-8.222782061575268);
    6273           6 :   parameter_vac_D[ALA].push_back(-0.2521732728817875);
    6274             : 
    6275           6 :   parameter_vac_D[GLY].push_back(23.532201119209795);
    6276           6 :   parameter_vac_D[GLY].push_back(-0.00628609590047614);
    6277           6 :   parameter_vac_D[GLY].push_back(-17.28421910139733);
    6278           6 :   parameter_vac_D[GLY].push_back(-0.6641226821159686);
    6279           6 :   parameter_vac_D[GLY].push_back(8.536119110048007);
    6280           6 :   parameter_vac_D[GLY].push_back(-2.5438638688361466);
    6281           6 :   parameter_vac_D[GLY].push_back(-0.11165675928832643);
    6282             : 
    6283           6 :   parameter_vac_D[HIS].push_back(145.41948111920982);
    6284           6 :   parameter_vac_D[HIS].push_back(-0.8548328183368781);
    6285           6 :   parameter_vac_D[HIS].push_back(-290.8653238004162);
    6286           6 :   parameter_vac_D[HIS].push_back(-107.85375269366395);
    6287           6 :   parameter_vac_D[HIS].push_back(685.7025818759361);
    6288           6 :   parameter_vac_D[HIS].push_back(-538.2592043545858);
    6289           6 :   parameter_vac_D[HIS].push_back(132.17357375729733);
    6290             : 
    6291             :   // NUCLEIC ACIDS
    6292           6 :   parameter_mix_D[BB_PO3].push_back(223.2671801192072);
    6293           6 :   parameter_mix_D[BB_PO3].push_back(-0.14452515213607267);
    6294           6 :   parameter_mix_D[BB_PO3].push_back(-219.64134852678032);
    6295           6 :   parameter_mix_D[BB_PO3].push_back(-15.527993497328728);
    6296           6 :   parameter_mix_D[BB_PO3].push_back(153.27197635784856);
    6297           6 :   parameter_mix_D[BB_PO3].push_back(-61.17793915482464);
    6298           6 :   parameter_mix_D[BB_PO3].push_back(2.92608540200577);
    6299             : 
    6300           6 :   parameter_mix_D[BB_PO2].push_back(80.12660011920252);
    6301           6 :   parameter_mix_D[BB_PO2].push_back(-0.02788855519820236);
    6302           6 :   parameter_mix_D[BB_PO2].push_back(-60.53219491822279);
    6303           6 :   parameter_mix_D[BB_PO2].push_back(-2.9768829034096806);
    6304           6 :   parameter_mix_D[BB_PO2].push_back(33.30645116638123);
    6305           6 :   parameter_mix_D[BB_PO2].push_back(-11.601573219761375);
    6306           6 :   parameter_mix_D[BB_PO2].push_back(0.12551046492022438);
    6307             : 
    6308           6 :   parameter_mix_D[BB_DNA].push_back(2835.3195201193003);
    6309           6 :   parameter_mix_D[BB_DNA].push_back(-7.954301723608173);
    6310           6 :   parameter_mix_D[BB_DNA].push_back(-4509.325563460958);
    6311           6 :   parameter_mix_D[BB_DNA].push_back(-909.1870692311344);
    6312           6 :   parameter_mix_D[BB_DNA].push_back(6375.156903893768);
    6313           6 :   parameter_mix_D[BB_DNA].push_back(-3956.4787847570715);
    6314           6 :   parameter_mix_D[BB_DNA].push_back(708.9872879613656);
    6315             : 
    6316           6 :   parameter_mix_D[BB_DNA_5].push_back(3136.73358011921);
    6317           6 :   parameter_mix_D[BB_DNA_5].push_back(-10.023435855160427);
    6318           6 :   parameter_mix_D[BB_DNA_5].push_back(-5208.921666368173);
    6319           6 :   parameter_mix_D[BB_DNA_5].push_back(-1160.4403539440214);
    6320           6 :   parameter_mix_D[BB_DNA_5].push_back(7962.598421448727);
    6321           6 :   parameter_mix_D[BB_DNA_5].push_back(-5149.059857691847);
    6322           6 :   parameter_mix_D[BB_DNA_5].push_back(984.5217027570121);
    6323             : 
    6324           6 :   parameter_mix_D[BB_DNA_3].push_back(3136.73358011921);
    6325           6 :   parameter_mix_D[BB_DNA_3].push_back(-9.618834865806274);
    6326           6 :   parameter_mix_D[BB_DNA_3].push_back(-5164.249220443828);
    6327           6 :   parameter_mix_D[BB_DNA_3].push_back(-1103.2721475326382);
    6328           6 :   parameter_mix_D[BB_DNA_3].push_back(7633.46089052312);
    6329           6 :   parameter_mix_D[BB_DNA_3].push_back(-4826.171688395644);
    6330           6 :   parameter_mix_D[BB_DNA_3].push_back(888.1820863683546);
    6331             : 
    6332           6 :   parameter_mix_D[BB_RNA].push_back(3192.5955601188807);
    6333           6 :   parameter_mix_D[BB_RNA].push_back(-11.475781582628308);
    6334           6 :   parameter_mix_D[BB_RNA].push_back(-5486.264576931735);
    6335           6 :   parameter_mix_D[BB_RNA].push_back(-1344.2878288415961);
    6336           6 :   parameter_mix_D[BB_RNA].push_back(9035.26109892441);
    6337           6 :   parameter_mix_D[BB_RNA].push_back(-6068.471909763036);
    6338           6 :   parameter_mix_D[BB_RNA].push_back(1226.3696076463866);
    6339             : 
    6340           6 :   parameter_mix_D[BB_RNA_5].push_back(3512.1630401192215);
    6341           6 :   parameter_mix_D[BB_RNA_5].push_back(-14.191020069433975);
    6342           6 :   parameter_mix_D[BB_RNA_5].push_back(-6293.687102187508);
    6343           6 :   parameter_mix_D[BB_RNA_5].push_back(-1689.3688494490984);
    6344           6 :   parameter_mix_D[BB_RNA_5].push_back(11193.448566821942);
    6345           6 :   parameter_mix_D[BB_RNA_5].push_back(-7806.9064399949375);
    6346           6 :   parameter_mix_D[BB_RNA_5].push_back(1662.4594983069844);
    6347             : 
    6348           6 :   parameter_mix_D[BB_RNA_3].push_back(3512.1630401192215);
    6349           6 :   parameter_mix_D[BB_RNA_3].push_back(-12.978118135595812);
    6350           6 :   parameter_mix_D[BB_RNA_3].push_back(-6149.290195451877);
    6351           6 :   parameter_mix_D[BB_RNA_3].push_back(-1515.8309761505627);
    6352           6 :   parameter_mix_D[BB_RNA_3].push_back(10176.605450440278);
    6353           6 :   parameter_mix_D[BB_RNA_3].push_back(-6813.250569884159);
    6354           6 :   parameter_mix_D[BB_RNA_3].push_back(1366.823518955858);
    6355             : 
    6356           6 :   parameter_mix_D[BASE_A].push_back(2464.736500119229);
    6357           6 :   parameter_mix_D[BASE_A].push_back(-12.127452038444783);
    6358           6 :   parameter_mix_D[BASE_A].push_back(-4710.661256689607);
    6359           6 :   parameter_mix_D[BASE_A].push_back(-1462.6964141954452);
    6360           6 :   parameter_mix_D[BASE_A].push_back(9451.725575888277);
    6361           6 :   parameter_mix_D[BASE_A].push_back(-6883.018479948857);
    6362           6 :   parameter_mix_D[BASE_A].push_back(1540.1526599737797);
    6363             : 
    6364           6 :   parameter_mix_D[BASE_C].push_back(1797.2697601191685);
    6365           6 :   parameter_mix_D[BASE_C].push_back(-5.963855532295215);
    6366           6 :   parameter_mix_D[BASE_C].push_back(-2955.077717756034);
    6367           6 :   parameter_mix_D[BASE_C].push_back(-689.4543508746372);
    6368           6 :   parameter_mix_D[BASE_C].push_back(4665.914740532565);
    6369           6 :   parameter_mix_D[BASE_C].push_back(-3051.4605913706982);
    6370           6 :   parameter_mix_D[BASE_C].push_back(590.2201952719585);
    6371             : 
    6372           6 :   parameter_mix_D[BASE_G].push_back(2804.271480119049);
    6373           6 :   parameter_mix_D[BASE_G].push_back(-16.928072935469974);
    6374           6 :   parameter_mix_D[BASE_G].push_back(-5989.82519987899);
    6375           6 :   parameter_mix_D[BASE_G].push_back(-2275.490326521775);
    6376           6 :   parameter_mix_D[BASE_G].push_back(15007.832401865428);
    6377           6 :   parameter_mix_D[BASE_G].push_back(-12287.520690325606);
    6378           6 :   parameter_mix_D[BASE_G].push_back(3172.98306575258);
    6379             : 
    6380           6 :   parameter_mix_D[BASE_T].push_back(2545.0860001192113);
    6381           6 :   parameter_mix_D[BASE_T].push_back(-10.975141620541738);
    6382           6 :   parameter_mix_D[BASE_T].push_back(-4636.058358764447);
    6383           6 :   parameter_mix_D[BASE_T].push_back(-1340.3746388296138);
    6384           6 :   parameter_mix_D[BASE_T].push_back(8850.604320505428);
    6385           6 :   parameter_mix_D[BASE_T].push_back(-6421.852532013674);
    6386           6 :   parameter_mix_D[BASE_T].push_back(1443.371517335904);
    6387             : 
    6388           6 :   parameter_mix_D[BASE_U].push_back(1608.7389001192062);
    6389           6 :   parameter_mix_D[BASE_U].push_back(-3.9816849036181434);
    6390           6 :   parameter_mix_D[BASE_U].push_back(-2411.056432130769);
    6391           6 :   parameter_mix_D[BASE_U].push_back(-451.8236361945487);
    6392           6 :   parameter_mix_D[BASE_U].push_back(3220.4418252803644);
    6393           6 :   parameter_mix_D[BASE_U].push_back(-1944.2515577994325);
    6394           6 :   parameter_mix_D[BASE_U].push_back(332.9259542628691);
    6395             : 
    6396           6 :   parameter_vac_D[BB_PO3].push_back(8.508889119209273);
    6397           6 :   parameter_vac_D[BB_PO3].push_back(-0.0010408625482164885);
    6398           6 :   parameter_vac_D[BB_PO3].push_back(-5.656130990440752);
    6399           6 :   parameter_vac_D[BB_PO3].push_back(-0.10748040057053611);
    6400           6 :   parameter_vac_D[BB_PO3].push_back(2.1441246977168227);
    6401           6 :   parameter_vac_D[BB_PO3].push_back(-0.3967083127147655);
    6402           6 :   parameter_vac_D[BB_PO3].push_back(-0.10110003105909898);
    6403             : 
    6404           6 :   parameter_vac_D[BB_PO2].push_back(2.7889001116093284);
    6405           6 :   parameter_vac_D[BB_PO2].push_back(-0.00011178884266113128);
    6406           6 :   parameter_vac_D[BB_PO2].push_back(-1.1702605818380654);
    6407           6 :   parameter_vac_D[BB_PO2].push_back(-0.011278044036819927);
    6408           6 :   parameter_vac_D[BB_PO2].push_back(0.3214006584089024);
    6409           6 :   parameter_vac_D[BB_PO2].push_back(-0.04097165983591666);
    6410           6 :   parameter_vac_D[BB_PO2].push_back(-0.017525098100539684);
    6411             : 
    6412           6 :   parameter_vac_D[BB_DNA].push_back(94.75075611920529);
    6413           6 :   parameter_vac_D[BB_DNA].push_back(-0.13973533952241124);
    6414           6 :   parameter_vac_D[BB_DNA].push_back(-123.45402430039046);
    6415           6 :   parameter_vac_D[BB_DNA].push_back(-15.19494522082691);
    6416           6 :   parameter_vac_D[BB_DNA].push_back(123.34749914811465);
    6417           6 :   parameter_vac_D[BB_DNA].push_back(-61.038507985345504);
    6418           6 :   parameter_vac_D[BB_DNA].push_back(6.601587478585944);
    6419             : 
    6420           6 :   parameter_vac_D[BB_DNA_5].push_back(108.18080111920679);
    6421           6 :   parameter_vac_D[BB_DNA_5].push_back(-0.2055953690887981);
    6422           6 :   parameter_vac_D[BB_DNA_5].push_back(-150.7924892157235);
    6423           6 :   parameter_vac_D[BB_DNA_5].push_back(-22.700459516383198);
    6424           6 :   parameter_vac_D[BB_DNA_5].push_back(172.2599851655527);
    6425           6 :   parameter_vac_D[BB_DNA_5].push_back(-93.4983124807692);
    6426           6 :   parameter_vac_D[BB_DNA_5].push_back(12.867661230942868);
    6427             : 
    6428           6 :   parameter_vac_D[BB_DNA_3].push_back(108.18080111920537);
    6429           6 :   parameter_vac_D[BB_DNA_3].push_back(-0.18263717534168372);
    6430           6 :   parameter_vac_D[BB_DNA_3].push_back(-148.5918817744255);
    6431           6 :   parameter_vac_D[BB_DNA_3].push_back(-19.90799847398835);
    6432           6 :   parameter_vac_D[BB_DNA_3].push_back(157.55184203379557);
    6433           6 :   parameter_vac_D[BB_DNA_3].push_back(-80.28471270058103);
    6434           6 :   parameter_vac_D[BB_DNA_3].push_back(9.313712500298278);
    6435             : 
    6436           6 :   parameter_vac_D[BB_RNA].push_back(106.37859611922117);
    6437           6 :   parameter_vac_D[BB_RNA].push_back(-0.2380766148121975);
    6438           6 :   parameter_vac_D[BB_RNA].push_back(-153.74131338570024);
    6439           6 :   parameter_vac_D[BB_RNA].push_back(-26.415436217574932);
    6440           6 :   parameter_vac_D[BB_RNA].push_back(191.90585451112776);
    6441           6 :   parameter_vac_D[BB_RNA].push_back(-109.61737794316868);
    6442           6 :   parameter_vac_D[BB_RNA].push_back(16.663804191332204);
    6443             : 
    6444           6 :   parameter_vac_D[BB_RNA_5].push_back(120.58236111920618);
    6445           6 :   parameter_vac_D[BB_RNA_5].push_back(-0.340258533619014);
    6446           6 :   parameter_vac_D[BB_RNA_5].push_back(-186.08333929996334);
    6447           6 :   parameter_vac_D[BB_RNA_5].push_back(-38.493337147644795);
    6448           6 :   parameter_vac_D[BB_RNA_5].push_back(266.2262415641144);
    6449           6 :   parameter_vac_D[BB_RNA_5].push_back(-164.73088478359585);
    6450           6 :   parameter_vac_D[BB_RNA_5].push_back(29.07014157680879);
    6451             : 
    6452           6 :   parameter_vac_D[BB_RNA_3].push_back(120.5823611192099);
    6453           6 :   parameter_vac_D[BB_RNA_3].push_back(-0.274146129206928);
    6454           6 :   parameter_vac_D[BB_RNA_3].push_back(-179.24499182395388);
    6455           6 :   parameter_vac_D[BB_RNA_3].push_back(-30.315729372259426);
    6456           6 :   parameter_vac_D[BB_RNA_3].push_back(222.2645581367648);
    6457           6 :   parameter_vac_D[BB_RNA_3].push_back(-125.13581171514033);
    6458           6 :   parameter_vac_D[BB_RNA_3].push_back(18.350308154920107);
    6459             : 
    6460           6 :   parameter_vac_D[BASE_A].push_back(114.34024911921);
    6461           6 :   parameter_vac_D[BASE_A].push_back(-0.4136665918383359);
    6462           6 :   parameter_vac_D[BASE_A].push_back(-192.33138384655922);
    6463           6 :   parameter_vac_D[BASE_A].push_back(-46.74428306691412);
    6464           6 :   parameter_vac_D[BASE_A].push_back(312.9511030981905);
    6465           6 :   parameter_vac_D[BASE_A].push_back(-199.6349962647333);
    6466           6 :   parameter_vac_D[BASE_A].push_back(36.15938693202153);
    6467             : 
    6468           6 :   parameter_vac_D[BASE_C].push_back(76.17798411921166);
    6469           6 :   parameter_vac_D[BASE_C].push_back(-0.1444475142707445);
    6470           6 :   parameter_vac_D[BASE_C].push_back(-102.66873668949485);
    6471           6 :   parameter_vac_D[BASE_C].push_back(-15.813768367725821);
    6472           6 :   parameter_vac_D[BASE_C].push_back(119.63436338715553);
    6473           6 :   parameter_vac_D[BASE_C].push_back(-64.22251971660583);
    6474           6 :   parameter_vac_D[BASE_C].push_back(8.351952332828862);
    6475             : 
    6476           6 :   parameter_vac_D[BASE_G].push_back(127.08052911921965);
    6477           6 :   parameter_vac_D[BASE_G].push_back(-0.7137457014712297);
    6478           6 :   parameter_vac_D[BASE_G].push_back(-239.67686838772786);
    6479           6 :   parameter_vac_D[BASE_G].push_back(-88.53661981200943);
    6480           6 :   parameter_vac_D[BASE_G].push_back(556.7254485453866);
    6481           6 :   parameter_vac_D[BASE_G].push_back(-432.0234649577737);
    6482           6 :   parameter_vac_D[BASE_G].push_back(104.407200463848);
    6483             : 
    6484           6 :   parameter_vac_D[BASE_T].push_back(94.09000011920868);
    6485           6 :   parameter_vac_D[BASE_T].push_back(-0.27147149980458524);
    6486           6 :   parameter_vac_D[BASE_T].push_back(-143.65649702254174);
    6487           6 :   parameter_vac_D[BASE_T].push_back(-30.861235738371892);
    6488           6 :   parameter_vac_D[BASE_T].push_back(212.3643014774958);
    6489           6 :   parameter_vac_D[BASE_T].push_back(-133.06675501066275);
    6490           6 :   parameter_vac_D[BASE_T].push_back(23.951588200687073);
    6491             : 
    6492           6 :   parameter_vac_D[BASE_U].push_back(59.30540111665979);
    6493           6 :   parameter_vac_D[BASE_U].push_back(-0.06146929846591808);
    6494           6 :   parameter_vac_D[BASE_U].push_back(-67.43680950211682);
    6495           6 :   parameter_vac_D[BASE_U].push_back(-6.625289749170134);
    6496           6 :   parameter_vac_D[BASE_U].push_back(58.37012229348065);
    6497           6 :   parameter_vac_D[BASE_U].push_back(-26.23044613101723);
    6498           6 :   parameter_vac_D[BASE_U].push_back(2.061238351422343);
    6499             : 
    6500       21340 :   for(unsigned i=0; i<atoms.size(); ++i) {
    6501       21334 :     std::string Aname = pdb.getAtomName(atoms[i]);
    6502       21334 :     std::string Rname = pdb.getResidueName(atoms[i]);
    6503       21334 :     Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
    6504       21334 :     if(Rname=="ALA") {
    6505        1078 :       atoi[residue_atom[i]]=ALA;
    6506       20256 :     } else if(Rname=="ARG") {
    6507        1296 :       atoi[residue_atom[i]]=ARG;
    6508       18960 :     } else if(Rname=="ASN") {
    6509        1080 :       atoi[residue_atom[i]]=ASN;
    6510       17880 :     } else if(Rname=="ASP") {
    6511         936 :       atoi[residue_atom[i]]=ASP;
    6512       16944 :     } else if(Rname=="CYS") {
    6513          72 :       atoi[residue_atom[i]]=CYS;
    6514       16872 :     } else if(Rname=="CYX") {
    6515           0 :       atoi[residue_atom[i]]=CYX;
    6516       16872 :     } else if(Rname=="GLN") {
    6517        1558 :       atoi[residue_atom[i]]=GLN;
    6518       15314 :     } else if(Rname=="GLU") {
    6519         714 :       atoi[residue_atom[i]]=GLU;
    6520       14600 :     } else if(Rname=="GLY") {
    6521         936 :       atoi[residue_atom[i]]=GLY;
    6522       13664 :     } else if(Rname=="HIS") {
    6523           0 :       atoi[residue_atom[i]]=HIS;
    6524       13664 :     } else if(Rname=="HID") {
    6525           0 :       atoi[residue_atom[i]]=HIS;
    6526       13664 :     } else if(Rname=="HIE") {
    6527         216 :       atoi[residue_atom[i]]=HIS;
    6528       13448 :     } else if(Rname=="HIP") {
    6529           0 :       atoi[residue_atom[i]]=HIP;
    6530             :       // CHARMM NAMING FOR PROTONATION STATES OF HISTIDINE
    6531       13448 :     } else if(Rname=="HSD") {
    6532           0 :       atoi[residue_atom[i]]=HIS;
    6533       13448 :     } else if(Rname=="HSE") {
    6534           0 :       atoi[residue_atom[i]]=HIS;
    6535       13448 :     } else if(Rname=="HSP") {
    6536           0 :       atoi[residue_atom[i]]=HIP;
    6537       13448 :     } else if(Rname=="ILE") {
    6538        1296 :       atoi[residue_atom[i]]=ILE;
    6539       12152 :     } else if(Rname=="LEU") {
    6540        2280 :       atoi[residue_atom[i]]=LEU;
    6541        9872 :     } else if(Rname=="LYS") {
    6542        1560 :       atoi[residue_atom[i]]=LYS;
    6543        8312 :     } else if(Rname=="MET") {
    6544         836 :       atoi[residue_atom[i]]=MET;
    6545        7476 :     } else if(Rname=="PHE") {
    6546        1512 :       atoi[residue_atom[i]]=PHE;
    6547        5964 :     } else if(Rname=="PRO") {
    6548        1122 :       atoi[residue_atom[i]]=PRO;
    6549        4842 :     } else if(Rname=="SER") {
    6550         768 :       atoi[residue_atom[i]]=SER;
    6551        4074 :     } else if(Rname=="THR") {
    6552         728 :       atoi[residue_atom[i]]=THR;
    6553        3346 :     } else if(Rname=="TRP") {
    6554           0 :       atoi[residue_atom[i]]=TRP;
    6555        3346 :     } else if(Rname=="TYR") {
    6556         792 :       atoi[residue_atom[i]]=TYR;
    6557        2554 :     } else if(Rname=="VAL") {
    6558        1600 :       atoi[residue_atom[i]]=VAL;
    6559             :     }
    6560             :     // NUCLEIC ACIDS
    6561             :     // nucleobases are not automatically populated as an additional check on the health of the PDB.
    6562             :     // RNA - G
    6563         954 :     else if(Rname=="G") {
    6564           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    6565           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    6566           0 :         atoi [residue_atom[i]]=BB_PO2;
    6567           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6568           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6569           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6570           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6571           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6572           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6573           0 :         atoi[residue_atom[i]]=BB_RNA;
    6574           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6575           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6576           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6577           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6578           0 :         atoi[residue_atom[i]]=BASE_G;
    6579           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6580             :       // RNA - G3
    6581         954 :     } else if(Rname=="G3") {
    6582           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6583           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6584           0 :         atoi [residue_atom[i]]=BB_PO2;
    6585           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    6586           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    6587           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    6588           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    6589           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    6590           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    6591           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    6592           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6593           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6594           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6595           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6596           0 :         atoi[residue_atom[i]]=BASE_G;
    6597           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6598             :       // RNA - G5
    6599         954 :     } else if(Rname=="G5") {
    6600           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6601           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6602           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6603           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    6604           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    6605           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    6606           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    6607           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6608           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6609           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6610           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6611           0 :         atoi[residue_atom[i]]=BASE_G;
    6612           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6613             :       // RNA - GT
    6614         954 :     } else if(Rname=="GT") {
    6615           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    6616           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    6617           0 :         atoi [residue_atom[i]]=BB_PO3;
    6618           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6619           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6620           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6621           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6622           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6623           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6624           0 :         atoi[residue_atom[i]]=BB_RNA;
    6625           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6626           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6627           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6628           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6629           0 :         atoi[residue_atom[i]]=BASE_G;
    6630           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6631             :       // RNA - U
    6632         954 :     } else if(Rname=="U") {
    6633        2886 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    6634        1482 :           Aname=="O1P" || Aname=="O2P"  ) {
    6635          78 :         atoi [residue_atom[i]]=BB_PO2;
    6636        2548 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6637        2132 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6638        1716 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6639        1326 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6640        1196 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6641        1560 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6642         416 :         atoi[residue_atom[i]]=BB_RNA;
    6643         884 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    6644         468 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    6645         364 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    6646         286 :         atoi[residue_atom[i]]=BASE_U;
    6647           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6648             :       // RNA - U3
    6649         174 :     } else if(Rname=="U3") {
    6650         230 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6651         174 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6652           6 :         atoi [residue_atom[i]]=BB_PO2;
    6653         204 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    6654         172 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    6655         140 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    6656         110 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    6657          94 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    6658          78 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    6659          34 :         atoi[residue_atom[i]]=BB_RNA_3;
    6660          68 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    6661          36 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    6662          28 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    6663          22 :         atoi[residue_atom[i]]=BASE_U;
    6664           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6665             :       // RNA - U5
    6666         112 :     } else if(Rname=="U5") {
    6667         408 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6668         344 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6669         280 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6670         216 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    6671         176 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    6672         156 :           Aname=="H2'1" || Aname=="H5T" ) {
    6673          68 :         atoi[residue_atom[i]]=BB_RNA_5;
    6674         136 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    6675          72 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    6676          56 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    6677          44 :         atoi[residue_atom[i]]=BASE_U;
    6678           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6679             :       // RNA - UT
    6680           0 :     } else if(Rname=="UT") {
    6681           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    6682           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    6683           0 :         atoi [residue_atom[i]]=BB_PO3;
    6684           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6685           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6686           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6687           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6688           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6689           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6690           0 :         atoi[residue_atom[i]]=BB_RNA;
    6691           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    6692           0 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    6693           0 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    6694           0 :         atoi[residue_atom[i]]=BASE_U;
    6695           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6696             :       // RNA - A
    6697           0 :     } else if(Rname=="A") {
    6698           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    6699           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    6700           0 :         atoi [residue_atom[i]]=BB_PO2;
    6701           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6702           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6703           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6704           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6705           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6706           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6707           0 :         atoi[residue_atom[i]]=BB_RNA;
    6708           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6709           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6710           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6711           0 :                 Aname=="H61" || Aname=="H62" ) {
    6712           0 :         atoi[residue_atom[i]]=BASE_A;
    6713           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6714             :       // RNA - A3
    6715           0 :     } else if(Rname=="A3") {
    6716           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6717           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6718           0 :         atoi [residue_atom[i]]=BB_PO2;
    6719           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    6720           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    6721           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    6722           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    6723           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    6724           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    6725           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    6726           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6727           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6728           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6729           0 :                 Aname=="H61" || Aname=="H62" ) {
    6730           0 :         atoi[residue_atom[i]]=BASE_A;
    6731           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6732             :       // RNA - A5
    6733           0 :     } else if(Rname=="A5") {
    6734           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6735           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6736           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6737           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    6738           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    6739           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    6740           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    6741           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6742           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6743           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6744           0 :                 Aname=="H61" || Aname=="H62" ) {
    6745           0 :         atoi[residue_atom[i]]=BASE_A;
    6746           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6747             :       // RNA - AT
    6748           0 :     } else if(Rname=="AT") {
    6749           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    6750           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    6751           0 :         atoi [residue_atom[i]]=BB_PO3;
    6752           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6753           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6754           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6755           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6756           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6757           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6758           0 :         atoi[residue_atom[i]]=BB_RNA;
    6759           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6760           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6761           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6762           0 :                 Aname=="H61" || Aname=="H62" ) {
    6763           0 :         atoi[residue_atom[i]]=BASE_A;
    6764           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6765             :       // RNA - C
    6766           0 :     } else if(Rname=="C") {
    6767           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    6768           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    6769           0 :         atoi [residue_atom[i]]=BB_PO2;
    6770           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6771           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6772           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6773           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6774           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6775           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6776           0 :         atoi[residue_atom[i]]=BB_RNA;
    6777           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6778           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6779           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6780           0 :         atoi[residue_atom[i]]=BASE_C;
    6781           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6782             :       // RNA - C3
    6783           0 :     } else if(Rname=="C3") {
    6784           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6785           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6786           0 :         atoi [residue_atom[i]]=BB_PO2;
    6787           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    6788           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    6789           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    6790           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    6791           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    6792           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    6793           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    6794           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6795           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6796           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6797           0 :         atoi[residue_atom[i]]=BASE_C;
    6798           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6799             :       // RNA - C5
    6800           0 :     } else if(Rname=="C5") {
    6801           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6802           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6803           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6804           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    6805           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    6806           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    6807           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    6808           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6809           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6810           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6811           0 :         atoi[residue_atom[i]]=BASE_C;
    6812           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6813             :       // RNA - CT
    6814           0 :     } else if(Rname=="CT") {
    6815           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    6816           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    6817           0 :         atoi [residue_atom[i]]=BB_PO3;
    6818           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6819           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6820           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6821           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6822           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6823           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6824           0 :         atoi[residue_atom[i]]=BB_RNA;
    6825           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6826           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6827           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6828           0 :         atoi[residue_atom[i]]=BASE_C;
    6829           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6830             :       // DNA - G
    6831           0 :     } else if(Rname=="DG") {
    6832           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    6833           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    6834           0 :         atoi [residue_atom[i]]=BB_PO2;
    6835           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6836           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6837           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6838           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6839           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6840           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6841           0 :         atoi[residue_atom[i]]=BB_DNA;
    6842           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6843           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6844           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6845           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6846           0 :         atoi[residue_atom[i]]=BASE_G;
    6847           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6848             :       // DNA - G3
    6849           0 :     } else if(Rname=="DG3") {
    6850           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6851           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6852           0 :         atoi [residue_atom[i]]=BB_PO2;
    6853           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6854           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6855           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6856           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    6857           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6858             :                 Aname=="H3T" ) {
    6859           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    6860           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6861           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6862           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6863           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6864           0 :         atoi[residue_atom[i]]=BASE_G;
    6865           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6866             :       // DNA - G5
    6867           0 :     } else if(Rname=="DG5") {
    6868           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6869           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    6870           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6871           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6872           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6873             :           Aname=="H5T" ) {
    6874           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    6875           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6876           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6877           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6878           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6879           0 :         atoi[residue_atom[i]]=BASE_G;
    6880           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6881             :       // DNA - GT
    6882           0 :     } else if(Rname=="DGT") {
    6883           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    6884           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    6885           0 :         atoi [residue_atom[i]]=BB_PO3;
    6886           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6887           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6888           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6889           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6890           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6891           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6892           0 :         atoi[residue_atom[i]]=BB_DNA;
    6893           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6894           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6895           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6896           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6897           0 :         atoi[residue_atom[i]]=BASE_G;
    6898           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6899             :       // DNA - T
    6900           0 :     } else if(Rname=="DT") {
    6901           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    6902           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    6903           0 :         atoi [residue_atom[i]]=BB_PO2;
    6904           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6905           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6906           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6907           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6908           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6909           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6910           0 :         atoi[residue_atom[i]]=BB_DNA;
    6911           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    6912           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    6913           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    6914           0 :                 Aname=="H72" || Aname=="H73" ) {
    6915           0 :         atoi[residue_atom[i]]=BASE_T;
    6916           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6917             :       // DNA - T3
    6918           0 :     } else if(Rname=="DT3") {
    6919           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6920           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6921           0 :         atoi [residue_atom[i]]=BB_PO2;
    6922           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6923           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6924           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6925           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    6926           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6927             :                 Aname=="H3T" ) {
    6928           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    6929           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    6930           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    6931           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    6932           0 :                 Aname=="H72" || Aname=="H73" ) {
    6933           0 :         atoi[residue_atom[i]]=BASE_T;
    6934           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6935             :       // DNA - T5
    6936           0 :     } else if(Rname=="DT5") {
    6937           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6938           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    6939           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6940           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6941           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6942             :           Aname=="H5T" ) {
    6943           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    6944           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    6945           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    6946           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    6947           0 :                 Aname=="H72" || Aname=="H73" ) {
    6948           0 :         atoi[residue_atom[i]]=BASE_T;
    6949           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6950             :       // DNA - TT
    6951           0 :     } else if(Rname=="DTT") {
    6952           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    6953           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    6954           0 :         atoi [residue_atom[i]]=BB_PO3;
    6955           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6956           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6957           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6958           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6959           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6960           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6961           0 :         atoi[residue_atom[i]]=BB_DNA;
    6962           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    6963           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    6964           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    6965           0 :                 Aname=="H72" || Aname=="H73" ) {
    6966           0 :         atoi[residue_atom[i]]=BASE_T;
    6967           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6968             :       // DNA - A
    6969           0 :     } else if(Rname=="DA") {
    6970           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    6971           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    6972           0 :         atoi [residue_atom[i]]=BB_PO2;
    6973           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6974           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6975           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6976           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6977           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6978           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6979           0 :         atoi[residue_atom[i]]=BB_DNA;
    6980           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6981           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6982           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6983           0 :                 Aname=="H61" || Aname=="H62" ) {
    6984           0 :         atoi[residue_atom[i]]=BASE_A;
    6985           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6986             :       // DNA - A3
    6987           0 :     } else if(Rname=="DA3") {
    6988           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6989           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6990           0 :         atoi [residue_atom[i]]=BB_PO2;
    6991           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6992           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6993           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6994           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    6995           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6996             :                 Aname=="H3T" ) {
    6997           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    6998           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6999           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    7000           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    7001           0 :                 Aname=="H61" || Aname=="H62" ) {
    7002           0 :         atoi[residue_atom[i]]=BASE_A;
    7003           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7004             :       // DNA - A5
    7005           0 :     } else if(Rname=="DA5") {
    7006           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7007           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    7008           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7009           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7010           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    7011             :           Aname=="H5T" ) {
    7012           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    7013           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    7014           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    7015           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    7016           0 :                 Aname=="H61" || Aname=="H62" ) {
    7017           0 :         atoi[residue_atom[i]]=BASE_A;
    7018           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7019             :       // DNA - AT
    7020           0 :     } else if(Rname=="DAT") {
    7021           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    7022           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    7023           0 :         atoi [residue_atom[i]]=BB_PO3;
    7024           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7025           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7026           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7027           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7028           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    7029           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    7030           0 :         atoi[residue_atom[i]]=BB_DNA;
    7031           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    7032           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    7033           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    7034           0 :                 Aname=="H61" || Aname=="H62" ) {
    7035           0 :         atoi[residue_atom[i]]=BASE_A;
    7036           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7037             :       // DNA - C
    7038           0 :     } else if(Rname=="DC") {
    7039           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    7040           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    7041           0 :         atoi [residue_atom[i]]=BB_PO2;
    7042           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7043           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7044           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7045           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7046           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    7047           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    7048           0 :         atoi[residue_atom[i]]=BB_DNA;
    7049           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    7050           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    7051           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    7052           0 :         atoi[residue_atom[i]]=BASE_C;
    7053           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7054             :       // DNA - C3
    7055           0 :     } else if(Rname=="DC3") {
    7056           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    7057           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    7058           0 :         atoi [residue_atom[i]]=BB_PO2;
    7059           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7060           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7061           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7062           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    7063           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    7064             :                 Aname=="H3T" ) {
    7065           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    7066           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    7067           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    7068           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    7069           0 :         atoi[residue_atom[i]]=BASE_C;
    7070           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7071             :       // DNA - C5
    7072           0 :     } else if(Rname=="DC5") {
    7073           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7074           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    7075           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7076           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7077           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    7078             :           Aname=="H5T" ) {
    7079           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    7080           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    7081           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    7082           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    7083           0 :         atoi[residue_atom[i]]=BASE_C;
    7084           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7085             :       // DNA - CT
    7086           0 :     } else if(Rname=="DCT") {
    7087           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    7088           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    7089           0 :         atoi [residue_atom[i]]=BB_PO3;
    7090           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7091           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7092           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7093           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7094           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    7095           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    7096           0 :         atoi[residue_atom[i]]=BB_DNA;
    7097           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    7098           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    7099           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    7100           0 :         atoi[residue_atom[i]]=BASE_C;
    7101           0 :       } else error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7102           0 :     } else error("Residue not known: "+Rname);
    7103             :   }
    7104           6 : }
    7105             : 
    7106           8 : double SAXS::calculateAFF(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double rho)
    7107             : {
    7108             :   std::map<std::string, unsigned> AA_map;
    7109           8 :   AA_map["H"] = H;
    7110           8 :   AA_map["C"] = C;
    7111           8 :   AA_map["N"] = N;
    7112           8 :   AA_map["O"] = O;
    7113           8 :   AA_map["P"] = P;
    7114           8 :   AA_map["S"] = S;
    7115             : 
    7116             :   std::vector<std::vector<double> > param_a;
    7117             :   std::vector<std::vector<double> > param_b;
    7118             :   std::vector<double> param_c;
    7119             :   std::vector<double> param_v;
    7120             : 
    7121           8 :   param_a.resize(NTT, std::vector<double>(5));
    7122           8 :   param_b.resize(NTT, std::vector<double>(5));
    7123           8 :   param_c.resize(NTT);
    7124           8 :   param_v.resize(NTT);
    7125             : 
    7126           8 :   param_a[H][0] = 0.493002; param_b[H][0] = 10.5109; param_c[H] = 0.003038;
    7127           8 :   param_a[H][1] = 0.322912; param_b[H][1] = 26.1257; param_v[H] = 5.15;
    7128           8 :   param_a[H][2] = 0.140191; param_b[H][2] = 3.14236;
    7129           8 :   param_a[H][3] = 0.040810; param_b[H][3] = 57.7997;
    7130           8 :   param_a[H][4] = 0.0;      param_b[H][4] = 1.0;
    7131             : 
    7132           8 :   param_a[C][0] = 2.31000; param_b[C][0] = 20.8439; param_c[C] = 0.215600;
    7133           8 :   param_a[C][1] = 1.02000; param_b[C][1] = 10.2075; param_v[C] = 16.44;
    7134           8 :   param_a[C][2] = 1.58860; param_b[C][2] = 0.56870;
    7135           8 :   param_a[C][3] = 0.86500; param_b[C][3] = 51.6512;
    7136           8 :   param_a[C][4] = 0.0;     param_b[C][4] = 1.0;
    7137             : 
    7138           8 :   param_a[N][0] = 12.2126; param_b[N][0] = 0.00570; param_c[N] = -11.529;
    7139           8 :   param_a[N][1] = 3.13220; param_b[N][1] = 9.89330; param_v[N] = 2.49;
    7140           8 :   param_a[N][2] = 2.01250; param_b[N][2] = 28.9975;
    7141           8 :   param_a[N][3] = 1.16630; param_b[N][3] = 0.58260;
    7142           8 :   param_a[N][4] = 0.0;     param_b[N][4] = 1.0;
    7143             : 
    7144           8 :   param_a[O][0] = 3.04850; param_b[O][0] = 13.2771; param_c[O] = 0.250800 ;
    7145           8 :   param_a[O][1] = 2.28680; param_b[O][1] = 5.70110; param_v[O] = 9.13;
    7146           8 :   param_a[O][2] = 1.54630; param_b[O][2] = 0.32390;
    7147           8 :   param_a[O][3] = 0.86700; param_b[O][3] = 32.9089;
    7148           8 :   param_a[O][4] = 0.0;     param_b[O][4] = 1.0;
    7149             : 
    7150           8 :   param_a[P][0] = 6.43450; param_b[P][0] = 1.90670; param_c[P] = 1.11490;
    7151           8 :   param_a[P][1] = 4.17910; param_b[P][1] = 27.1570; param_v[P] = 5.73;
    7152           8 :   param_a[P][2] = 1.78000; param_b[P][2] = 0.52600;
    7153           8 :   param_a[P][3] = 1.49080; param_b[P][3] = 68.1645;
    7154           8 :   param_a[P][4] = 0.0;     param_b[P][4] = 1.0;
    7155             : 
    7156           8 :   param_a[S][0] = 6.90530; param_b[S][0] = 1.46790; param_c[S] = 0.866900;
    7157           8 :   param_a[S][1] = 5.20340; param_b[S][1] = 22.2151; param_v[S] = 19.86;
    7158           8 :   param_a[S][2] = 1.43790; param_b[S][2] = 0.25360;
    7159           8 :   param_a[S][3] = 1.58630; param_b[S][3] = 56.1720;
    7160           8 :   param_a[S][4] = 0.0;     param_b[S][4] = 1.0;
    7161             : 
    7162           8 :   auto* moldat=plumed.getActionSet().selectLatest<GenericMolInfo*>(this);
    7163             : 
    7164             :   double Iq0=0.;
    7165           8 :   if( moldat ) {
    7166             :     // cycle over the atom types
    7167          56 :     for(unsigned i=0; i<NTT; ++i) {
    7168          48 :       const double volr = std::pow(param_v[i], (2.0/3.0)) /(4. * M_PI);
    7169             :       // cycle over q
    7170         480 :       for(unsigned k=0; k<q_list.size(); ++k) {
    7171         432 :         const double q = q_list[k];
    7172         432 :         const double s = q / (4. * M_PI);
    7173         432 :         FF_tmp[k][i] = param_c[i];
    7174             :         // SUM [a_i * EXP( - b_i * (q/4pi)^2 )] Waasmaier and Kirfel (1995)
    7175        2160 :         for(unsigned j=0; j<4; ++j) {
    7176        1728 :           FF_tmp[k][i] += param_a[i][j]*std::exp(-param_b[i][j]*s*s);
    7177             :         }
    7178             :         // subtract solvation: rho * v_i * EXP( (- v_i^(2/3) / (4pi)) * q^2  ) // since  D in Fraser 1978 is 2*s
    7179         432 :         FF_tmp[k][i] -= rho*param_v[i]*std::exp(-volr*q*q);
    7180             :       }
    7181             :     }
    7182             :     // cycle over the atoms to assign the atom type and calculate I0
    7183       28382 :     for(unsigned i=0; i<atoms.size(); ++i) {
    7184             :       // get atom name
    7185       28374 :       std::string name = moldat->getAtomName(atoms[i]);
    7186             :       char type;
    7187             :       // get atom type
    7188       28374 :       char first = name.at(0);
    7189             :       // GOLDEN RULE: type is first letter, if not a number
    7190       28374 :       if (!isdigit(first)) {
    7191             :         type = first;
    7192             :         // otherwise is the second
    7193             :       } else {
    7194           0 :         type = name.at(1);
    7195             :       }
    7196       28374 :       std::string type_s = std::string(1,type);
    7197       28374 :       if(AA_map.find(type_s) != AA_map.end()) {
    7198       28374 :         const unsigned index=AA_map[type_s];
    7199       28374 :         atoi[i] = AA_map[type_s];
    7200      141870 :         for(unsigned j=0; j<4; ++j) Iq0 += param_a[index][j];
    7201       28374 :         Iq0 = Iq0 -rho*param_v[index] + param_c[index];
    7202             :       } else {
    7203           0 :         error("Wrong atom type "+type_s+" from atom name "+name+"\n");
    7204             :       }
    7205             :     }
    7206             :   } else {
    7207           0 :     error("MOLINFO DATA not found\n");
    7208             :   }
    7209           8 :   if(absolute) Iq0 = 1;
    7210             : 
    7211           8 :   return Iq0;
    7212           8 : }
    7213             : 
    7214           4 : double SAXS::calculateAFFsans(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double deuter_conc)
    7215             : {
    7216             :   std::map<std::string, unsigned> AA_map;
    7217           4 :   AA_map["H"] = H;
    7218           4 :   AA_map["C"] = C;
    7219           4 :   AA_map["N"] = N;
    7220           4 :   AA_map["O"] = O;
    7221           4 :   AA_map["P"] = P;
    7222           4 :   AA_map["S"] = S;
    7223             : 
    7224             :   std::vector<double> param_b;
    7225             :   std::vector<double> param_v;
    7226             : 
    7227           4 :   param_b.resize(NTT);
    7228           4 :   param_v.resize(NTT);
    7229             : 
    7230           4 :   param_b[H] = -0.374; param_v[H] = 5.15;
    7231             :   // param_b[D] = 0.667;
    7232           4 :   param_b[C] =  0.665;  param_v[C] = 16.44;
    7233           4 :   param_b[N] =  0.94;   param_v[N] = 2.49;
    7234           4 :   param_b[O] =  0.580;  param_v[O] = 9.13;
    7235           4 :   param_b[P] =  0.51;   param_v[P] = 5.73;
    7236           4 :   param_b[S] =  0.28;   param_v[S] = 19.86;
    7237             : 
    7238           4 :   double solv_sc_length = 0.1*(param_b[O] + 2.*((1. - deuter_conc) * param_b[H] + deuter_conc * 0.667)); // per water electron (10 electrons)
    7239             : 
    7240           4 :   auto* moldat=plumed.getActionSet().selectLatest<GenericMolInfo*>(this);
    7241             : 
    7242             :   double Iq0=0.;
    7243           4 :   if( moldat ) {
    7244             :     // cycle over the atom types
    7245          28 :     for(unsigned i=0; i<NTT; ++i) {
    7246          24 :       double volr = std::pow(param_v[i], (2.0/3.0)) /(4. * M_PI);
    7247             :       // cycle over q
    7248         240 :       for(unsigned k=0; k<q_list.size(); ++k) {
    7249         216 :         const double q = q_list[k];
    7250         216 :         FF_tmp[k][i] = param_b[i];
    7251             :         // subtract solvation: rho * v_i * EXP( (- v_i^(2/3) / (4pi)) * q^2  ) // since  D in Fraser 1978 is 2*s
    7252         216 :         FF_tmp[k][i] -= solv_sc_length*rho*param_v[i]*std::exp(-volr*q*q);
    7253             :       }
    7254             :     }
    7255             :     // cycle over the atoms to assign the atom type and calculate I0
    7256       13922 :     for(unsigned i=0; i<atoms.size(); ++i) {
    7257             :       // get atom name
    7258       13918 :       std::string name = moldat->getAtomName(atoms[i]);
    7259             :       char type;
    7260             :       // get atom type
    7261       13918 :       char first = name.at(0);
    7262             :       // GOLDEN RULE: type is first letter, if not a number
    7263       13918 :       if (!isdigit(first)) {
    7264             :         type = first;
    7265             :         // otherwise is the second
    7266             :       } else {
    7267           0 :         type = name.at(1);
    7268             :       }
    7269       13918 :       std::string type_s = std::string(1,type);
    7270       13918 :       if(AA_map.find(type_s) != AA_map.end()) {
    7271       13918 :         const unsigned index=AA_map[type_s];
    7272       13918 :         atoi[i] = AA_map[type_s];
    7273       13918 :         Iq0 += param_b[index]-solv_sc_length*rho*param_v[index];
    7274             :       } else {
    7275           0 :         error("Wrong atom type "+type_s+" from atom name "+name+"\n");
    7276             :       }
    7277             :     }
    7278             :   } else {
    7279           0 :     error("MOLINFO DATA not found\n");
    7280             :   }
    7281           4 :   if(absolute) Iq0 = 1;
    7282             : 
    7283           4 :   return Iq0;
    7284             : }
    7285             : 
    7286          16 : std::map<std::string, std::vector<double> > SAXS::setupLCPOparam() {
    7287             :   std::map<std::string, std::vector<double> > lcpomap;
    7288             : 
    7289             :   // We arbitrarily set OC1/OT1 as the charged oxygen.
    7290             : 
    7291          16 :   lcpomap["ALA_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7292          16 :   lcpomap["ALA_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7293          16 :   lcpomap["ALA_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7294          16 :   lcpomap["ALA_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7295          16 :   lcpomap["ALA_CB"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7296          16 :   lcpomap["ALA_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7297          16 :   lcpomap["ALA_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7298          16 :   lcpomap["ALA_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7299          16 :   lcpomap["ALA_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7300          16 :   lcpomap["ALA_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7301             : 
    7302          16 :   lcpomap["ASP_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7303          16 :   lcpomap["ASP_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7304          16 :   lcpomap["ASP_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7305          16 :   lcpomap["ASP_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7306          16 :   lcpomap["ASP_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7307          16 :   lcpomap["ASP_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7308          16 :   lcpomap["ASP_OD1"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7309          16 :   lcpomap["ASP_OD2"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7310          16 :   lcpomap["ASP_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7311          16 :   lcpomap["ASP_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7312          16 :   lcpomap["ASP_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7313          16 :   lcpomap["ASP_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7314          16 :   lcpomap["ASP_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7315             : 
    7316          16 :   lcpomap["ASN_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7317          16 :   lcpomap["ASN_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7318          16 :   lcpomap["ASN_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7319          16 :   lcpomap["ASN_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7320          16 :   lcpomap["ASN_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7321          16 :   lcpomap["ASN_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7322          16 :   lcpomap["ASN_OD1"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7323          16 :   lcpomap["ASN_ND2"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    7324          16 :   lcpomap["ASN_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7325          16 :   lcpomap["ASN_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7326          16 :   lcpomap["ASN_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7327          16 :   lcpomap["ASN_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7328          16 :   lcpomap["ASN_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7329             : 
    7330          16 :   lcpomap["ARG_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7331          16 :   lcpomap["ARG_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7332          16 :   lcpomap["ARG_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7333          16 :   lcpomap["ARG_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7334          16 :   lcpomap["ARG_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7335          16 :   lcpomap["ARG_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7336          16 :   lcpomap["ARG_CD"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7337          16 :   lcpomap["ARG_NE"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7338          16 :   lcpomap["ARG_NH1"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    7339          16 :   lcpomap["ARG_NH2"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    7340          16 :   lcpomap["ARG_CZ"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7341          16 :   lcpomap["ARG_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7342          16 :   lcpomap["ARG_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7343          16 :   lcpomap["ARG_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7344          16 :   lcpomap["ARG_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7345          16 :   lcpomap["ARG_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7346             : 
    7347          16 :   lcpomap["CYS_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7348          16 :   lcpomap["CYS_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7349          16 :   lcpomap["CYS_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7350          16 :   lcpomap["CYS_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7351          16 :   lcpomap["CYS_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7352          16 :   lcpomap["CYS_SG"] = { 1.9,  0.54581,  -0.19477,  -0.0012873,  0.00029247};
    7353          16 :   lcpomap["CYS_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7354          16 :   lcpomap["CYS_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7355          16 :   lcpomap["CYS_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7356          16 :   lcpomap["CYS_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7357          16 :   lcpomap["CYS_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7358             : 
    7359          16 :   lcpomap["CYX_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7360          16 :   lcpomap["CYX_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7361          16 :   lcpomap["CYX_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7362          16 :   lcpomap["CYX_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7363          16 :   lcpomap["CYX_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7364          16 :   lcpomap["CYX_SG"] = { 1.9,  0.54581,  -0.19477,  -0.0012873,  0.00029247};
    7365          16 :   lcpomap["CYX_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7366          16 :   lcpomap["CYX_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7367          16 :   lcpomap["CYX_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7368          16 :   lcpomap["CYX_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7369          16 :   lcpomap["CYX_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7370             : 
    7371          16 :   lcpomap["GLU_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7372          16 :   lcpomap["GLU_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7373          16 :   lcpomap["GLU_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7374          16 :   lcpomap["GLU_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7375          16 :   lcpomap["GLU_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7376          16 :   lcpomap["GLU_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7377          16 :   lcpomap["GLU_CD"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7378          16 :   lcpomap["GLU_OE1"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7379          16 :   lcpomap["GLU_OE2"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7380          16 :   lcpomap["GLU_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7381          16 :   lcpomap["GLU_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7382          16 :   lcpomap["GLU_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7383          16 :   lcpomap["GLU_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7384          16 :   lcpomap["GLU_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7385             : 
    7386          16 :   lcpomap["GLN_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7387          16 :   lcpomap["GLN_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7388          16 :   lcpomap["GLN_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7389          16 :   lcpomap["GLN_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7390          16 :   lcpomap["GLN_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7391          16 :   lcpomap["GLN_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7392          16 :   lcpomap["GLN_CD"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7393          16 :   lcpomap["GLN_OE1"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7394          16 :   lcpomap["GLN_NE2"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    7395          16 :   lcpomap["GLN_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7396          16 :   lcpomap["GLN_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7397          16 :   lcpomap["GLN_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7398          16 :   lcpomap["GLN_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7399          16 :   lcpomap["GLN_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7400             : 
    7401          16 :   lcpomap["GLY_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7402          16 :   lcpomap["GLY_CA"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7403          16 :   lcpomap["GLY_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7404          16 :   lcpomap["GLY_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7405          16 :   lcpomap["GLY_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7406          16 :   lcpomap["GLY_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7407          16 :   lcpomap["GLY_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7408          16 :   lcpomap["GLY_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7409          16 :   lcpomap["GLY_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7410             : 
    7411          16 :   lcpomap["HIS_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7412          16 :   lcpomap["HIS_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7413          16 :   lcpomap["HIS_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7414          16 :   lcpomap["HIS_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7415          16 :   lcpomap["HIS_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7416          16 :   lcpomap["HIS_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7417          16 :   lcpomap["HIS_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7418          16 :   lcpomap["HIS_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7419          16 :   lcpomap["HIS_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7420          16 :   lcpomap["HIS_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7421          16 :   lcpomap["HIS_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7422          16 :   lcpomap["HIS_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7423          16 :   lcpomap["HIS_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7424             : 
    7425          16 :   lcpomap["HIE_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7426          16 :   lcpomap["HIE_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7427          16 :   lcpomap["HIE_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7428          16 :   lcpomap["HIE_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7429          16 :   lcpomap["HIE_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7430          16 :   lcpomap["HIE_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7431          16 :   lcpomap["HIE_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7432          16 :   lcpomap["HIE_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7433          16 :   lcpomap["HIE_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7434          16 :   lcpomap["HIE_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7435          16 :   lcpomap["HIE_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7436          16 :   lcpomap["HIE_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7437          16 :   lcpomap["HIE_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7438             : 
    7439          16 :   lcpomap["HSE_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7440          16 :   lcpomap["HSE_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7441          16 :   lcpomap["HSE_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7442          16 :   lcpomap["HSE_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7443          16 :   lcpomap["HSE_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7444          16 :   lcpomap["HSE_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7445          16 :   lcpomap["HSE_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7446          16 :   lcpomap["HSE_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7447          16 :   lcpomap["HSE_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7448          16 :   lcpomap["HSE_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7449          16 :   lcpomap["HSE_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7450          16 :   lcpomap["HSE_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7451          16 :   lcpomap["HSE_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7452             : 
    7453          16 :   lcpomap["HID_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7454          16 :   lcpomap["HID_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7455          16 :   lcpomap["HID_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7456          16 :   lcpomap["HID_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7457          16 :   lcpomap["HID_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7458          16 :   lcpomap["HID_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7459          16 :   lcpomap["HID_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7460          16 :   lcpomap["HID_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7461          16 :   lcpomap["HID_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7462          16 :   lcpomap["HID_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7463          16 :   lcpomap["HID_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7464          16 :   lcpomap["HID_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7465          16 :   lcpomap["HID_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7466             : 
    7467          16 :   lcpomap["HSD_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7468          16 :   lcpomap["HSD_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7469          16 :   lcpomap["HSD_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7470          16 :   lcpomap["HSD_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7471          16 :   lcpomap["HSD_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7472          16 :   lcpomap["HSD_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7473          16 :   lcpomap["HSD_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7474          16 :   lcpomap["HSD_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7475          16 :   lcpomap["HSD_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7476          16 :   lcpomap["HSD_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7477          16 :   lcpomap["HSD_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7478          16 :   lcpomap["HSD_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7479          16 :   lcpomap["HSD_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7480             : 
    7481          16 :   lcpomap["HIP_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7482          16 :   lcpomap["HIP_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7483          16 :   lcpomap["HIP_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7484          16 :   lcpomap["HIP_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7485          16 :   lcpomap["HIP_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7486          16 :   lcpomap["HIP_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7487          16 :   lcpomap["HIP_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7488          16 :   lcpomap["HIP_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7489          16 :   lcpomap["HIP_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7490          16 :   lcpomap["HIP_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7491          16 :   lcpomap["HIP_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7492          16 :   lcpomap["HIP_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7493          16 :   lcpomap["HIP_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7494             : 
    7495          16 :   lcpomap["HSP_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7496          16 :   lcpomap["HSP_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7497          16 :   lcpomap["HSP_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7498          16 :   lcpomap["HSP_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7499          16 :   lcpomap["HSP_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7500          16 :   lcpomap["HSP_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7501          16 :   lcpomap["HSP_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7502          16 :   lcpomap["HSP_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7503          16 :   lcpomap["HSP_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7504          16 :   lcpomap["HSP_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7505          16 :   lcpomap["HSP_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7506          16 :   lcpomap["HSP_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7507          16 :   lcpomap["HSP_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7508             : 
    7509          16 :   lcpomap["ILE_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7510          16 :   lcpomap["ILE_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7511          16 :   lcpomap["ILE_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7512          16 :   lcpomap["ILE_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7513          16 :   lcpomap["ILE_CB"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7514          16 :   lcpomap["ILE_CG2"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7515          16 :   lcpomap["ILE_CG1"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7516          16 :   lcpomap["ILE_CD1"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7517          16 :   lcpomap["ILE_CD"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7518          16 :   lcpomap["ILE_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7519          16 :   lcpomap["ILE_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7520          16 :   lcpomap["ILE_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7521          16 :   lcpomap["ILE_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7522          16 :   lcpomap["ILE_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7523             : 
    7524          16 :   lcpomap["LEU_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7525          16 :   lcpomap["LEU_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7526          16 :   lcpomap["LEU_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7527          16 :   lcpomap["LEU_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7528          16 :   lcpomap["LEU_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7529          16 :   lcpomap["LEU_CG"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7530          16 :   lcpomap["LEU_CD1"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7531          16 :   lcpomap["LEU_CD2"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7532          16 :   lcpomap["LEU_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7533          16 :   lcpomap["LEU_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7534          16 :   lcpomap["LEU_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7535          16 :   lcpomap["LEU_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7536          16 :   lcpomap["LEU_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7537             : 
    7538          16 :   lcpomap["LYS_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7539          16 :   lcpomap["LYS_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7540          16 :   lcpomap["LYS_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7541          16 :   lcpomap["LYS_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7542          16 :   lcpomap["LYS_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7543          16 :   lcpomap["LYS_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7544          16 :   lcpomap["LYS_CD"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7545          16 :   lcpomap["LYS_CE"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7546          16 :   lcpomap["LYS_NZ"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    7547          16 :   lcpomap["LYS_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7548          16 :   lcpomap["LYS_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7549          16 :   lcpomap["LYS_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7550          16 :   lcpomap["LYS_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7551          16 :   lcpomap["LYS_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7552             : 
    7553          16 :   lcpomap["MET_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7554          16 :   lcpomap["MET_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7555          16 :   lcpomap["MET_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7556          16 :   lcpomap["MET_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7557          16 :   lcpomap["MET_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7558          16 :   lcpomap["MET_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7559          16 :   lcpomap["MET_SD"] = { 1.9,  0.54581,  -0.19477,  -0.0012873,  0.00029247};
    7560          16 :   lcpomap["MET_CE"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7561          16 :   lcpomap["MET_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7562          16 :   lcpomap["MET_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7563          16 :   lcpomap["MET_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7564          16 :   lcpomap["MET_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7565          16 :   lcpomap["MET_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7566             : 
    7567          16 :   lcpomap["PHE_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7568          16 :   lcpomap["PHE_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7569          16 :   lcpomap["PHE_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7570          16 :   lcpomap["PHE_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7571          16 :   lcpomap["PHE_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7572          16 :   lcpomap["PHE_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7573          16 :   lcpomap["PHE_CD1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7574          16 :   lcpomap["PHE_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7575          16 :   lcpomap["PHE_CZ"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7576          16 :   lcpomap["PHE_CE2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7577          16 :   lcpomap["PHE_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7578          16 :   lcpomap["PHE_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7579          16 :   lcpomap["PHE_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7580          16 :   lcpomap["PHE_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7581          16 :   lcpomap["PHE_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7582          16 :   lcpomap["PHE_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7583             : 
    7584          16 :   lcpomap["PRO_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7585          16 :   lcpomap["PRO_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7586          16 :   lcpomap["PRO_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7587          16 :   lcpomap["PRO_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7588          16 :   lcpomap["PRO_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7589          16 :   lcpomap["PRO_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7590          16 :   lcpomap["PRO_CD"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7591          16 :   lcpomap["PRO_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7592          16 :   lcpomap["PRO_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7593          16 :   lcpomap["PRO_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7594          16 :   lcpomap["PRO_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7595          16 :   lcpomap["PRO_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7596             : 
    7597          16 :   lcpomap["SER_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7598          16 :   lcpomap["SER_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7599          16 :   lcpomap["SER_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7600          16 :   lcpomap["SER_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7601          16 :   lcpomap["SER_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7602          16 :   lcpomap["SER_OG"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7603          16 :   lcpomap["SER_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7604          16 :   lcpomap["SER_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7605          16 :   lcpomap["SER_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7606          16 :   lcpomap["SER_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7607          16 :   lcpomap["SER_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7608             : 
    7609          16 :   lcpomap["THR_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7610          16 :   lcpomap["THR_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7611          16 :   lcpomap["THR_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7612          16 :   lcpomap["THR_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7613          16 :   lcpomap["THR_CB"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7614          16 :   lcpomap["THR_CG2"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7615          16 :   lcpomap["THR_OG1"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7616          16 :   lcpomap["THR_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7617          16 :   lcpomap["THR_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7618          16 :   lcpomap["THR_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7619          16 :   lcpomap["THR_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7620          16 :   lcpomap["THR_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7621             : 
    7622          16 :   lcpomap["TRP_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7623          16 :   lcpomap["TRP_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7624          16 :   lcpomap["TRP_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7625          16 :   lcpomap["TRP_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7626          16 :   lcpomap["TRP_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7627          16 :   lcpomap["TRP_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7628          16 :   lcpomap["TRP_CD1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7629          16 :   lcpomap["TRP_NE1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7630          16 :   lcpomap["TRP_CE2"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7631          16 :   lcpomap["TRP_CZ2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7632          16 :   lcpomap["TRP_CH2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7633          16 :   lcpomap["TRP_CZ3"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7634          16 :   lcpomap["TRP_CE3"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7635          16 :   lcpomap["TRP_CD2"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7636          16 :   lcpomap["TRP_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7637          16 :   lcpomap["TRP_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7638          16 :   lcpomap["TRP_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7639          16 :   lcpomap["TRP_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7640          16 :   lcpomap["TRP_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7641             : 
    7642          16 :   lcpomap["TYR_N"] = { 1.65,  0.062577,  -0.017874,  -8.312e-05,  1.9849e-05};
    7643          16 :   lcpomap["TYR_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7644          16 :   lcpomap["TYR_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7645          16 :   lcpomap["TYR_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7646          16 :   lcpomap["TYR_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7647          16 :   lcpomap["TYR_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7648          16 :   lcpomap["TYR_CD1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7649          16 :   lcpomap["TYR_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7650          16 :   lcpomap["TYR_CZ"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7651          16 :   lcpomap["TYR_OH"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7652          16 :   lcpomap["TYR_CE2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7653          16 :   lcpomap["TYR_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7654          16 :   lcpomap["TYR_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7655          16 :   lcpomap["TYR_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7656          16 :   lcpomap["TYR_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7657          16 :   lcpomap["TYR_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7658          16 :   lcpomap["TYR_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7659             : 
    7660          16 :   lcpomap["VAL_N"] = { 1.65,  0.062577,  -0.017874,  -8.312e-05,  1.9849e-05};
    7661          16 :   lcpomap["VAL_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7662          16 :   lcpomap["VAL_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7663          16 :   lcpomap["VAL_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7664          16 :   lcpomap["VAL_CB"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7665          16 :   lcpomap["VAL_CG1"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7666          16 :   lcpomap["VAL_CG2"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7667          16 :   lcpomap["VAL_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7668          16 :   lcpomap["VAL_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7669          16 :   lcpomap["VAL_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7670          16 :   lcpomap["VAL_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7671          16 :   lcpomap["VAL_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7672             : 
    7673             :   // nucleic acids - WARNING: ONLY AMBER (OL3-rna/OL15-dna) FORMAT
    7674             : 
    7675          16 :   lcpomap["A3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7676          16 :   lcpomap["A3_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7677          16 :   lcpomap["A3_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7678          16 :   lcpomap["A3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7679          16 :   lcpomap["A3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7680          16 :   lcpomap["A3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7681          16 :   lcpomap["A3_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7682          16 :   lcpomap["A3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7683          16 :   lcpomap["A3_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7684          16 :   lcpomap["A3_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7685          16 :   lcpomap["A3_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7686          16 :   lcpomap["A3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7687          16 :   lcpomap["A3_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7688          16 :   lcpomap["A3_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7689          16 :   lcpomap["A3_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7690          16 :   lcpomap["A3_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7691          16 :   lcpomap["A3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7692          16 :   lcpomap["A3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7693          16 :   lcpomap["A3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7694          16 :   lcpomap["A3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7695          16 :   lcpomap["A3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7696          16 :   lcpomap["A3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7697          16 :   lcpomap["A3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7698          16 :   lcpomap["A3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7699          16 :   lcpomap["A3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7700          16 :   lcpomap["A3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7701             : 
    7702          16 :   lcpomap["A5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7703          16 :   lcpomap["A5_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7704          16 :   lcpomap["A5_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7705          16 :   lcpomap["A5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7706          16 :   lcpomap["A5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7707          16 :   lcpomap["A5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7708          16 :   lcpomap["A5_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7709          16 :   lcpomap["A5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7710          16 :   lcpomap["A5_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7711          16 :   lcpomap["A5_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7712          16 :   lcpomap["A5_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7713          16 :   lcpomap["A5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7714          16 :   lcpomap["A5_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7715          16 :   lcpomap["A5_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7716          16 :   lcpomap["A5_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7717          16 :   lcpomap["A5_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7718          16 :   lcpomap["A5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7719          16 :   lcpomap["A5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7720          16 :   lcpomap["A5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7721          16 :   lcpomap["A5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7722          16 :   lcpomap["A5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7723          16 :   lcpomap["A5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7724          16 :   lcpomap["A5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7725          16 :   lcpomap["A5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7726             : 
    7727          16 :   lcpomap["AT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7728          16 :   lcpomap["AT_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7729          16 :   lcpomap["AT_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7730          16 :   lcpomap["AT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7731          16 :   lcpomap["AT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7732          16 :   lcpomap["AT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7733          16 :   lcpomap["AT_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7734          16 :   lcpomap["AT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7735          16 :   lcpomap["AT_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7736          16 :   lcpomap["AT_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7737          16 :   lcpomap["AT_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7738          16 :   lcpomap["AT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7739          16 :   lcpomap["AT_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7740          16 :   lcpomap["AT_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7741          16 :   lcpomap["AT_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7742          16 :   lcpomap["AT_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7743          16 :   lcpomap["AT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7744          16 :   lcpomap["AT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7745          16 :   lcpomap["AT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7746          16 :   lcpomap["AT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7747          16 :   lcpomap["AT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7748          16 :   lcpomap["AT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7749          16 :   lcpomap["AT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7750          16 :   lcpomap["AT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7751          16 :   lcpomap["AT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7752          16 :   lcpomap["AT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7753             : 
    7754          16 :   lcpomap["A_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7755          16 :   lcpomap["A_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7756          16 :   lcpomap["A_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7757          16 :   lcpomap["A_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7758          16 :   lcpomap["A_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7759          16 :   lcpomap["A_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7760          16 :   lcpomap["A_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7761          16 :   lcpomap["A_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7762          16 :   lcpomap["A_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7763          16 :   lcpomap["A_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7764          16 :   lcpomap["A_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7765          16 :   lcpomap["A_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7766          16 :   lcpomap["A_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7767          16 :   lcpomap["A_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7768          16 :   lcpomap["A_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7769          16 :   lcpomap["A_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7770          16 :   lcpomap["A_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7771          16 :   lcpomap["A_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7772          16 :   lcpomap["A_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7773          16 :   lcpomap["A_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7774          16 :   lcpomap["A_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7775          16 :   lcpomap["A_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7776          16 :   lcpomap["A_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7777          16 :   lcpomap["A_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7778          16 :   lcpomap["A_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7779          16 :   lcpomap["A_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7780             : 
    7781          16 :   lcpomap["C3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7782          16 :   lcpomap["C3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7783          16 :   lcpomap["C3_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7784          16 :   lcpomap["C3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7785          16 :   lcpomap["C3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7786          16 :   lcpomap["C3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7787          16 :   lcpomap["C3_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7788          16 :   lcpomap["C3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7789          16 :   lcpomap["C3_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7790          16 :   lcpomap["C3_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7791          16 :   lcpomap["C3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7792          16 :   lcpomap["C3_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7793          16 :   lcpomap["C3_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7794          16 :   lcpomap["C3_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7795          16 :   lcpomap["C3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7796          16 :   lcpomap["C3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7797          16 :   lcpomap["C3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7798          16 :   lcpomap["C3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7799          16 :   lcpomap["C3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7800          16 :   lcpomap["C3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7801          16 :   lcpomap["C3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7802          16 :   lcpomap["C3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7803          16 :   lcpomap["C3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7804          16 :   lcpomap["C3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7805             : 
    7806          16 :   lcpomap["C5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7807          16 :   lcpomap["C5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7808          16 :   lcpomap["C5_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7809          16 :   lcpomap["C5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7810          16 :   lcpomap["C5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7811          16 :   lcpomap["C5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7812          16 :   lcpomap["C5_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7813          16 :   lcpomap["C5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7814          16 :   lcpomap["C5_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7815          16 :   lcpomap["C5_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7816          16 :   lcpomap["C5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7817          16 :   lcpomap["C5_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7818          16 :   lcpomap["C5_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7819          16 :   lcpomap["C5_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7820          16 :   lcpomap["C5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7821          16 :   lcpomap["C5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7822          16 :   lcpomap["C5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7823          16 :   lcpomap["C5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7824          16 :   lcpomap["C5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7825          16 :   lcpomap["C5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7826          16 :   lcpomap["C5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7827          16 :   lcpomap["C5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7828             : 
    7829          16 :   lcpomap["CT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7830          16 :   lcpomap["CT_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7831          16 :   lcpomap["CT_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7832          16 :   lcpomap["CT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7833          16 :   lcpomap["CT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7834          16 :   lcpomap["CT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7835          16 :   lcpomap["CT_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7836          16 :   lcpomap["CT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7837          16 :   lcpomap["CT_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7838          16 :   lcpomap["CT_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7839          16 :   lcpomap["CT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7840          16 :   lcpomap["CT_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7841          16 :   lcpomap["CT_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7842          16 :   lcpomap["CT_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7843          16 :   lcpomap["CT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7844          16 :   lcpomap["CT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7845          16 :   lcpomap["CT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7846          16 :   lcpomap["CT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7847          16 :   lcpomap["CT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7848          16 :   lcpomap["CT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7849          16 :   lcpomap["CT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7850          16 :   lcpomap["CT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7851          16 :   lcpomap["CT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7852          16 :   lcpomap["CT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7853             : 
    7854          16 :   lcpomap["C_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7855          16 :   lcpomap["C_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7856          16 :   lcpomap["C_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7857          16 :   lcpomap["C_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7858          16 :   lcpomap["C_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7859          16 :   lcpomap["C_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7860          16 :   lcpomap["C_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7861          16 :   lcpomap["C_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7862          16 :   lcpomap["C_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7863          16 :   lcpomap["C_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7864          16 :   lcpomap["C_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7865          16 :   lcpomap["C_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7866          16 :   lcpomap["C_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7867          16 :   lcpomap["C_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7868          16 :   lcpomap["C_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7869          16 :   lcpomap["C_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7870          16 :   lcpomap["C_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7871          16 :   lcpomap["C_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7872          16 :   lcpomap["C_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7873          16 :   lcpomap["C_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7874          16 :   lcpomap["C_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7875          16 :   lcpomap["C_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7876          16 :   lcpomap["C_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7877          16 :   lcpomap["C_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7878             : 
    7879          16 :   lcpomap["DA3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7880          16 :   lcpomap["DA3_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7881          16 :   lcpomap["DA3_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7882          16 :   lcpomap["DA3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7883          16 :   lcpomap["DA3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7884          16 :   lcpomap["DA3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7885          16 :   lcpomap["DA3_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7886          16 :   lcpomap["DA3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7887          16 :   lcpomap["DA3_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7888          16 :   lcpomap["DA3_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7889          16 :   lcpomap["DA3_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7890          16 :   lcpomap["DA3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7891          16 :   lcpomap["DA3_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7892          16 :   lcpomap["DA3_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7893          16 :   lcpomap["DA3_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7894          16 :   lcpomap["DA3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7895          16 :   lcpomap["DA3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7896          16 :   lcpomap["DA3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7897          16 :   lcpomap["DA3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7898          16 :   lcpomap["DA3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7899          16 :   lcpomap["DA3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7900          16 :   lcpomap["DA3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7901          16 :   lcpomap["DA3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7902          16 :   lcpomap["DA3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7903          16 :   lcpomap["DA3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7904             : 
    7905          16 :   lcpomap["DA5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7906          16 :   lcpomap["DA5_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7907          16 :   lcpomap["DA5_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7908          16 :   lcpomap["DA5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7909          16 :   lcpomap["DA5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7910          16 :   lcpomap["DA5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7911          16 :   lcpomap["DA5_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7912          16 :   lcpomap["DA5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7913          16 :   lcpomap["DA5_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7914          16 :   lcpomap["DA5_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7915          16 :   lcpomap["DA5_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7916          16 :   lcpomap["DA5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7917          16 :   lcpomap["DA5_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7918          16 :   lcpomap["DA5_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7919          16 :   lcpomap["DA5_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7920          16 :   lcpomap["DA5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7921          16 :   lcpomap["DA5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7922          16 :   lcpomap["DA5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7923          16 :   lcpomap["DA5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7924          16 :   lcpomap["DA5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7925          16 :   lcpomap["DA5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7926          16 :   lcpomap["DA5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7927          16 :   lcpomap["DA5_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7928             : 
    7929          16 :   lcpomap["DAT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7930          16 :   lcpomap["DAT_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7931          16 :   lcpomap["DAT_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7932          16 :   lcpomap["DAT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7933          16 :   lcpomap["DAT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7934          16 :   lcpomap["DAT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7935          16 :   lcpomap["DAT_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7936          16 :   lcpomap["DAT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7937          16 :   lcpomap["DAT_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7938          16 :   lcpomap["DAT_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7939          16 :   lcpomap["DAT_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7940          16 :   lcpomap["DAT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7941          16 :   lcpomap["DAT_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7942          16 :   lcpomap["DAT_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7943          16 :   lcpomap["DAT_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7944          16 :   lcpomap["DAT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7945          16 :   lcpomap["DAT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7946          16 :   lcpomap["DAT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7947          16 :   lcpomap["DAT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7948          16 :   lcpomap["DAT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7949          16 :   lcpomap["DAT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7950          16 :   lcpomap["DAT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7951          16 :   lcpomap["DAT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7952          16 :   lcpomap["DAT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7953          16 :   lcpomap["DAT_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7954             : 
    7955          16 :   lcpomap["DA_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7956          16 :   lcpomap["DA_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7957          16 :   lcpomap["DA_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7958          16 :   lcpomap["DA_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7959          16 :   lcpomap["DA_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7960          16 :   lcpomap["DA_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7961          16 :   lcpomap["DA_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7962          16 :   lcpomap["DA_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7963          16 :   lcpomap["DA_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7964          16 :   lcpomap["DA_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7965          16 :   lcpomap["DA_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7966          16 :   lcpomap["DA_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7967          16 :   lcpomap["DA_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7968          16 :   lcpomap["DA_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7969          16 :   lcpomap["DA_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7970          16 :   lcpomap["DA_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7971          16 :   lcpomap["DA_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7972          16 :   lcpomap["DA_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7973          16 :   lcpomap["DA_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7974          16 :   lcpomap["DA_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7975          16 :   lcpomap["DA_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7976          16 :   lcpomap["DA_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7977          16 :   lcpomap["DA_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7978          16 :   lcpomap["DA_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7979          16 :   lcpomap["DA_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7980             : 
    7981          16 :   lcpomap["DC3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7982          16 :   lcpomap["DC3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7983          16 :   lcpomap["DC3_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7984          16 :   lcpomap["DC3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7985          16 :   lcpomap["DC3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7986          16 :   lcpomap["DC3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7987          16 :   lcpomap["DC3_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7988          16 :   lcpomap["DC3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7989          16 :   lcpomap["DC3_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7990          16 :   lcpomap["DC3_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7991          16 :   lcpomap["DC3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7992          16 :   lcpomap["DC3_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7993          16 :   lcpomap["DC3_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7994          16 :   lcpomap["DC3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7995          16 :   lcpomap["DC3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7996          16 :   lcpomap["DC3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7997          16 :   lcpomap["DC3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7998          16 :   lcpomap["DC3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7999          16 :   lcpomap["DC3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8000          16 :   lcpomap["DC3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8001          16 :   lcpomap["DC3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8002          16 :   lcpomap["DC3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8003          16 :   lcpomap["DC3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8004             : 
    8005          16 :   lcpomap["DC5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8006          16 :   lcpomap["DC5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8007          16 :   lcpomap["DC5_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8008          16 :   lcpomap["DC5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8009          16 :   lcpomap["DC5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8010          16 :   lcpomap["DC5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8011          16 :   lcpomap["DC5_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8012          16 :   lcpomap["DC5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8013          16 :   lcpomap["DC5_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8014          16 :   lcpomap["DC5_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8015          16 :   lcpomap["DC5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8016          16 :   lcpomap["DC5_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8017          16 :   lcpomap["DC5_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8018          16 :   lcpomap["DC5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8019          16 :   lcpomap["DC5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8020          16 :   lcpomap["DC5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8021          16 :   lcpomap["DC5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8022          16 :   lcpomap["DC5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8023          16 :   lcpomap["DC5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8024          16 :   lcpomap["DC5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8025          16 :   lcpomap["DC5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8026             : 
    8027          16 :   lcpomap["DCT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8028          16 :   lcpomap["DCT_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
    8029          16 :   lcpomap["DCT_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8030          16 :   lcpomap["DCT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8031          16 :   lcpomap["DCT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
    8032          16 :   lcpomap["DCT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8033          16 :   lcpomap["DCT_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8034          16 :   lcpomap["DCT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8035          16 :   lcpomap["DCT_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8036          16 :   lcpomap["DCT_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05};
    8037          16 :   lcpomap["DCT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8038          16 :   lcpomap["DCT_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8039          16 :   lcpomap["DCT_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8040          16 :   lcpomap["DCT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8041          16 :   lcpomap["DCT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8042          16 :   lcpomap["DCT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8043          16 :   lcpomap["DCT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8044          16 :   lcpomap["DCT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8045          16 :   lcpomap["DCT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8046          16 :   lcpomap["DCT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8047          16 :   lcpomap["DCT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8048          16 :   lcpomap["DCT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8049          16 :   lcpomap["DCT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8050             : 
    8051          16 :   lcpomap["DC_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8052          16 :   lcpomap["DC_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8053          16 :   lcpomap["DC_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8054          16 :   lcpomap["DC_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8055          16 :   lcpomap["DC_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8056          16 :   lcpomap["DC_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8057          16 :   lcpomap["DC_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8058          16 :   lcpomap["DC_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8059          16 :   lcpomap["DC_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8060          16 :   lcpomap["DC_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8061          16 :   lcpomap["DC_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8062          16 :   lcpomap["DC_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8063          16 :   lcpomap["DC_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8064          16 :   lcpomap["DC_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8065          16 :   lcpomap["DC_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8066          16 :   lcpomap["DC_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8067          16 :   lcpomap["DC_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8068          16 :   lcpomap["DC_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8069          16 :   lcpomap["DC_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8070          16 :   lcpomap["DC_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8071          16 :   lcpomap["DC_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8072          16 :   lcpomap["DC_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8073          16 :   lcpomap["DC_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8074             : 
    8075          16 :   lcpomap["DG3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8076          16 :   lcpomap["DG3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8077          16 :   lcpomap["DG3_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8078          16 :   lcpomap["DG3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8079          16 :   lcpomap["DG3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8080          16 :   lcpomap["DG3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8081          16 :   lcpomap["DG3_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8082          16 :   lcpomap["DG3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8083          16 :   lcpomap["DG3_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8084          16 :   lcpomap["DG3_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8085          16 :   lcpomap["DG3_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8086          16 :   lcpomap["DG3_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8087          16 :   lcpomap["DG3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8088          16 :   lcpomap["DG3_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8089          16 :   lcpomap["DG3_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8090          16 :   lcpomap["DG3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8091          16 :   lcpomap["DG3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8092          16 :   lcpomap["DG3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8093          16 :   lcpomap["DG3_O6"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8094          16 :   lcpomap["DG3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8095          16 :   lcpomap["DG3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8096          16 :   lcpomap["DG3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8097          16 :   lcpomap["DG3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8098          16 :   lcpomap["DG3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8099          16 :   lcpomap["DG3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8100          16 :   lcpomap["DG3_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8101             : 
    8102          16 :   lcpomap["DG5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8103          16 :   lcpomap["DG5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8104          16 :   lcpomap["DG5_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8105          16 :   lcpomap["DG5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8106          16 :   lcpomap["DG5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8107          16 :   lcpomap["DG5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8108          16 :   lcpomap["DG5_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8109          16 :   lcpomap["DG5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8110          16 :   lcpomap["DG5_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8111          16 :   lcpomap["DG5_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8112          16 :   lcpomap["DG5_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8113          16 :   lcpomap["DG5_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8114          16 :   lcpomap["DG5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8115          16 :   lcpomap["DG5_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8116          16 :   lcpomap["DG5_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8117          16 :   lcpomap["DG5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8118          16 :   lcpomap["DG5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8119          16 :   lcpomap["DG5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8120          16 :   lcpomap["DG5_O6"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8121          16 :   lcpomap["DG5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8122          16 :   lcpomap["DG5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8123          16 :   lcpomap["DG5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8124          16 :   lcpomap["DG5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8125          16 :   lcpomap["DG5_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8126             : 
    8127          16 :   lcpomap["DGT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8128          16 :   lcpomap["DGT_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8129          16 :   lcpomap["DGT_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8130          16 :   lcpomap["DGT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8131          16 :   lcpomap["DGT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8132          16 :   lcpomap["DGT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8133          16 :   lcpomap["DGT_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8134          16 :   lcpomap["DGT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8135          16 :   lcpomap["DGT_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8136          16 :   lcpomap["DGT_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8137          16 :   lcpomap["DGT_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8138          16 :   lcpomap["DGT_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8139          16 :   lcpomap["DGT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8140          16 :   lcpomap["DGT_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8141          16 :   lcpomap["DGT_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8142          16 :   lcpomap["DGT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8143          16 :   lcpomap["DGT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8144          16 :   lcpomap["DGT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8145          16 :   lcpomap["DGT_O6"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8146          16 :   lcpomap["DGT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8147          16 :   lcpomap["DGT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8148          16 :   lcpomap["DGT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8149          16 :   lcpomap["DGT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8150          16 :   lcpomap["DGT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8151          16 :   lcpomap["DGT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8152          16 :   lcpomap["DGT_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8153             : 
    8154          16 :   lcpomap["DG_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8155          16 :   lcpomap["DG_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8156          16 :   lcpomap["DG_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8157          16 :   lcpomap["DG_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8158          16 :   lcpomap["DG_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8159          16 :   lcpomap["DG_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8160          16 :   lcpomap["DG_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8161          16 :   lcpomap["DG_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8162          16 :   lcpomap["DG_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8163          16 :   lcpomap["DG_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8164          16 :   lcpomap["DG_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8165          16 :   lcpomap["DG_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8166          16 :   lcpomap["DG_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8167          16 :   lcpomap["DG_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8168          16 :   lcpomap["DG_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8169          16 :   lcpomap["DG_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8170          16 :   lcpomap["DG_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8171          16 :   lcpomap["DG_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8172          16 :   lcpomap["DG_O6"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8173          16 :   lcpomap["DG_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8174          16 :   lcpomap["DG_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8175          16 :   lcpomap["DG_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8176          16 :   lcpomap["DG_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8177          16 :   lcpomap["DG_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8178          16 :   lcpomap["DG_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8179          16 :   lcpomap["DG_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8180             : 
    8181          16 :   lcpomap["DT3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8182          16 :   lcpomap["DT3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8183          16 :   lcpomap["DT3_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8184          16 :   lcpomap["DT3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8185          16 :   lcpomap["DT3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8186          16 :   lcpomap["DT3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8187          16 :   lcpomap["DT3_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8188          16 :   lcpomap["DT3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8189          16 :   lcpomap["DT3_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8190          16 :   lcpomap["DT3_C7"]  = { 1.7,  0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
    8191          16 :   lcpomap["DT3_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8192          16 :   lcpomap["DT3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8193          16 :   lcpomap["DT3_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8194          16 :   lcpomap["DT3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8195          16 :   lcpomap["DT3_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8196          16 :   lcpomap["DT3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8197          16 :   lcpomap["DT3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8198          16 :   lcpomap["DT3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8199          16 :   lcpomap["DT3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8200          16 :   lcpomap["DT3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8201          16 :   lcpomap["DT3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8202          16 :   lcpomap["DT3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8203          16 :   lcpomap["DT3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8204          16 :   lcpomap["DT3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8205             : 
    8206          16 :   lcpomap["DT5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8207          16 :   lcpomap["DT5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8208          16 :   lcpomap["DT5_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8209          16 :   lcpomap["DT5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8210          16 :   lcpomap["DT5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8211          16 :   lcpomap["DT5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8212          16 :   lcpomap["DT5_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8213          16 :   lcpomap["DT5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8214          16 :   lcpomap["DT5_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8215          16 :   lcpomap["DT5_C7"]  = { 1.7,  0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
    8216          16 :   lcpomap["DT5_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8217          16 :   lcpomap["DT5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8218          16 :   lcpomap["DT5_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8219          16 :   lcpomap["DT5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8220          16 :   lcpomap["DT5_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8221          16 :   lcpomap["DT5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8222          16 :   lcpomap["DT5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8223          16 :   lcpomap["DT5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8224          16 :   lcpomap["DT5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8225          16 :   lcpomap["DT5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8226          16 :   lcpomap["DT5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8227          16 :   lcpomap["DT5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8228             : 
    8229          16 :   lcpomap["DTT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8230          16 :   lcpomap["DTT_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8231          16 :   lcpomap["DTT_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8232          16 :   lcpomap["DTT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8233          16 :   lcpomap["DTT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8234          16 :   lcpomap["DTT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8235          16 :   lcpomap["DTT_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8236          16 :   lcpomap["DTT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8237          16 :   lcpomap["DTT_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8238          16 :   lcpomap["DTT_C7"]  = { 1.7,  0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
    8239          16 :   lcpomap["DTT_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8240          16 :   lcpomap["DTT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8241          16 :   lcpomap["DTT_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8242          16 :   lcpomap["DTT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8243          16 :   lcpomap["DTT_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8244          16 :   lcpomap["DTT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8245          16 :   lcpomap["DTT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8246          16 :   lcpomap["DTT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8247          16 :   lcpomap["DTT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8248          16 :   lcpomap["DTT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8249          16 :   lcpomap["DTT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8250          16 :   lcpomap["DTT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8251          16 :   lcpomap["DTT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8252          16 :   lcpomap["DTT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8253             : 
    8254          16 :   lcpomap["DT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8255          16 :   lcpomap["DT_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8256          16 :   lcpomap["DT_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8257          16 :   lcpomap["DT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8258          16 :   lcpomap["DT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8259          16 :   lcpomap["DT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8260          16 :   lcpomap["DT_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8261          16 :   lcpomap["DT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8262          16 :   lcpomap["DT_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8263          16 :   lcpomap["DT_C7"]  = { 1.7,  0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
    8264          16 :   lcpomap["DT_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8265          16 :   lcpomap["DT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8266          16 :   lcpomap["DT_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8267          16 :   lcpomap["DT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8268          16 :   lcpomap["DT_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8269          16 :   lcpomap["DT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8270          16 :   lcpomap["DT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8271          16 :   lcpomap["DT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8272          16 :   lcpomap["DT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8273          16 :   lcpomap["DT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8274          16 :   lcpomap["DT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8275          16 :   lcpomap["DT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8276          16 :   lcpomap["DT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8277          16 :   lcpomap["DT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8278             : 
    8279          16 :   lcpomap["G3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8280          16 :   lcpomap["G3_C2"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8281          16 :   lcpomap["G3_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8282          16 :   lcpomap["G3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8283          16 :   lcpomap["G3_C4"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8284          16 :   lcpomap["G3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8285          16 :   lcpomap["G3_C5"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8286          16 :   lcpomap["G3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8287          16 :   lcpomap["G3_C6"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8288          16 :   lcpomap["G3_C8"] = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8289          16 :   lcpomap["G3_N1"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8290          16 :   lcpomap["G3_N2"] = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8291          16 :   lcpomap["G3_N3"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8292          16 :   lcpomap["G3_N7"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8293          16 :   lcpomap["G3_N9"] = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8294          16 :   lcpomap["G3_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8295          16 :   lcpomap["G3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8296          16 :   lcpomap["G3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8297          16 :   lcpomap["G3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8298          16 :   lcpomap["G3_O6"] = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8299          16 :   lcpomap["G3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8300          16 :   lcpomap["G3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8301          16 :   lcpomap["G3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8302          16 :   lcpomap["G3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8303          16 :   lcpomap["G3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8304          16 :   lcpomap["G3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8305          16 :   lcpomap["G3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8306             : 
    8307          16 :   lcpomap["G5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8308          16 :   lcpomap["G5_C2"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8309          16 :   lcpomap["G5_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8310          16 :   lcpomap["G5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8311          16 :   lcpomap["G5_C4"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8312          16 :   lcpomap["G5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8313          16 :   lcpomap["G5_C5"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8314          16 :   lcpomap["G5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8315          16 :   lcpomap["G5_C6"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8316          16 :   lcpomap["G5_C8"] = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8317          16 :   lcpomap["G5_N1"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8318          16 :   lcpomap["G5_N2"] = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8319          16 :   lcpomap["G5_N3"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8320          16 :   lcpomap["G5_N7"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8321          16 :   lcpomap["G5_N9"] = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8322          16 :   lcpomap["G5_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8323          16 :   lcpomap["G5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8324          16 :   lcpomap["G5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8325          16 :   lcpomap["G5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8326          16 :   lcpomap["G5_O6"] = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8327          16 :   lcpomap["G5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8328          16 :   lcpomap["G5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8329          16 :   lcpomap["G5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8330          16 :   lcpomap["G5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8331          16 :   lcpomap["G5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8332             : 
    8333          16 :   lcpomap["GT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8334          16 :   lcpomap["GT_C2"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8335          16 :   lcpomap["GT_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8336          16 :   lcpomap["GT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8337          16 :   lcpomap["GT_C4"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8338          16 :   lcpomap["GT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8339          16 :   lcpomap["GT_C5"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8340          16 :   lcpomap["GT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8341          16 :   lcpomap["GT_C6"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8342          16 :   lcpomap["GT_C8"] = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8343          16 :   lcpomap["GT_N1"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8344          16 :   lcpomap["GT_N2"] = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8345          16 :   lcpomap["GT_N3"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8346          16 :   lcpomap["GT_N7"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8347          16 :   lcpomap["GT_N9"] = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8348          16 :   lcpomap["GT_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8349          16 :   lcpomap["GT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8350          16 :   lcpomap["GT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8351          16 :   lcpomap["GT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8352          16 :   lcpomap["GT_O6"] = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8353          16 :   lcpomap["GT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8354          16 :   lcpomap["GT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8355          16 :   lcpomap["GT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8356          16 :   lcpomap["GT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8357          16 :   lcpomap["GT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8358          16 :   lcpomap["GT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8359          16 :   lcpomap["GT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8360             : 
    8361          16 :   lcpomap["G_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8362          16 :   lcpomap["G_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8363          16 :   lcpomap["G_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8364          16 :   lcpomap["G_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8365          16 :   lcpomap["G_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8366          16 :   lcpomap["G_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8367          16 :   lcpomap["G_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8368          16 :   lcpomap["G_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8369          16 :   lcpomap["G_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8370          16 :   lcpomap["G_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8371          16 :   lcpomap["G_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8372          16 :   lcpomap["G_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8373          16 :   lcpomap["G_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8374          16 :   lcpomap["G_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8375          16 :   lcpomap["G_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8376          16 :   lcpomap["G_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8377          16 :   lcpomap["G_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8378          16 :   lcpomap["G_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8379          16 :   lcpomap["G_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8380          16 :   lcpomap["G_O6"] = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8381          16 :   lcpomap["G_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8382          16 :   lcpomap["G_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8383          16 :   lcpomap["G_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8384          16 :   lcpomap["G_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8385          16 :   lcpomap["G_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8386          16 :   lcpomap["G_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8387          16 :   lcpomap["G_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8388             : 
    8389          16 :   lcpomap["U3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8390          16 :   lcpomap["U3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8391          16 :   lcpomap["U3_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8392          16 :   lcpomap["U3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8393          16 :   lcpomap["U3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8394          16 :   lcpomap["U3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8395          16 :   lcpomap["U3_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8396          16 :   lcpomap["U3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8397          16 :   lcpomap["U3_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8398          16 :   lcpomap["U3_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8399          16 :   lcpomap["U3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8400          16 :   lcpomap["U3_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8401          16 :   lcpomap["U3_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8402          16 :   lcpomap["U3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8403          16 :   lcpomap["U3_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8404          16 :   lcpomap["U3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8405          16 :   lcpomap["U3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8406          16 :   lcpomap["U3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8407          16 :   lcpomap["U3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8408          16 :   lcpomap["U3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8409          16 :   lcpomap["U3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8410          16 :   lcpomap["U3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8411          16 :   lcpomap["U3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8412          16 :   lcpomap["U3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8413             : 
    8414          16 :   lcpomap["U5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8415          16 :   lcpomap["U5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8416          16 :   lcpomap["U5_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8417          16 :   lcpomap["U5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8418          16 :   lcpomap["U5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8419          16 :   lcpomap["U5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8420          16 :   lcpomap["U5_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8421          16 :   lcpomap["U5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8422          16 :   lcpomap["U5_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8423          16 :   lcpomap["U5_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8424          16 :   lcpomap["U5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8425          16 :   lcpomap["U5_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8426          16 :   lcpomap["U5_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8427          16 :   lcpomap["U5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8428          16 :   lcpomap["U5_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8429          16 :   lcpomap["U5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8430          16 :   lcpomap["U5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8431          16 :   lcpomap["U5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8432          16 :   lcpomap["U5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8433          16 :   lcpomap["U5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8434          16 :   lcpomap["U5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8435          16 :   lcpomap["U5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8436             : 
    8437          16 :   lcpomap["UT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8438          16 :   lcpomap["UT_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8439          16 :   lcpomap["UT_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8440          16 :   lcpomap["UT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8441          16 :   lcpomap["UT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8442          16 :   lcpomap["UT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8443          16 :   lcpomap["UT_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8444          16 :   lcpomap["UT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8445          16 :   lcpomap["UT_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8446          16 :   lcpomap["UT_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8447          16 :   lcpomap["UT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8448          16 :   lcpomap["UT_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8449          16 :   lcpomap["UT_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8450          16 :   lcpomap["UT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8451          16 :   lcpomap["UT_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8452          16 :   lcpomap["UT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8453          16 :   lcpomap["UT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8454          16 :   lcpomap["UT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8455          16 :   lcpomap["UT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8456          16 :   lcpomap["UT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8457          16 :   lcpomap["UT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8458          16 :   lcpomap["UT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8459          16 :   lcpomap["UT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8460          16 :   lcpomap["UT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8461             : 
    8462          16 :   lcpomap["U_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8463          16 :   lcpomap["U_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8464          16 :   lcpomap["U_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8465          16 :   lcpomap["U_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8466          16 :   lcpomap["U_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8467          16 :   lcpomap["U_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8468          16 :   lcpomap["U_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8469          16 :   lcpomap["U_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8470          16 :   lcpomap["U_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8471          16 :   lcpomap["U_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8472          16 :   lcpomap["U_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8473          16 :   lcpomap["U_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8474          16 :   lcpomap["U_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8475          16 :   lcpomap["U_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8476          16 :   lcpomap["U_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8477          16 :   lcpomap["U_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8478          16 :   lcpomap["U_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8479          16 :   lcpomap["U_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8480          16 :   lcpomap["U_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8481          16 :   lcpomap["U_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8482          16 :   lcpomap["U_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8483          16 :   lcpomap["U_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8484          16 :   lcpomap["U_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8485          16 :   lcpomap["U_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8486             : 
    8487          16 :   return lcpomap;
    8488             : }
    8489             : 
    8490             : // assigns LCPO parameters to each atom reading from database
    8491          16 : void SAXS::readLCPOparam(const std::vector<std::vector<std::string> > &AtomResidueName, unsigned natoms)
    8492             : {
    8493          16 :   std::map<std::string, std::vector<double> > lcpomap = setupLCPOparam();
    8494             : 
    8495       56602 :   for(unsigned i=0; i<natoms; ++i)
    8496             :   {
    8497       56586 :     if ((AtomResidueName[0][i][0]=='O') || (AtomResidueName[0][i][0]=='N') || (AtomResidueName[0][i][0]=='C') || (AtomResidueName[0][i][0]=='S' || (AtomResidueName[0][i][0]=='P'))) {
    8498       26526 :       std::string identifier = AtomResidueName[1][i]+"_"+AtomResidueName[0][i];
    8499       26526 :       std::vector<double> LCPOparamVector = lcpomap.at(identifier);
    8500             :       double rs = 0.14;
    8501       26526 :       LCPOparam[i].push_back(LCPOparamVector[0]+rs*10.);
    8502       26526 :       LCPOparam[i].push_back(LCPOparamVector[1]);
    8503       26526 :       LCPOparam[i].push_back(LCPOparamVector[2]);
    8504       26526 :       LCPOparam[i].push_back(LCPOparamVector[3]);
    8505       26526 :       LCPOparam[i].push_back(LCPOparamVector[4]);
    8506             :     }
    8507             :   }
    8508             : 
    8509       56602 :   for(unsigned i=0; i<natoms; ++i) {
    8510       56586 :     if (LCPOparam[i].size()==0 ) {
    8511       30060 :       if ((AtomResidueName[0][i][0]=='O') || (AtomResidueName[0][i][0]=='N') || (AtomResidueName[0][i][0]=='C') || (AtomResidueName[0][i][0]=='S') || (AtomResidueName[0][i][0]=='P')) {
    8512           0 :         std::cout << "Could not find LCPO paramaters for atom " << AtomResidueName[0][i] << " of residue " << AtomResidueName[1][i] << std::endl;
    8513           0 :         error ("missing LCPO parameters\n");
    8514             :       }
    8515             :     }
    8516             :   }
    8517             : 
    8518          16 :   if (AtomResidueName[0][0] == "N") {
    8519          16 :     LCPOparam[0][1] = 7.3511e-01;
    8520          16 :     LCPOparam[0][2] = -2.2116e-01;
    8521          16 :     LCPOparam[0][3] = -8.9148e-04;
    8522          16 :     LCPOparam[0][4] = 2.5230e-04;
    8523             :   }
    8524             : 
    8525          16 :   if (AtomResidueName[0][natoms-1] == "O") {
    8526           0 :     LCPOparam[natoms-1][1] = 8.8857e-01;
    8527           0 :     LCPOparam[natoms-1][2] = -3.3421e-01;
    8528           0 :     LCPOparam[natoms-1][3] = -1.8683e-03;
    8529           0 :     LCPOparam[natoms-1][4] = 4.9372e-04;
    8530             :   }
    8531          16 : }
    8532             : 
    8533           4 : void SAXS::resolution_function()
    8534             : {
    8535           4 :   const unsigned numq = q_list.size();
    8536             : 
    8537             :   // only OpenMP because numq might be smaller than the number of ranks
    8538           4 :   #pragma omp parallel for num_threads(OpenMP::getNumThreads())
    8539             :   for (unsigned i=0; i<numq; i++) {
    8540             :     double qi = q_list[i];
    8541             :     double dq = 6*sigma_res[i]/(Nj-1);
    8542             :     double sigma_sq = sigma_res[i]*sigma_res[i];
    8543             :     double qstart = qi - 3*sigma_res[i];
    8544             :     for (unsigned j=0; j<Nj; j++) {
    8545             :       double qj = qstart + j*dq;
    8546             :       double I0exp = i0e(qj*qi/sigma_sq);
    8547             : 
    8548             :       qj_list[i][j] = qj;
    8549             :       Rij[i][j] = (qj/sigma_sq)*std::exp(-0.5*(qj - qi)*(qj - qi)/sigma_sq)*I0exp;
    8550             :     }
    8551             :   }
    8552           4 : }
    8553             : 
    8554             : // i0e function from cephes
    8555             : // compute I0(x) * exp (-x), with I0 being the modified Bessel function
    8556             : // of first kind and zeroth order.
    8557         660 : inline double SAXS::i0e(double x)
    8558             : {
    8559             :   double y = 0.0;
    8560             : 
    8561         660 :   if (x < 0)
    8562           0 :     x = -x;
    8563         660 :   if (x <= 8.0) {
    8564           0 :     y = (x/2.0) - 2.0;
    8565           0 :     return chbevl(y, A);
    8566             :   }
    8567             : 
    8568         660 :   return chbevl(32.0/x - 2.0, B) / sqrt(x);
    8569             : }
    8570             : 
    8571         660 : double SAXS::chbevl(double x, const std::vector<double> &coeffs)
    8572             : {
    8573             :   double b0, b1, b2;
    8574         660 :   unsigned n = coeffs.size();
    8575             : 
    8576         660 :   b0 = coeffs[0];
    8577             :   b1 = 0.0;
    8578             :   b2 = 0.0;
    8579             : 
    8580       16500 :   for (unsigned i = 1; i < n; i++) {
    8581             :     b2 = b1;
    8582             :     b1 = b0;
    8583       15840 :     b0 = x * b1 - b2 + coeffs[i];
    8584             :   }
    8585         660 :   return 0.5 * (b0 - b2);
    8586             : }
    8587             : 
    8588      134310 : inline double SAXS::interpolation(std::vector<SplineCoeffs> &coeffs, double x)
    8589             : {
    8590             :   unsigned s = 0;
    8591     1002034 :   while ((x >= q_list[s+1]) && (s+1 < q_list.size()-1)) s++;
    8592             : 
    8593      134310 :   double dx = x - coeffs[s].x;
    8594      134310 :   return coeffs[s].a + coeffs[s].b*dx + coeffs[s].c*dx*dx + coeffs[s].d*dx*dx*dx;
    8595             : }
    8596             : 
    8597             : // natural bc cubic spline implementation from the Wikipedia algorithm
    8598             : // modified from https://stackoverflow.com/a/19216702/3254658
    8599         814 : std::vector<SAXS::SplineCoeffs> SAXS::spline_coeffs(std::vector<double> &x, std::vector<double> &y)
    8600             : {
    8601         814 :   unsigned n = x.size()-1;
    8602             :   std::vector<double> a;
    8603         814 :   a.insert(a.begin(), y.begin(), y.end());
    8604         814 :   std::vector<double> b(n);
    8605         814 :   std::vector<double> d(n);
    8606             :   std::vector<double> h;
    8607             : 
    8608       12210 :   for(unsigned i=0; i<n; i++)
    8609       11396 :     h.push_back(x[i+1]-x[i]);
    8610             : 
    8611             :   std::vector<double> alpha;
    8612         814 :   alpha.push_back(0);
    8613       11396 :   for(unsigned i=1; i<n; i++)
    8614       10582 :     alpha.push_back( 3*(a[i+1]-a[i])/h[i] - 3*(a[i]-a[i-1])/h[i-1]  );
    8615             : 
    8616         814 :   std::vector<double> c(n+1);
    8617         814 :   std::vector<double> l(n+1);
    8618         814 :   std::vector<double> mu(n+1);
    8619         814 :   std::vector<double> z(n+1);
    8620         814 :   l[0] = 1;
    8621         814 :   mu[0] = 0;
    8622         814 :   z[0] = 0;
    8623             : 
    8624       11396 :   for(unsigned i=1; i<n; i++) {
    8625       10582 :     l[i] = 2 *(x[i+1]-x[i-1])-h[i-1]*mu[i-1];
    8626       10582 :     mu[i] = h[i]/l[i];
    8627       10582 :     z[i] = (alpha[i]-h[i-1]*z[i-1])/l[i];
    8628             :   }
    8629             : 
    8630         814 :   l[n] = 1;
    8631         814 :   z[n] = 0;
    8632         814 :   c[n] = 0;
    8633             : 
    8634       12210 :   for(int j=n-1; j>=0; j--) {
    8635       11396 :     c[j] = z[j] - mu[j] * c[j+1];
    8636       11396 :     b[j] = (a[j+1]-a[j])/h[j]-h[j]*(c[j+1]+2*c[j])/3;
    8637       11396 :     d[j] = (c[j+1]-c[j])/3/h[j];
    8638             :   }
    8639             : 
    8640         814 :   std::vector<SplineCoeffs> output_set(n);
    8641       12210 :   for(unsigned i=0; i<n; i++) {
    8642       11396 :     output_set[i].a = a[i];
    8643       11396 :     output_set[i].b = b[i];
    8644       11396 :     output_set[i].c = c[i];
    8645       11396 :     output_set[i].d = d[i];
    8646       11396 :     output_set[i].x = x[i];
    8647             :   }
    8648             : 
    8649         814 :   return output_set;
    8650             : }
    8651             : 
    8652             : 
    8653             : }//namespace isdb
    8654             : }//namespace PLMD

Generated by: LCOV version 1.16