LCOV - code coverage report
Current view: top level - isdb - SAXS.cpp (source / functions) Hit Total Coverage
Test: plumed test coverage Lines: 5305 6973 76.1 %
Date: 2025-03-25 09:33:27 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             : private:
     246             :   enum { H, C, N, O, P, S, NTT };
     247             :   enum { ALA_BB, ARG_BB, ARG_SC1, ARG_SC2, ASN_BB, ASN_SC1, ASP_BB, ASP_SC1, CYS_BB, CYS_SC1,
     248             :          GLN_BB, GLN_SC1, GLU_BB, GLU_SC1, GLY_BB, HIS_BB, HIS_SC1, HIS_SC2, HIS_SC3, ILE_BB,
     249             :          ILE_SC1, LEU_BB, LEU_SC1, LYS_BB, LYS_SC1, LYS_SC2, MET_BB, MET_SC1, PHE_BB, PHE_SC1,
     250             :          PHE_SC2, PHE_SC3, PRO_BB, PRO_SC1, SER_BB, SER_SC1, THR_BB, THR_SC1, TRP_BB, TRP_SC1,
     251             :          TRP_SC2, TRP_SC3, TRP_SC4, TYR_BB, TYR_SC1, TYR_SC2, TYR_SC3, VAL_BB, VAL_SC1, A_BB1,
     252             :          A_BB2, A_BB3, A_SC1, A_SC2, A_SC3, A_SC4, A_3TE, A_5TE, A_TE3, A_TE5, C_BB1, C_BB2,
     253             :          C_BB3, C_SC1, C_SC2, C_SC3, C_3TE, C_5TE, C_TE3, C_TE5, G_BB1, G_BB2, G_BB3, G_SC1,
     254             :          G_SC2, G_SC3, G_SC4, G_3TE, G_5TE, G_TE3, G_TE5, U_BB1, U_BB2, U_BB3, U_SC1, U_SC2,
     255             :          U_SC3, U_3TE, U_5TE, U_TE3, U_TE5, DA_BB1, DA_BB2, DA_BB3, DA_SC1, DA_SC2, DA_SC3,
     256             :          DA_SC4, DA_3TE, DA_5TE, DA_TE3, DA_TE5, DC_BB1, DC_BB2, DC_BB3, DC_SC1, DC_SC2, DC_SC3,
     257             :          DC_3TE, DC_5TE, DC_TE3, DC_TE5, DG_BB1, DG_BB2, DG_BB3, DG_SC1, DG_SC2, DG_SC3, DG_SC4,
     258             :          DG_3TE, DG_5TE, DG_TE3, DG_TE5, DT_BB1, DT_BB2, DT_BB3, DT_SC1, DT_SC2, DT_SC3, DT_3TE,
     259             :          DT_5TE, DT_TE3, DT_TE5, NMARTINI
     260             :        };
     261             :   enum { TRP,
     262             :          TYR,
     263             :          PHE,
     264             :          HIS,
     265             :          HIP,
     266             :          ARG,
     267             :          LYS,
     268             :          CYS,
     269             :          CYX,
     270             :          ASP,
     271             :          GLU,
     272             :          ILE,
     273             :          LEU,
     274             :          MET,
     275             :          ASN,
     276             :          PRO,
     277             :          GLN,
     278             :          SER,
     279             :          THR,
     280             :          VAL,
     281             :          ALA,
     282             :          GLY,
     283             :          BB_PO2,
     284             :          BB_PO3,
     285             :          BB_DNA,
     286             :          BB_DNA_5,
     287             :          BB_DNA_3,
     288             :          BB_RNA,
     289             :          BB_RNA_5,
     290             :          BB_RNA_3,
     291             :          BASE_A,
     292             :          BASE_C,
     293             :          BASE_T,
     294             :          BASE_G,
     295             :          BASE_U,
     296             :          NONEBEAD
     297             :        };
     298             :   struct SplineCoeffs {
     299             :     double a;
     300             :     double b;
     301             :     double c;
     302             :     double d;
     303             :     double x;
     304             :   };
     305             :   bool saxs;
     306             :   bool absolute;
     307             :   bool pbc;
     308             :   bool serial;
     309             :   bool gpu;
     310             :   bool onebead;
     311             :   bool resolution;
     312             :   bool isFirstStep;
     313             :   int  deviceid;
     314             :   unsigned nres;
     315             :   std::vector<unsigned> atoi;
     316             :   std::vector<unsigned> atoms_per_bead;
     317             :   std::vector<double>   atoms_masses;
     318             :   std::vector<double>   q_list;
     319             :   std::vector<double>   FF_rank;
     320             :   std::vector<std::vector<double> > FF_value_vacuum;
     321             :   std::vector<std::vector<double> > FF_value_solv;
     322             :   std::vector<std::vector<double> > FF_value_mixed;
     323             :   std::vector<std::vector<double> > FF_value;
     324             :   std::vector<std::vector<float> >  FFf_value;
     325             :   // SANS:
     326             :   std::vector<std::vector<double> > FF_value_vacuum_H;
     327             :   std::vector<std::vector<double> > FF_value_solv_H;
     328             :   std::vector<std::vector<double> > FF_value_mixed_H;
     329             :   std::vector<std::vector<double> > FF_value_vacuum_D;
     330             :   std::vector<std::vector<double> > FF_value_mixed_D;
     331             : 
     332             :   std::vector<std::vector<double> > LCPOparam;
     333             :   std::vector<unsigned> residue_atom;
     334             : 
     335             :   double rho, rho_corr, sasa_cutoff;
     336             :   double deuter_conc;
     337             :   unsigned solv_stride;
     338             :   std::vector<double> Iq0_vac;
     339             :   std::vector<double> Iq0_solv;
     340             :   std::vector<double> Iq0_mix;
     341             :   double Iq0;
     342             : 
     343             :   // SANS:
     344             :   std::vector<double> Iq0_vac_H;
     345             :   std::vector<double> Iq0_solv_H;
     346             :   std::vector<double> Iq0_mix_H;
     347             :   std::vector<double> Iq0_vac_D;
     348             :   std::vector<double> Iq0_mix_D;
     349             :   unsigned int Nj;
     350             :   std::vector<std::vector<double> > qj_list;
     351             :   std::vector<std::vector<double> > Rij;
     352             :   std::vector<double> sigma_res;
     353             : 
     354             :   // Chebyshev polynomial coefficients for i0e(x) used for resolution function
     355             :   // values taken from cephes library
     356             :   const std::vector<double> A = {
     357             :     -4.41534164647933937950E-18,
     358             :       3.33079451882223809783E-17,
     359             :       -2.43127984654795469359E-16,
     360             :       1.71539128555513303061E-15,
     361             :       -1.16853328779934516808E-14,
     362             :       7.67618549860493561688E-14,
     363             :       -4.85644678311192946090E-13,
     364             :       2.95505266312963983461E-12,
     365             :       -1.72682629144155570723E-11,
     366             :       9.67580903537323691224E-11,
     367             :       -5.18979560163526290666E-10,
     368             :       2.65982372468238665035E-9,
     369             :       -1.30002500998624804212E-8,
     370             :       6.04699502254191894932E-8,
     371             :       -2.67079385394061173391E-7,
     372             :       1.11738753912010371815E-6,
     373             :       -4.41673835845875056359E-6,
     374             :       1.64484480707288970893E-5,
     375             :       -5.75419501008210370398E-5,
     376             :       1.88502885095841655729E-4,
     377             :       -5.76375574538582365885E-4,
     378             :       1.63947561694133579842E-3,
     379             :       -4.32430999505057594430E-3,
     380             :       1.05464603945949983183E-2,
     381             :       -2.37374148058994688156E-2,
     382             :       4.93052842396707084878E-2,
     383             :       -9.49010970480476444210E-2,
     384             :       1.71620901522208775349E-1,
     385             :       -3.04682672343198398683E-1,
     386             :       6.76795274409476084995E-1
     387             :     };
     388             :   const std::vector<double> B = {
     389             :     -7.23318048787475395456E-18,
     390             :       -4.83050448594418207126E-18,
     391             :       4.46562142029675999901E-17,
     392             :       3.46122286769746109310E-17,
     393             :       -2.82762398051658348494E-16,
     394             :       -3.42548561967721913462E-16,
     395             :       1.77256013305652638360E-15,
     396             :       3.81168066935262242075E-15,
     397             :       -9.55484669882830764870E-15,
     398             :       -4.15056934728722208663E-14,
     399             :       1.54008621752140982691E-14,
     400             :       3.85277838274214270114E-13,
     401             :       7.18012445138366623367E-13,
     402             :       -1.79417853150680611778E-12,
     403             :       -1.32158118404477131188E-11,
     404             :       -3.14991652796324136454E-11,
     405             :       1.18891471078464383424E-11,
     406             :       4.94060238822496958910E-10,
     407             :       3.39623202570838634515E-9,
     408             :       2.26666899049817806459E-8,
     409             :       2.04891858946906374183E-7,
     410             :       2.89137052083475648297E-6,
     411             :       6.88975834691682398426E-5,
     412             :       3.36911647825569408990E-3,
     413             :       8.04490411014108831608E-1
     414             :     };
     415             : 
     416             :   void calculate_gpu(std::vector<Vector> &pos, std::vector<Vector> &deriv);
     417             :   void calculate_cpu(std::vector<Vector> &pos, std::vector<Vector> &deriv);
     418             :   void getMartiniFFparam(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &parameter);
     419             :   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);
     420             :   unsigned getOnebeadMapping(const PDB &pdb, const std::vector<AtomNumber> &atoms);
     421             :   double calculateAFF(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double rho);
     422             :   std::map<std::string, std::vector<double> > setupLCPOparam();
     423             :   void readLCPOparam(const std::vector<std::vector<std::string> > &AtomResidueName, unsigned natoms);
     424             :   void calcNlist(std::vector<std::vector<int> > &Nlist);
     425             :   void sasa_calculate(std::vector<bool> &solv_res);
     426             :   // SANS:
     427             :   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);
     428             :   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);
     429             :   double calculateAFFsans(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double deuter_conc);
     430             :   void resolution_function();
     431             :   std::vector<SplineCoeffs> spline_coeffs(std::vector<double> &x, std::vector<double> &y);
     432             :   inline double interpolation(std::vector<SplineCoeffs> &coeffs, double x);
     433             :   inline double i0e(double x);
     434             :   double chbevl(double x, const std::vector<double> &coeffs);
     435             : 
     436             : public:
     437             :   static void registerKeywords( Keywords& keys );
     438             :   explicit SAXS(const ActionOptions&);
     439             :   void calculate() override;
     440             :   void update() override;
     441             : };
     442             : 
     443             : PLUMED_REGISTER_ACTION(SAXS,"SAXS")
     444             : PLUMED_REGISTER_ACTION(SAXS,"SANS")
     445             : 
     446          48 : void SAXS::registerKeywords(Keywords& keys) {
     447          48 :   MetainferenceBase::registerKeywords(keys);
     448          48 :   keys.addFlag("NOPBC",false,"Ignore the periodic boundary conditions when calculating distances");
     449          48 :   keys.addFlag("SERIAL",false,"Perform the calculation in serial - for debug purpose");
     450          48 :   keys.add("compulsory","DEVICEID","-1","Identifier of the GPU to be used");
     451          48 :   keys.addFlag("GPU",false,"Calculate SAXS using ARRAYFIRE on an accelerator device");
     452          48 :   keys.addFlag("ABSOLUTE",false,"Absolute intensity: the intensities for each q-value are not normalised for the intensity at q=0.");
     453          48 :   keys.addFlag("ATOMISTIC",false,"Calculate SAXS for an atomistic model");
     454          48 :   keys.addFlag("MARTINI",false,"Calculate SAXS for a Martini model");
     455          48 :   keys.addFlag("ONEBEAD",false,"calculate SAXS for a single bead model");
     456          48 :   keys.add("compulsory","TEMPLATE","template.pdb","A PDB file is required for ONEBEAD mapping");
     457          48 :   keys.add("atoms","ATOMS","The atoms to be included in the calculation, e.g. the whole protein");
     458          48 :   keys.add("numbered","QVALUE","Selected scattering lengths in inverse angstroms are given as QVALUE1, QVALUE2, ...");
     459          48 :   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");
     460          48 :   keys.add("optional","PARAMETERSFILE","Read the PARAMETERS from a file");
     461          48 :   keys.add("compulsory","DEUTER_CONC","0.","Fraction of deuterated solvent");
     462          48 :   keys.add("compulsory","SOLVDENS","0.334","Density of the solvent to be used for the correction of atomistic form factors");
     463          48 :   keys.add("compulsory","SOLVATION_CORRECTION","0.0","Solvation layer electron density correction (ONEBEAD only)");
     464          48 :   keys.add("compulsory","SASA_CUTOFF","1.0","SASA value to consider a residue as exposed to the solvent (ONEBEAD only)");
     465          48 :   keys.add("numbered","EXPINT","Add an experimental value for each q value");
     466          48 :   keys.add("numbered","SIGMARES","Variance of Gaussian distribution describing the deviation in the scattering angle for each q value");
     467          48 :   keys.add("compulsory","N","10","Number of points in the resolution function integral");
     468          48 :   keys.add("compulsory","SOLVATION_STRIDE","10","Number of steps between every new residues solvation estimation via LCPO (ONEBEAD only)");
     469          48 :   keys.add("compulsory","SCALE_EXPINT","1.0","Scaling value for experimental data normalization");
     470          96 :   keys.addOutputComponent("q","default","scalar","The # SAXS of q");
     471          96 :   keys.addOutputComponent("exp","EXPINT","scalar","The # experimental intensity");
     472          48 : }
     473             : 
     474          44 : SAXS::SAXS(const ActionOptions&ao):
     475             :   PLUMED_METAINF_INIT(ao),
     476          44 :   saxs(true),
     477          44 :   absolute(false),
     478          44 :   pbc(true),
     479          44 :   serial(false),
     480          44 :   gpu(false),
     481          44 :   onebead(false),
     482          44 :   isFirstStep(true),
     483          44 :   deviceid(-1) {
     484          44 :   if( getName().find("SAXS")!=std::string::npos) {
     485          30 :     saxs=true;
     486          14 :   } else if( getName().find("SANS")!=std::string::npos) {
     487          14 :     saxs=false;
     488             :   }
     489             : 
     490             :   std::vector<AtomNumber> atoms;
     491          88 :   parseAtomList("ATOMS",atoms);
     492          44 :   unsigned size = atoms.size();
     493             : 
     494          44 :   parseFlag("SERIAL",serial);
     495             : 
     496          44 :   bool nopbc=!pbc;
     497          44 :   parseFlag("NOPBC",nopbc);
     498          44 :   pbc=!nopbc;
     499          44 :   if(pbc) {
     500          16 :     log.printf("  using periodic boundary conditions\n");
     501             :   } else {
     502          28 :     log.printf("  without periodic boundary conditions\n");
     503             :   }
     504             : 
     505          44 :   parseFlag("GPU",gpu);
     506             : #ifndef  __PLUMED_HAS_ARRAYFIRE
     507          44 :   if(gpu) {
     508           0 :     error("To use the GPU mode PLUMED must be compiled with ARRAYFIRE");
     509             :   }
     510             : #endif
     511             : 
     512          44 :   parse("DEVICEID",deviceid);
     513             : #ifdef  __PLUMED_HAS_ARRAYFIRE
     514             :   if(gpu&&comm.Get_rank()==0) {
     515             :     // if not set try to check the one set by the API
     516             :     if(deviceid==-1) {
     517             :       deviceid=plumed.getGpuDeviceId();
     518             :     }
     519             :     // if still not set use 0
     520             :     if(deviceid==-1) {
     521             :       deviceid=0;
     522             :     }
     523             : #ifdef  __PLUMED_HAS_ARRAYFIRE_CUDA
     524             :     af::setDevice(afcu::getNativeId(deviceid));
     525             : #elif   __PLUMED_HAS_ARRAYFIRE_OCL
     526             :     af::setDevice(afcl::getNativeId(deviceid));
     527             : #else
     528             :     af::setDevice(deviceid);
     529             : #endif
     530             :     af::info();
     531             :   }
     532             : #endif
     533             : 
     534          44 :   bool atomistic=false;
     535          44 :   parseFlag("ATOMISTIC",atomistic);
     536          44 :   if(atomistic) {
     537          12 :     log.printf("  using ATOMISTIC form factors\n");
     538             :   }
     539          44 :   bool martini=false;
     540          44 :   parseFlag("MARTINI",martini);
     541          44 :   if(martini) {
     542           8 :     log.printf("  using MARTINI form factors\n");
     543             :   }
     544          44 :   onebead=false;
     545          44 :   parseFlag("ONEBEAD",onebead);
     546          44 :   if(onebead) {
     547          16 :     log.printf("  using ONEBEAD form factors\n");
     548             :   }
     549             :   bool fromfile=false;
     550             :   std::string parametersfile;
     551          88 :   parse("PARAMETERSFILE",parametersfile);
     552          44 :   if (parametersfile.length() != 0) {
     553             :     fromfile=true;
     554             :   }
     555             :   if(fromfile) {
     556           4 :     log.printf("  will read form factors from file\n");
     557             :   }
     558          44 :   parseFlag("ABSOLUTE",absolute);
     559             : 
     560          44 :   if(martini&&atomistic) {
     561           0 :     error("You cannot use MARTINI and ATOMISTIC at the same time");
     562             :   }
     563          44 :   if(martini&&onebead) {
     564           0 :     error("You cannot use MARTINI and ONEBEAD at the same time");
     565             :   }
     566          44 :   if(onebead&&atomistic) {
     567           0 :     error("You cannot use ONEBEAD and ATOMISTIC at the same time");
     568             :   }
     569          44 :   if((martini)&&(!saxs)) {
     570           0 :     error("MARTINI cannot be used with SANS");
     571             :   }
     572          44 :   if((fromfile)&&((atomistic)||(martini)||(onebead))) {
     573           0 :     error("You cannot read parameters from file and use ATOMISTIC/MARTINI/ONEBEAD");
     574             :   }
     575             : 
     576             :   unsigned ntarget=0;
     577             :   for(unsigned i=0;; ++i) {
     578             :     double t_list;
     579         976 :     if( !parseNumbered( "QVALUE", i+1, t_list) ) {
     580             :       break;
     581             :     }
     582         444 :     if(t_list<=0.) {
     583           0 :       error("QVALUE cannot be less or equal to zero!\n");
     584             :     }
     585         444 :     if(onebead&&t_list>0.3) {
     586           0 :       error("ONEBEAD mapping QVALUE must be smaller or equal to 0.3");
     587             :     }
     588         444 :     q_list.push_back(t_list);
     589         444 :     ntarget++;
     590         444 :   }
     591             :   const unsigned numq = ntarget;
     592             : 
     593         488 :   for(unsigned i=0; i<numq; ++i) {
     594         444 :     if(q_list[i]==0.) {
     595           0 :       error("it is not possible to set q=0\n");
     596             :     }
     597         444 :     if(i>0&&q_list[i]<q_list[i-1]) {
     598           0 :       error("QVALUE must be in ascending order");
     599             :     }
     600         444 :     log.printf("  my q: %lf \n",q_list[i]);
     601             :   }
     602             : 
     603          44 :   rho = 0.334;
     604          44 :   parse("SOLVDENS", rho);
     605          44 :   log.printf("  Solvent density: %lf\n", rho);
     606             : 
     607          44 :   double scale_expint=1.;
     608          44 :   parse("SCALE_EXPINT",scale_expint);
     609             : 
     610          44 :   if((!atomistic&&absolute)||(absolute&&scale_expint!=1)) {
     611           0 :     error("ABSOLUTE can be used only combined with ATOMISTIC without SCALE_EXPINT");
     612             :   }
     613          44 :   if(atomistic) {
     614          24 :     log.printf("  Scale for intensities: %s\n", absolute ? "absolute" : "normalised");
     615             :   }
     616             : 
     617          44 :   double correction = 0.00;
     618          44 :   parse("SOLVATION_CORRECTION", correction);
     619          44 :   rho_corr=rho-correction;
     620          44 :   if(onebead) {
     621          16 :     log.printf("  Solvation density contribution: %lf\n", correction);
     622             :   }
     623          44 :   if((atomistic||martini||fromfile)&&(rho_corr!=rho)) {
     624           0 :     log.printf("  Solvation density contribution is taken into account in ONEBEAD only\n");
     625             :   }
     626             : 
     627          44 :   solv_stride = 10;
     628          44 :   parse("SOLVATION_STRIDE", solv_stride);
     629          44 :   if(solv_stride < 1.) {
     630           0 :     error("SOLVATION_STRIDE must be greater than 0");
     631             :   }
     632          44 :   if(onebead&&(rho_corr!=rho)) {
     633          12 :     log.printf("  SASA calculation stride: %u\n", solv_stride);
     634             :   }
     635             : 
     636          44 :   sasa_cutoff = 1.0;
     637          44 :   parse("SASA_CUTOFF", sasa_cutoff);
     638          44 :   if(sasa_cutoff <= 0.) {
     639           0 :     error("SASA_CUTOFF must be greater than 0");
     640             :   }
     641             : 
     642          44 :   deuter_conc = 0.;
     643          44 :   parse("DEUTER_CONC", deuter_conc);
     644          44 :   if ((deuter_conc)&&(fromfile)) {
     645           0 :     error("DEUTER_CONC cannot be used with PARAMETERSFILE");
     646             :   }
     647          44 :   if(deuter_conc < 0. || deuter_conc > 1.) {
     648           0 :     error("DEUTER_CONC must be in 0-1 range");
     649             :   }
     650          44 :   if ((atomistic||onebead)&&(!saxs)) {
     651          10 :     log.printf("  Solvent deuterium fraction: %lf/1.000000\n", deuter_conc);
     652             :   }
     653             : 
     654          44 :   PDB pdb;
     655          44 :   if(onebead) {
     656             :     std::string template_name;
     657          16 :     parse("TEMPLATE",template_name);
     658          16 :     log.printf("  Template for ONEBEAD mapping conversion: %s\n", template_name.c_str());
     659          16 :     if( !pdb.read(template_name,usingNaturalUnits(),1.) ) {
     660           0 :       plumed_merror("missing input file " + template_name);
     661             :     }
     662             :   }
     663             : 
     664             :   // preliminary mapping for onebead representation
     665          44 :   if(onebead) {
     666          16 :     LCPOparam.resize(size);
     667          16 :     nres = getOnebeadMapping(pdb, atoms);
     668          16 :     if(saxs) {
     669          10 :       Iq0_vac.resize(nres);
     670          10 :       Iq0_solv.resize(nres);
     671          10 :       Iq0_mix.resize(nres);
     672             :     } else { // SANS
     673           6 :       Iq0_vac_H.resize(nres);
     674           6 :       Iq0_solv_H.resize(nres);
     675           6 :       Iq0_mix_H.resize(nres);
     676           6 :       Iq0_vac_D.resize(nres);
     677           6 :       Iq0_mix_D.resize(nres);
     678             :     }
     679          16 :     atoi.resize(nres);
     680             :   } else {
     681          28 :     atoi.resize(size);
     682             :   }
     683             : 
     684          44 :   Iq0=0;
     685             :   std::vector<std::vector<long double> > FF_tmp;
     686             :   std::vector<std::vector<long double> > FF_tmp_vac;
     687             :   std::vector<std::vector<long double> > FF_tmp_mix;
     688             :   std::vector<std::vector<long double> > FF_tmp_solv;
     689             :   // SANS
     690             :   std::vector<std::vector<long double> > FF_tmp_vac_H;
     691             :   std::vector<std::vector<long double> > FF_tmp_mix_H;
     692             :   std::vector<std::vector<long double> > FF_tmp_solv_H;
     693             :   std::vector<std::vector<long double> > FF_tmp_vac_D;
     694             :   std::vector<std::vector<long double> > FF_tmp_mix_D;
     695             :   std::vector<std::vector<long double> > parameter_H;
     696             :   std::vector<std::vector<long double> > parameter_D;
     697             : 
     698          44 :   if(!atomistic&&!martini&&!onebead&&!fromfile) { // read PARAMETERS from PLUMED file
     699           4 :     if (saxs) {
     700             :       // read in parameter std::vector
     701             :       std::vector<std::vector<long double> > parameter;
     702           4 :       parameter.resize(size);
     703             :       ntarget=0;
     704          36 :       for(unsigned i=0; i<size; ++i) {
     705          64 :         if( !parseNumberedVector( "PARAMETERS", i+1, parameter[i]) ) {
     706             :           break;
     707             :         }
     708          32 :         ntarget++;
     709             :       }
     710           4 :       if( ntarget!=size ) {
     711           0 :         error("found wrong number of parameter std::vectors");
     712             :       }
     713           4 :       FF_tmp.resize(numq,std::vector<long double>(size));
     714          36 :       for(unsigned i=0; i<size; ++i) {
     715          32 :         atoi[i]=i;
     716         128 :         for(unsigned k=0; k<numq; ++k) {
     717         480 :           for(unsigned j=0; j<parameter[i].size(); ++j) {
     718         384 :             FF_tmp[k][i]+= parameter[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     719             :           }
     720             :         }
     721             :       }
     722          36 :       for(unsigned i=0; i<size; ++i) {
     723          32 :         Iq0+=parameter[i][0];
     724             :       }
     725           4 :       Iq0 *= Iq0;
     726           4 :     } else { // SANS
     727             :       std::vector<long double> parameter;
     728           0 :       parameter.resize(size);
     729             :       ntarget=0;
     730           0 :       for(unsigned i=0; i<size; ++i) {
     731           0 :         if( !parseNumbered( "PARAMETERS", i+1, parameter[i]) ) {
     732             :           break;
     733             :         }
     734           0 :         ntarget++;
     735             :       }
     736           0 :       if( ntarget!=size ) {
     737           0 :         error("found wrong number of parameter std::vectors");
     738             :       }
     739           0 :       FF_tmp.resize(numq,std::vector<long double>(size));
     740           0 :       for(unsigned i=0; i<size; ++i) {
     741           0 :         atoi[i]=i;
     742           0 :         for(unsigned k=0; k<numq; ++k) {
     743           0 :           FF_tmp[k][i]+= parameter[i];
     744             :         }
     745             :       }
     746           0 :       for(unsigned i=0; i<size; ++i) {
     747           0 :         Iq0+=parameter[i];
     748             :       }
     749           0 :       Iq0 *= Iq0;
     750             :     }
     751          40 :   } else if (fromfile) { // read PARAMETERS from user-provided file
     752           4 :     log.printf("  Reading PARAMETERS from file: %s\n", parametersfile.c_str());
     753           4 :     if (saxs) {
     754           0 :       FF_tmp.resize(numq,std::vector<long double>(size));
     755             :       std::vector<std::vector<long double> > parameter;
     756           0 :       parameter.resize(size);
     757             : 
     758           0 :       IFile ifile;
     759           0 :       ifile.open(parametersfile);
     760             :       std::string line;
     761             : 
     762             :       ntarget=0;
     763           0 :       while(ifile.getline(line)) {
     764           0 :         Tools::ltrim(line);
     765           0 :         Tools::trimComments(line);
     766           0 :         if (line.empty()) {
     767           0 :           continue;
     768             :         }
     769           0 :         if (ntarget > size) {
     770           0 :           error("PARAMETERSFILE has more PARAMETERS than there are scattering centers");
     771             :         }
     772             :         std::string num;
     773           0 :         Tools::convert(ntarget+1,num);
     774           0 :         std::vector<std::string> lineread{line};
     775           0 :         if (!Tools::parseVector(lineread, "PARAMETERS"+num, parameter[ntarget], -1)) {
     776           0 :           error("Missing PARAMETERS or PARAMETERS not sorted");
     777             :         }
     778             :         ntarget++;
     779           0 :       }
     780           0 :       if( ntarget!=size ) {
     781           0 :         error("found wrong number of PARAMETERS in file");
     782             :       }
     783             : 
     784           0 :       for(unsigned i=0; i<size; ++i) {
     785           0 :         atoi[i]=i;
     786           0 :         for(unsigned k=0; k<numq; ++k) {
     787           0 :           for(unsigned j=0; j<parameter[i].size(); ++j) {
     788           0 :             FF_tmp[k][i]+= parameter[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     789             :           }
     790             :         }
     791             :       }
     792           0 :       for(unsigned i=0; i<size; ++i) {
     793           0 :         Iq0+=parameter[i][0];
     794             :       }
     795           0 :       Iq0 *= Iq0;
     796           0 :     } else { // SANS
     797           4 :       FF_tmp.resize(numq,std::vector<long double>(size));
     798             : 
     799           4 :       IFile ifile;
     800           4 :       ifile.open(parametersfile);
     801             :       std::string line;
     802             : 
     803             :       ntarget=0;
     804        1084 :       while(ifile.getline(line)) {
     805        1080 :         Tools::ltrim(line);
     806        1080 :         Tools::trimComments(line);
     807        1080 :         if (line.empty()) {
     808           0 :           continue;
     809             :         }
     810        1080 :         if (ntarget > size) {
     811           0 :           error("PARAMETERSFILE has more PARAMETERS than there are scattering centers");
     812             :         }
     813             :         std::string num;
     814        1080 :         Tools::convert(ntarget+1,num);
     815        2160 :         std::vector<std::string> lineread{line};
     816             :         long double scatlen;
     817        1080 :         atoi[ntarget]=ntarget;
     818        2160 :         if (!Tools::parse(lineread, "PARAMETERS"+num, scatlen, -1)) {
     819           0 :           error("Missing PARAMETERS or PARAMETERS not sorted");
     820             :         }
     821       17280 :         for(unsigned k=0; k<numq; ++k) {
     822       16200 :           FF_tmp[k][ntarget] = scatlen;
     823             :         }
     824             :         ntarget++;
     825        1080 :       }
     826           4 :       if( ntarget!=size ) {
     827           0 :         error("found wrong number of PARAMETERS in file");
     828             :       }
     829        1084 :       for(unsigned i=0; i<size; ++i) {
     830        1080 :         Iq0+=FF_tmp[0][i];
     831             :       }
     832           4 :       Iq0 *= Iq0;
     833           4 :     }
     834          36 :   } else if(onebead) {
     835          16 :     if(saxs) {
     836             :       // read built-in ONEBEAD parameters
     837          10 :       FF_tmp_vac.resize(numq,std::vector<long double>(NONEBEAD));
     838          10 :       FF_tmp_mix.resize(numq,std::vector<long double>(NONEBEAD));
     839          10 :       FF_tmp_solv.resize(numq,std::vector<long double>(NONEBEAD));
     840          10 :       std::vector<std::vector<long double> > parameter_vac(NONEBEAD);
     841          10 :       std::vector<std::vector<long double> > parameter_mix(NONEBEAD);
     842          10 :       std::vector<std::vector<long double> > parameter_solv(NONEBEAD);
     843          10 :       getOnebeadparam(pdb, atoms, parameter_vac, parameter_mix, parameter_solv, residue_atom);
     844         360 :       for(unsigned i=0; i<NONEBEAD; ++i) {
     845        3500 :         for(unsigned k=0; k<numq; ++k) {
     846       25200 :           for(unsigned j=0; j<parameter_vac[i].size(); ++j) {
     847       22050 :             FF_tmp_vac[k][i]+= parameter_vac[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     848             :           }
     849       25200 :           for(unsigned j=0; j<parameter_mix[i].size(); ++j) {
     850       22050 :             FF_tmp_mix[k][i]+= parameter_mix[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     851             :           }
     852       25200 :           for(unsigned j=0; j<parameter_solv[i].size(); ++j) {
     853       22050 :             FF_tmp_solv[k][i]+= parameter_solv[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     854             :           }
     855             :         }
     856             :       }
     857        2166 :       for(unsigned i=0; i<nres; ++i) {
     858        2156 :         Iq0_vac[i]=parameter_vac[atoi[i]][0];
     859        2156 :         Iq0_mix[i]=parameter_mix[atoi[i]][0];
     860        2156 :         Iq0_solv[i]=parameter_solv[atoi[i]][0];
     861             :       }
     862          10 :     } else { // SANS
     863             :       // read built-in ONEBEAD parameters
     864           6 :       FF_tmp_vac_H.resize(numq,std::vector<long double>(NONEBEAD));
     865           6 :       FF_tmp_mix_H.resize(numq,std::vector<long double>(NONEBEAD));
     866           6 :       FF_tmp_solv_H.resize(numq,std::vector<long double>(NONEBEAD));
     867           6 :       FF_tmp_vac_D.resize(numq,std::vector<long double>(NONEBEAD));
     868           6 :       FF_tmp_mix_D.resize(numq,std::vector<long double>(NONEBEAD));
     869           6 :       std::vector<std::vector<long double> > parameter_vac_H(NONEBEAD);
     870           6 :       std::vector<std::vector<long double> > parameter_mix_H(NONEBEAD);
     871           6 :       std::vector<std::vector<long double> > parameter_solv_H(NONEBEAD);
     872           6 :       std::vector<std::vector<long double> > parameter_vac_D(NONEBEAD);
     873           6 :       std::vector<std::vector<long double> > parameter_mix_D(NONEBEAD);
     874           6 :       getOnebeadparam_sansH(pdb, atoms, parameter_vac_H, parameter_mix_H, parameter_solv_H);
     875           6 :       getOnebeadparam_sansD(pdb, atoms, parameter_vac_D, parameter_mix_D);
     876         216 :       for(unsigned i=0; i<NONEBEAD; ++i) {
     877        2100 :         for(unsigned k=0; k<numq; ++k) {
     878       15120 :           for(unsigned j=0; j<parameter_vac_H[i].size(); ++j) { // same number of parameters
     879       13230 :             FF_tmp_vac_H[k][i]+= parameter_vac_H[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     880       13230 :             FF_tmp_vac_D[k][i]+= parameter_vac_D[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     881             :           }
     882       15120 :           for(unsigned j=0; j<parameter_mix_H[i].size(); ++j) {
     883       13230 :             FF_tmp_mix_H[k][i]+= parameter_mix_H[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     884       13230 :             FF_tmp_mix_D[k][i]+= parameter_mix_D[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     885             :           }
     886       15120 :           for(unsigned j=0; j<parameter_solv_H[i].size(); ++j) {
     887       13230 :             FF_tmp_solv_H[k][i]+= parameter_solv_H[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     888             :           }
     889             :         }
     890             :       }
     891        1316 :       for(unsigned i=0; i<nres; ++i) {
     892        1310 :         Iq0_vac_H[i]=parameter_vac_H[atoi[i]][0];
     893        1310 :         Iq0_mix_H[i]=parameter_mix_H[atoi[i]][0];
     894        1310 :         Iq0_solv_H[i]=parameter_solv_H[atoi[i]][0];
     895        1310 :         Iq0_vac_D[i]=parameter_vac_D[atoi[i]][0];
     896        1310 :         Iq0_mix_D[i]=parameter_mix_D[atoi[i]][0];
     897             :       }
     898           6 :     }
     899          20 :   } else if(martini) {
     900             :     // read built-in MARTINI parameters
     901          16 :     FF_tmp.resize(numq,std::vector<long double>(NMARTINI));
     902             :     std::vector<std::vector<long double> > parameter;
     903           8 :     parameter.resize(NMARTINI);
     904           8 :     getMartiniFFparam(atoms, parameter);
     905        1072 :     for(unsigned i=0; i<NMARTINI; ++i) {
     906       17024 :       for(unsigned k=0; k<numq; ++k) {
     907      127680 :         for(unsigned j=0; j<parameter[i].size(); ++j) {
     908      111720 :           FF_tmp[k][i]+= parameter[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     909             :         }
     910             :       }
     911             :     }
     912        8400 :     for(unsigned i=0; i<size; ++i) {
     913        8392 :       Iq0+=parameter[atoi[i]][0];
     914             :     }
     915           8 :     Iq0 *= Iq0;
     916          20 :   } else if(atomistic) {
     917          12 :     FF_tmp.resize(numq,std::vector<long double>(NTT));
     918          12 :     if(saxs) {
     919           8 :       Iq0=calculateAFF(atoms, FF_tmp, rho);
     920             :     } else {
     921           4 :       Iq0=calculateAFFsans(atoms, FF_tmp, deuter_conc);
     922             :     }
     923          12 :     Iq0 *= Iq0;
     924             :   }
     925             : 
     926             : 
     927             :   std::vector<double> expint;
     928          44 :   expint.resize( numq );
     929             :   ntarget=0;
     930         236 :   for(unsigned i=0; i<numq; ++i) {
     931         440 :     if( !parseNumbered( "EXPINT", i+1, expint[i] ) ) {
     932             :       break;
     933             :     }
     934         192 :     ntarget++;
     935             :   }
     936         236 :   std::transform(expint.begin(), expint.begin() + ntarget, expint.begin(), [scale_expint](double x) {
     937         192 :     return x / scale_expint;
     938             :   });
     939             :   bool exp=false;
     940          44 :   if(ntarget!=numq && ntarget!=0) {
     941           0 :     error("found wrong number of EXPINT values");
     942             :   }
     943          44 :   if(ntarget==numq) {
     944             :     exp=true;
     945             :   }
     946          44 :   if(getDoScore()&&!exp) {
     947           0 :     error("with DOSCORE you need to set the EXPINT values");
     948             :   }
     949             : 
     950          44 :   sigma_res.resize( numq );
     951          44 :   resolution=false;
     952             :   ntarget=0;
     953         104 :   for(unsigned i=0; i<numq; ++i) {
     954         200 :     if( !parseNumbered( "SIGMARES", i+1, sigma_res[i] ) ) {
     955             :       break;
     956             :     }
     957          60 :     ntarget++;
     958             :   }
     959          44 :   if(ntarget!=numq && ntarget!=0) {
     960           0 :     error("found wrong number of SIGMARES values");
     961             :   }
     962          44 :   if(ntarget==numq) {
     963           4 :     resolution=true;
     964             :   }
     965             : 
     966          44 :   if(gpu && resolution) {
     967           0 :     error("Resolution function is not supported in GPUs");
     968             :   }
     969             : 
     970          44 :   Nj = 10;
     971          44 :   parse("N", Nj);
     972          44 :   if (Nj < 2) {
     973           0 :     error("N should be larger than 1");
     974             :   }
     975          44 :   if (resolution) {
     976           4 :     log.printf("  Resolution function with N: %d\n", Nj);
     977             :   }
     978             : 
     979          44 :   if(!gpu) {
     980          44 :     FF_rank.resize(numq);
     981             :     unsigned n_atom_types;
     982          44 :     if(onebead) {
     983          16 :       FF_value.resize(nres,std::vector<double>(numq));
     984             :       n_atom_types=NONEBEAD;
     985          16 :       if(saxs) {
     986          10 :         FF_value_vacuum.resize(n_atom_types,std::vector<double>(numq));
     987          10 :         FF_value_solv.resize(n_atom_types,std::vector<double>(numq));
     988          20 :         FF_value_mixed.resize(n_atom_types,std::vector<double>(numq));
     989             :       } else {
     990           6 :         FF_value_vacuum_H.resize(n_atom_types,std::vector<double>(numq));
     991           6 :         FF_value_solv_H.resize(n_atom_types,std::vector<double>(numq));
     992           6 :         FF_value_mixed_H.resize(n_atom_types,std::vector<double>(numq));
     993           6 :         FF_value_vacuum_D.resize(n_atom_types,std::vector<double>(numq));
     994          12 :         FF_value_mixed_D.resize(n_atom_types,std::vector<double>(numq));
     995             :       }
     996             :     } else {
     997          56 :       FF_value.resize(size,std::vector<double>(numq));
     998             :     }
     999         488 :     for(unsigned k=0; k<numq; ++k) {
    1000         444 :       if(!onebead) {
    1001      523104 :         for(unsigned i=0; i<size; ++i) {
    1002      522804 :           FF_value[i][k] = static_cast<double>(FF_tmp[k][atoi[i]])/(std::sqrt(Iq0));
    1003             :         }
    1004      523104 :         for(unsigned i=0; i<size; ++i) {
    1005      522804 :           FF_rank[k] += FF_value[i][k]*FF_value[i][k];
    1006             :         }
    1007             :       } else {
    1008         144 :         if(saxs) {
    1009        3240 :           for(unsigned i=0; i<n_atom_types; ++i) {
    1010        3150 :             FF_value_vacuum[i][k] = static_cast<double>(FF_tmp_vac[k][i]);
    1011        3150 :             FF_value_mixed[i][k] = static_cast<double>(FF_tmp_mix[k][i]);
    1012        3150 :             FF_value_solv[i][k] = static_cast<double>(FF_tmp_solv[k][i]);
    1013             :           }
    1014             :         } else { // SANS
    1015        1944 :           for(unsigned i=0; i<n_atom_types; ++i) {
    1016        1890 :             FF_value_vacuum_H[i][k] = static_cast<double>(FF_tmp_vac_H[k][i]);
    1017        1890 :             FF_value_mixed_H[i][k] = static_cast<double>(FF_tmp_mix_H[k][i]);
    1018        1890 :             FF_value_solv_H[i][k] = static_cast<double>(FF_tmp_solv_H[k][i]);
    1019        1890 :             FF_value_vacuum_D[i][k] = static_cast<double>(FF_tmp_vac_D[k][i]);
    1020        1890 :             FF_value_mixed_D[i][k] = static_cast<double>(FF_tmp_mix_D[k][i]);
    1021             :           }
    1022             :         }
    1023             :       }
    1024             :     }
    1025             :   } else {
    1026             :     unsigned n_atom_types;
    1027           0 :     if(onebead) {
    1028           0 :       FFf_value.resize(numq,std::vector<float>(nres));
    1029             :       n_atom_types=NONEBEAD;
    1030           0 :       if(saxs) {
    1031           0 :         FF_value_vacuum.resize(n_atom_types,std::vector<double>(numq));
    1032           0 :         FF_value_solv.resize(n_atom_types,std::vector<double>(numq));
    1033           0 :         FF_value_mixed.resize(n_atom_types,std::vector<double>(numq));
    1034             :       } else { // SANS
    1035           0 :         FF_value_vacuum_H.resize(n_atom_types,std::vector<double>(numq));
    1036           0 :         FF_value_solv_H.resize(n_atom_types,std::vector<double>(numq));
    1037           0 :         FF_value_mixed_H.resize(n_atom_types,std::vector<double>(numq));
    1038           0 :         FF_value_vacuum_D.resize(n_atom_types,std::vector<double>(numq));
    1039           0 :         FF_value_mixed_D.resize(n_atom_types,std::vector<double>(numq));
    1040             :       }
    1041             :     } else {
    1042           0 :       FFf_value.resize(numq,std::vector<float>(size));
    1043             :     }
    1044           0 :     for(unsigned k=0; k<numq; ++k) {
    1045           0 :       if(!onebead) {
    1046           0 :         for(unsigned i=0; i<size; ++i) {
    1047           0 :           FFf_value[k][i] = static_cast<float>(FF_tmp[k][atoi[i]])/(std::sqrt(Iq0));
    1048             :         }
    1049             :       } else {
    1050           0 :         if(saxs) {
    1051           0 :           for(unsigned i=0; i<n_atom_types; ++i) {
    1052           0 :             FF_value_vacuum[i][k] = static_cast<double>(FF_tmp_vac[k][i]);
    1053           0 :             FF_value_mixed[i][k] = static_cast<double>(FF_tmp_mix[k][i]);
    1054           0 :             FF_value_solv[i][k] = static_cast<double>(FF_tmp_solv[k][i]);
    1055             :           }
    1056             :         } else { // SANS
    1057           0 :           for(unsigned i=0; i<n_atom_types; ++i) {
    1058           0 :             FF_value_vacuum_H[i][k] = static_cast<double>(FF_tmp_vac_H[k][i]);
    1059           0 :             FF_value_mixed_H[i][k] = static_cast<double>(FF_tmp_mix_H[k][i]);
    1060           0 :             FF_value_solv_H[i][k] = static_cast<double>(FF_tmp_solv_H[k][i]);
    1061           0 :             FF_value_vacuum_D[i][k] = static_cast<double>(FF_tmp_vac_D[k][i]);
    1062           0 :             FF_value_mixed_D[i][k] = static_cast<double>(FF_tmp_mix_D[k][i]);
    1063             :           }
    1064             :         }
    1065             :       }
    1066             :     }
    1067             :   }
    1068             : 
    1069          44 :   if(!getDoScore()) {
    1070         408 :     for(unsigned i=0; i<numq; ++i) {
    1071             :       std::string num;
    1072         372 :       Tools::convert(i,num);
    1073         744 :       addComponentWithDerivatives("q-"+num);
    1074         744 :       componentIsNotPeriodic("q-"+num);
    1075             :     }
    1076          36 :     if(exp) {
    1077         128 :       for(unsigned i=0; i<numq; ++i) {
    1078             :         std::string num;
    1079         120 :         Tools::convert(i,num);
    1080         240 :         addComponent("exp-"+num);
    1081         120 :         componentIsNotPeriodic("exp-"+num);
    1082         120 :         Value* comp=getPntrToComponent("exp-"+num);
    1083         120 :         comp->set(expint[i]);
    1084             :       }
    1085             :     }
    1086             :   } else {
    1087          80 :     for(unsigned i=0; i<numq; ++i) {
    1088             :       std::string num;
    1089          72 :       Tools::convert(i,num);
    1090         144 :       addComponent("q-"+num);
    1091         144 :       componentIsNotPeriodic("q-"+num);
    1092             :     }
    1093          80 :     for(unsigned i=0; i<numq; ++i) {
    1094             :       std::string num;
    1095          72 :       Tools::convert(i,num);
    1096         144 :       addComponent("exp-"+num);
    1097          72 :       componentIsNotPeriodic("exp-"+num);
    1098          72 :       Value* comp=getPntrToComponent("exp-"+num);
    1099          72 :       comp->set(expint[i]);
    1100             :     }
    1101             :   }
    1102             : 
    1103             :   // convert units to nm^-1
    1104         488 :   for(unsigned i=0; i<numq; ++i) {
    1105         444 :     q_list[i]=q_list[i]*10.0;    // factor 10 to convert from A^-1 to nm^-1
    1106         444 :     if (resolution) {
    1107          60 :       sigma_res[i]=sigma_res[i]*10.0;
    1108             :     }
    1109             :   }
    1110             : 
    1111             :   // compute resolution function after converting units
    1112          44 :   if (resolution) {
    1113           4 :     qj_list.resize(numq, std::vector<double>(Nj));
    1114           4 :     Rij.resize(numq, std::vector<double>(Nj));
    1115             :     // compute Rij and qj_list
    1116           4 :     resolution_function();
    1117             :   }
    1118             : 
    1119          44 :   log<<"  Bibliography ";
    1120          44 :   if(onebead) {
    1121          32 :     log<<plumed.cite("Ballabio, Paissoni, Bollati, de Rosa, Capelli, Camilloni, J. Chem. Theory Comput., 19, 22, 8401-8413 (2023)");
    1122             :   }
    1123          44 :   if(martini) {
    1124          16 :     log<<plumed.cite("Niebling, Björling, Westenhoff, J. Appl. Crystallogr., 47, 1190–1198 (2014)");
    1125          16 :     log<<plumed.cite("Paissoni, Jussupow, Camilloni, J. Appl. Crystallogr., 52, 394-402 (2019)");
    1126             :   }
    1127          44 :   if(atomistic) {
    1128          24 :     log<<plumed.cite("Fraser, MacRae, Suzuki, J. Appl. Crystallogr., 11, 693–694 (1978)");
    1129          24 :     log<<plumed.cite("Brown, Fox, Maslen, O'Keefe, Willis, International Tables for Crystallography, C, 554–595 (International Union of Crystallography, 2006)");
    1130             :   }
    1131          44 :   if(resolution) {
    1132           8 :     log<<plumed.cite("Pedersen, Posselt, Mortensen, J. Appl. Crystallogr., 23, 321–333 (1990)");
    1133             :   }
    1134             : 
    1135          88 :   log<< plumed.cite("Bonomi, Camilloni, Bioinformatics, 33, 3999 (2017)");
    1136          44 :   log<<"\n";
    1137             : 
    1138          44 :   requestAtoms(atoms, false);
    1139             : 
    1140          44 :   if(getDoScore()) {
    1141           8 :     setParameters(expint);
    1142           8 :     Initialise(numq);
    1143             :   }
    1144          44 :   setDerivatives();
    1145          44 :   checkRead();
    1146          88 : }
    1147             : 
    1148             : // calculates SASA neighbor list
    1149          12 : void SAXS::calcNlist(std::vector<std::vector<int> > &Nlist) {
    1150             :   unsigned natoms = getNumberOfAtoms();
    1151       42680 :   for(unsigned i = 0; i < natoms; ++i) {
    1152       42668 :     if (LCPOparam[i].size()>0) {
    1153    36236236 :       for (unsigned j = 0; j < i; ++j) {
    1154    36216204 :         if (LCPOparam[j].size()>0) {
    1155    16741476 :           double Delta_ij_mod = modulo(delta(getPosition(i), getPosition(j)))*10.;
    1156    16741476 :           double overlapD = LCPOparam[i][0]+LCPOparam[j][0];
    1157    16741476 :           if(Delta_ij_mod < overlapD) {
    1158      391272 :             Nlist.at(i).push_back(j);
    1159      391272 :             Nlist.at(j).push_back(i);
    1160             :           }
    1161             :         }
    1162             :       }
    1163             :     }
    1164             :   }
    1165             : 
    1166          12 : }
    1167             : 
    1168             : // calculates SASA according to LCPO algorithm
    1169          12 : void SAXS::sasa_calculate(std::vector<bool> &solv_res) {
    1170             :   unsigned natoms = getNumberOfAtoms();
    1171          12 :   std::vector<std::vector<int> > Nlist(natoms);
    1172          12 :   calcNlist(Nlist);
    1173          12 :   std::vector<double> sasares(nres, 0.);
    1174             : 
    1175          12 :   #pragma omp parallel num_threads(OpenMP::getNumThreads())
    1176             :   {
    1177             :     std::vector<double> private_sasares(nres, 0.);
    1178             :     #pragma omp for
    1179             :     for (unsigned i = 0; i < natoms; ++i) {
    1180             :       if (LCPOparam[i].size() > 1 && LCPOparam[i][1] > 0.0) {
    1181             :         double Aij = 0.0;
    1182             :         double Aijk = 0.0;
    1183             :         double Ajk = 0.0;
    1184             :         double ri = LCPOparam[i][0];
    1185             :         double S1 = 4.*M_PI*ri*ri;
    1186             :         for (unsigned j = 0; j < Nlist[i].size(); ++j) {
    1187             :           double d_ij = modulo(delta( getPosition(i), getPosition(Nlist[i][j]) ))*10.;
    1188             :           double rj = LCPOparam[Nlist[i][j]][0];
    1189             :           double Aijt = (2.*M_PI*ri*(ri-d_ij/2.-((ri*ri-rj*rj)/(2.*d_ij))));
    1190             :           double Ajkt = 0.0;
    1191             :           for (unsigned k = 0; k < Nlist[Nlist[i][j]].size(); ++k) {
    1192             :             if (std::find (Nlist[i].begin(), Nlist[i].end(), Nlist[Nlist[i][j]][k]) !=  Nlist[i].end()) {
    1193             :               double d_jk = modulo(delta( getPosition(Nlist[i][j]), getPosition(Nlist[Nlist[i][j]][k]) ))*10.;
    1194             :               double rk = LCPOparam[Nlist[Nlist[i][j]][k]][0];
    1195             :               double sjk =  (2.*M_PI*rj*(rj-d_jk/2.-((rj*rj-rk*rk)/(2.*d_jk))));
    1196             :               Ajkt += sjk;
    1197             :             }
    1198             :           }
    1199             :           Aijk += (Aijt * Ajkt);
    1200             :           Aij += Aijt;
    1201             :           Ajk += Ajkt;
    1202             :         }
    1203             :         double sasai = (LCPOparam[i][1]*S1+LCPOparam[i][2]*Aij+LCPOparam[i][3]*Ajk+LCPOparam[i][4]*Aijk);
    1204             :         if (sasai > 0) {
    1205             :           private_sasares[residue_atom[i]] += sasai / 100.0;
    1206             :         }
    1207             :       }
    1208             :     }
    1209             :     #pragma omp critical
    1210             :     {
    1211             :       // combining private_sasares into sasares
    1212             :       for (unsigned i = 0; i < nres; ++i) {
    1213             :         sasares[i] += private_sasares[i];
    1214             :       }
    1215             :     }
    1216             :   }
    1217        2632 :   for(unsigned i=0; i<nres; ++i) { // updating solv_res based on sasares
    1218        2620 :     if(sasares[i]>sasa_cutoff) {
    1219             :       solv_res[i] = 1;
    1220             :     } else {
    1221             :       solv_res[i] = 0;
    1222             :     }
    1223             :   }
    1224          12 : }
    1225             : 
    1226           0 : void SAXS::calculate_gpu(std::vector<Vector> &pos, std::vector<Vector> &deriv) {
    1227             : #ifdef __PLUMED_HAS_ARRAYFIRE
    1228             :   unsigned size;
    1229             :   if(onebead) {
    1230             :     size = nres;
    1231             :   } else {
    1232             :     size = getNumberOfAtoms();
    1233             :   }
    1234             :   const unsigned numq = q_list.size();
    1235             : 
    1236             :   std::vector<float> sum;
    1237             :   sum.resize(numq);
    1238             : 
    1239             :   std::vector<float> dd;
    1240             :   dd.resize(size*3*numq);
    1241             : 
    1242             :   // on gpu only the master rank run the calculation
    1243             :   if(comm.Get_rank()==0) {
    1244             :     std::vector<float> posi;
    1245             :     posi.resize(3*size);
    1246             :     #pragma omp parallel for num_threads(OpenMP::getNumThreads())
    1247             :     for (unsigned i=0; i<size; ++i) {
    1248             :       const Vector tmp = pos[i];
    1249             :       posi[3*i]   = static_cast<float>(tmp[0]);
    1250             :       posi[3*i+1] = static_cast<float>(tmp[1]);
    1251             :       posi[3*i+2] = static_cast<float>(tmp[2]);
    1252             :     }
    1253             : 
    1254             :     // create array a and b containing atomic coordinates
    1255             : #ifdef  __PLUMED_HAS_ARRAYFIRE_CUDA
    1256             :     af::setDevice(afcu::getNativeId(deviceid));
    1257             : #elif   __PLUMED_HAS_ARRAYFIRE_OCL
    1258             :     af::setDevice(afcl::getNativeId(deviceid));
    1259             : #else
    1260             :     af::setDevice(deviceid);
    1261             : #endif
    1262             :     // 3,size,1,1
    1263             :     af::array pos_a = af::array(3, size, &posi.front());
    1264             :     // size,3,1,1
    1265             :     pos_a = af::moddims(pos_a.T(), size, 3, 1);
    1266             :     // size,3,1,1
    1267             :     af::array pos_b = pos_a(af::span, af::span);
    1268             :     // size,1,3,1
    1269             :     pos_a = af::moddims(pos_a, size, 1, 3);
    1270             :     // 1,size,3,1
    1271             :     pos_b = af::moddims(pos_b, 1, size, 3);
    1272             : 
    1273             :     // size,size,3,1
    1274             :     af::array pos_a_t = af::tile(pos_a, 1, size, 1);
    1275             :     // size,size,3,1: for some reason we need this
    1276             :     pos_a_t = af::moddims(pos_a_t, size, size, 3);
    1277             :     // size,size,3,1
    1278             :     af::array pos_b_t = af::tile(pos_b, size, 1, 1);
    1279             :     // size,size,3,1: for some reason we need this
    1280             :     pos_b_t = af::moddims(pos_b_t, size, size, 3);
    1281             :     // size,size,3,1
    1282             :     af::array xyz_dist = pos_a_t - pos_b_t;
    1283             :     // size,size,1,1
    1284             :     af::array square = af::sum(xyz_dist*xyz_dist,2);
    1285             :     // size,size,1,1
    1286             :     af::array dist_sqrt = af::sqrt(square);
    1287             :     // replace the zero of square with one to avoid nan in the derivatives (the number does not matter because this are multiplied by zero)
    1288             :     af::replace(square,!(af::iszero(square)),1.);
    1289             :     // size,size,3,1
    1290             :     xyz_dist = xyz_dist / af::tile(square, 1, 1, 3);
    1291             :     // numq,1,1,1
    1292             :     af::array sum_device   = af::constant(0, numq, f32);
    1293             :     // numq,size,3,1
    1294             :     af::array deriv_device = af::constant(0, numq, size, 3, f32);
    1295             : 
    1296             :     for (unsigned k=0; k<numq; ++k) {
    1297             :       // calculate FF matrix
    1298             :       // size,1,1,1
    1299             :       af::array AFF_value(size, &FFf_value[k].front());
    1300             :       // size,size,1,1
    1301             :       af::array FFdist_mod = af::tile(AFF_value(af::span), 1, size)*af::transpose(af::tile(AFF_value(af::span), 1, size));
    1302             : 
    1303             :       // get q
    1304             :       const float qvalue = static_cast<float>(q_list[k]);
    1305             :       // size,size,1,1
    1306             :       af::array dist_q = qvalue*dist_sqrt;
    1307             :       // size,size,1
    1308             :       af::array dist_sin = af::sin(dist_q)/dist_q;
    1309             :       af::replace(dist_sin,!(af::isNaN(dist_sin)),1.);
    1310             :       // 1,1,1,1
    1311             :       sum_device(k) = af::sum(af::flat(dist_sin)*af::flat(FFdist_mod));
    1312             : 
    1313             :       // size,size,1,1
    1314             :       af::array tmp = FFdist_mod*(dist_sin - af::cos(dist_q));
    1315             :       // size,size,3,1
    1316             :       af::array dd_all = af::tile(tmp, 1, 1, 3)*xyz_dist;
    1317             :       // it should become 1,size,3
    1318             :       deriv_device(k, af::span, af::span) = af::sum(dd_all,0);
    1319             :     }
    1320             : 
    1321             :     // read out results
    1322             :     sum_device.host(&sum.front());
    1323             : 
    1324             :     deriv_device = af::reorder(deriv_device, 2, 1, 0);
    1325             :     deriv_device = af::flat(deriv_device);
    1326             :     deriv_device.host(&dd.front());
    1327             :   }
    1328             : 
    1329             :   comm.Bcast(dd, 0);
    1330             :   comm.Bcast(sum, 0);
    1331             : 
    1332             :   for(unsigned k=0; k<numq; ++k) {
    1333             :     std::string num;
    1334             :     Tools::convert(k,num);
    1335             :     Value* val=getPntrToComponent("q-"+num);
    1336             :     val->set(sum[k]);
    1337             :     if(getDoScore()) {
    1338             :       setCalcData(k, sum[k]);
    1339             :     }
    1340             :     for(unsigned i=0; i<size; ++i) {
    1341             :       const unsigned di = k*size*3+i*3;
    1342             :       deriv[k*size+i] = Vector(2.*dd[di+0],2.*dd[di+1],2.*dd[di+2]);
    1343             :     }
    1344             :   }
    1345             : #endif
    1346           0 : }
    1347             : 
    1348         204 : void SAXS::calculate_cpu(std::vector<Vector> &pos, std::vector<Vector> &deriv) {
    1349             :   unsigned size;
    1350         204 :   if(onebead) {
    1351          16 :     size = nres;
    1352             :   } else {
    1353             :     size = getNumberOfAtoms();
    1354             :   }
    1355         204 :   const unsigned numq = q_list.size();
    1356             : 
    1357         204 :   unsigned stride = comm.Get_size();
    1358         204 :   unsigned rank   = comm.Get_rank();
    1359         204 :   if(serial) {
    1360             :     stride = 1;
    1361             :     rank   = 0;
    1362             :   }
    1363         204 :   std::vector<double> sum(numq,0);
    1364         204 :   unsigned nt=OpenMP::getNumThreads();
    1365         204 :   #pragma omp parallel num_threads(nt)
    1366             :   {
    1367             :     std::vector<Vector> omp_deriv(deriv.size());
    1368             :     std::vector<double> omp_sum(numq,0);
    1369             :     #pragma omp for nowait
    1370             :     for (unsigned i=rank; i<size-1; i+=stride) {
    1371             :       Vector posi = pos[i];
    1372             :       for (unsigned j=i+1; j<size ; ++j) {
    1373             :         Vector c_distances = delta(posi,pos[j]);
    1374             :         double m_distances = c_distances.modulo();
    1375             :         c_distances = c_distances/m_distances/m_distances;
    1376             :         for (unsigned k=0; k<numq; ++k) {
    1377             :           unsigned kdx=k*size;
    1378             :           double qdist = q_list[k]*m_distances;
    1379             :           double FFF = 2.*FF_value[i][k]*FF_value[j][k];
    1380             :           double tsq = std::sin(qdist)/qdist;
    1381             :           double tcq = std::cos(qdist);
    1382             :           double tmp = FFF*(tcq-tsq);
    1383             :           Vector dd  = c_distances*tmp;
    1384             :           if(nt>1) {
    1385             :             omp_deriv[kdx+i] -=dd;
    1386             :             omp_deriv[kdx+j] +=dd;
    1387             :             omp_sum[k] += FFF*tsq;
    1388             :           } else {
    1389             :             deriv[kdx+i] -= dd;
    1390             :             deriv[kdx+j] += dd;
    1391             :             sum[k] += FFF*tsq;
    1392             :           }
    1393             :         }
    1394             :       }
    1395             :     }
    1396             :     #pragma omp critical
    1397             :     if(nt>1) {
    1398             :       for(unsigned i=0; i<deriv.size(); ++i) {
    1399             :         deriv[i]+=omp_deriv[i];
    1400             :       }
    1401             :       for(unsigned k=0; k<numq; ++k) {
    1402             :         sum[k]+=omp_sum[k];
    1403             :       }
    1404             :     }
    1405             :   }
    1406             : 
    1407         204 :   if(!serial) {
    1408         200 :     comm.Sum(&deriv[0][0], 3*deriv.size());
    1409         200 :     comm.Sum(&sum[0], numq);
    1410             :   }
    1411             : 
    1412         204 :   if (resolution) {
    1413             :     // get spline for scatering curve
    1414           4 :     std::vector<SplineCoeffs> scatt_coeffs = spline_coeffs(q_list, sum);
    1415             : 
    1416             :     // get spline for the derivatives
    1417             :     // copy the deriv to a new vector and zero deriv
    1418           4 :     std::vector<Vector> old_deriv(deriv);
    1419           4 :     memset(&deriv[0][0], 0.0, deriv.size() * sizeof deriv[0]);
    1420             : 
    1421           4 :     unsigned nt=OpenMP::getNumThreads();
    1422         274 :     for (unsigned i=rank; i<size; i+=stride) {
    1423         270 :       std::vector<double> deriv_i_x(numq);
    1424         270 :       std::vector<double> deriv_i_y(numq);
    1425         270 :       std::vector<double> deriv_i_z(numq);
    1426             : 
    1427             :       std::vector<SplineCoeffs> deriv_coeffs_x;
    1428             :       std::vector<SplineCoeffs> deriv_coeffs_y;
    1429             :       std::vector<SplineCoeffs> deriv_coeffs_z;
    1430        4320 :       for (unsigned k=0; k<numq; k++) {
    1431        4050 :         unsigned kdx = k*size;
    1432        4050 :         deriv_i_x[k] = old_deriv[kdx+i][0];
    1433        4050 :         deriv_i_y[k] = old_deriv[kdx+i][1];
    1434        4050 :         deriv_i_z[k] = old_deriv[kdx+i][2];
    1435             :       }
    1436         270 :       deriv_coeffs_x = spline_coeffs(q_list, deriv_i_x);
    1437         270 :       deriv_coeffs_y = spline_coeffs(q_list, deriv_i_y);
    1438         270 :       deriv_coeffs_z = spline_coeffs(q_list, deriv_i_z);
    1439             : 
    1440             :       // compute derivative with the smearing using the resolution function
    1441         270 :       #pragma omp parallel for num_threads(nt)
    1442             :       for (unsigned k=0; k<numq; k++) {
    1443             :         unsigned kdx = k*size;
    1444             :         double dq = qj_list[k][1] - qj_list[k][0];
    1445             :         for (unsigned j=0; j<Nj; j++) {
    1446             :           deriv[kdx+i][0] += Rij[k][j] * interpolation(deriv_coeffs_x, qj_list[k][j]) * dq;
    1447             :           deriv[kdx+i][1] += Rij[k][j] * interpolation(deriv_coeffs_y, qj_list[k][j]) * dq;
    1448             :           deriv[kdx+i][2] += Rij[k][j] * interpolation(deriv_coeffs_z, qj_list[k][j]) * dq;
    1449             :         }
    1450             :       }
    1451             :     }
    1452             : 
    1453           4 :     if(!serial) {
    1454           4 :       comm.Sum(&deriv[0][0], 3*deriv.size());
    1455             :     }
    1456             : 
    1457             :     // compute the smeared spectra using the resolution function
    1458           4 :     #pragma omp parallel for num_threads(nt)
    1459             :     for (unsigned i=0; i<numq; i++) {
    1460             :       sum[i] = 0.;
    1461             :       double dq = qj_list[i][1] - qj_list[i][0];
    1462             :       for (unsigned j=0; j<Nj; j++) {
    1463             :         sum[i] += Rij[i][j] * interpolation(scatt_coeffs, qj_list[i][j]) * dq;
    1464             :       }
    1465             :     }
    1466             :   }
    1467             : 
    1468        2088 :   for (unsigned k=0; k<numq; ++k) {
    1469        1884 :     sum[k]+=FF_rank[k];
    1470             :     std::string num;
    1471        1884 :     Tools::convert(k,num);
    1472        1884 :     Value* val=getPntrToComponent("q-"+num);
    1473        1884 :     val->set(sum[k]);
    1474        1884 :     if(getDoScore()) {
    1475        1512 :       setCalcData(k, sum[k]);
    1476             :     }
    1477             :   }
    1478         204 : }
    1479             : 
    1480         204 : void SAXS::calculate() {
    1481         204 :   if(pbc) {
    1482         176 :     makeWhole();
    1483             :   }
    1484             : 
    1485         204 :   const size_t size = getNumberOfAtoms();
    1486             :   const size_t numq = q_list.size();
    1487             : 
    1488             :   // these are the derivatives associated to the coarse graining
    1489         204 :   std::vector<Vector> aa_deriv(size);
    1490             : 
    1491             :   size_t beads_size = size;
    1492         204 :   if(onebead) {
    1493          16 :     beads_size = nres;
    1494             :   }
    1495             :   // these are the derivatives particle,q
    1496         204 :   std::vector<Vector> bd_deriv(numq*beads_size);
    1497             : 
    1498         204 :   std::vector<Vector> beads_pos(beads_size);
    1499         204 :   if(onebead) {
    1500        3482 :     for(unsigned resid=0; resid<nres; resid++) {
    1501             :       double sum_mass = 0.;
    1502        3466 :       Vector sum_pos = Vector(0,0,0);
    1503    12278134 :       for(unsigned atom_id=0; atom_id<size; atom_id++) {
    1504    12274668 :         if(residue_atom[atom_id] == resid) {
    1505       56586 :           aa_deriv[atom_id] = Vector(atoms_masses[atom_id],atoms_masses[atom_id],atoms_masses[atom_id]);
    1506       56586 :           sum_pos += atoms_masses[atom_id] * getPosition(atom_id); // getPosition(first_atom+atom_id)
    1507       56586 :           sum_mass += atoms_masses[atom_id];
    1508             :         }
    1509             :       }
    1510        3466 :       beads_pos[resid] = sum_pos/sum_mass;
    1511    12278134 :       for(unsigned atom_id=0; atom_id<size; atom_id++) {
    1512    12274668 :         if(residue_atom[atom_id] == resid) {
    1513       56586 :           aa_deriv[atom_id] /= sum_mass;
    1514             :         }
    1515             :       }
    1516             :     }
    1517             :     // SASA
    1518          16 :     std::vector<bool> solv_res(nres, 0);
    1519          16 :     if(saxs) {
    1520          10 :       if(getStep()%solv_stride == 0 || isFirstStep) {
    1521          10 :         isFirstStep = 0;
    1522          10 :         if(rho_corr!=rho) {
    1523           6 :           sasa_calculate(solv_res);
    1524             :         }
    1525          10 :         Iq0=0.;
    1526        2166 :         for(unsigned i=0; i<nres; ++i) {
    1527        2156 :           if(solv_res[i] == 1 ) {
    1528         260 :             Iq0 += std::sqrt((Iq0_vac[i]+(rho_corr*rho_corr)*Iq0_solv[i]-rho_corr*Iq0_mix[i]));
    1529             :           } else {
    1530        1896 :             Iq0 += std::sqrt((Iq0_vac[i]+(rho*rho)*Iq0_solv[i]-rho*Iq0_mix[i]));
    1531             :           }
    1532             :         }
    1533             :         // Form Factors
    1534         100 :         for(unsigned k=0; k<numq; ++k) {
    1535       19494 :           for(unsigned i=0; i<nres; ++i) {
    1536       19404 :             if(!gpu) {
    1537       19404 :               if(solv_res[i] == 0) { // buried
    1538       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;
    1539             :               } else { // surface
    1540        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;
    1541             :               }
    1542             :             } else {
    1543           0 :               if(solv_res[i] == 0) { // buried
    1544           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);
    1545             :               } else { // surface
    1546           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);
    1547             :               }
    1548             :             }
    1549             :           }
    1550             :         }
    1551          10 :         if(!gpu) {
    1552         100 :           for(unsigned k=0; k<numq; ++k) {
    1553          90 :             FF_rank[k]=0.;
    1554       19494 :             for(unsigned i=0; i<nres; ++i) {
    1555       19404 :               FF_rank[k]+=FF_value[i][k]*FF_value[i][k];
    1556             :             }
    1557             :           }
    1558             :         }
    1559             :       }
    1560             :     } else { // SANS
    1561           6 :       std::vector<bool> deut_res(nres, 0);
    1562           6 :       double solv_sc_length = 0.1*(0.580 + 2.*((1. - deuter_conc) * (-0.374) + deuter_conc * 0.667)); // per water electron (10 electrons)
    1563           6 :       double rho_sans = rho * solv_sc_length;
    1564           6 :       double rho_sans_corr = rho_corr * solv_sc_length;
    1565           6 :       if(getStep()%solv_stride == 0 || isFirstStep) {
    1566           6 :         isFirstStep = 0;
    1567           6 :         if(deuter_conc!=0.||rho != rho_corr) {
    1568           6 :           sasa_calculate(solv_res);
    1569             :         }
    1570           6 :         Iq0=0.;
    1571        1316 :         for(unsigned i=0; i<nres; ++i) {
    1572        1310 :           if(solv_res[i] == 1 ) {
    1573         260 :             if(rand()/RAND_MAX<deuter_conc) {
    1574           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]));
    1575             :               deut_res[i] = 1;
    1576             :             } else {
    1577         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]));
    1578             :             }
    1579             :           } else {
    1580        1050 :             Iq0 += std::sqrt(std::fabs(Iq0_vac_H[i] + rho_sans*rho_sans*Iq0_solv_H[i] - rho_sans*Iq0_mix_H[i]));
    1581             :           }
    1582             :         }
    1583             :         // Form Factors
    1584          60 :         for(unsigned k=0; k<numq; ++k) {
    1585       11844 :           for(unsigned i=0; i<nres; ++i) {
    1586       11790 :             if(!gpu) {
    1587       11790 :               if(solv_res[i] == 0) { // hydrogen
    1588        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;
    1589             :               } else {
    1590        2340 :                 if(deut_res[i] == 0) {
    1591        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;
    1592             :                 } else {
    1593           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;
    1594             :                 }
    1595             :               }
    1596             :             } else {
    1597           0 :               if(solv_res[i] == 0) { // hydrogen
    1598           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);
    1599             :               } else {
    1600           0 :                 if(deut_res[i] == 0) {
    1601           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);
    1602             :                 } else {
    1603           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);
    1604             :                 }
    1605             :               }
    1606             :             }
    1607             :           }
    1608             :         }
    1609           6 :         if(!gpu) {
    1610          60 :           for(unsigned k=0; k<numq; ++k) {
    1611          54 :             FF_rank[k]=0.;
    1612       11844 :             for(unsigned i=0; i<nres; ++i) {
    1613       11790 :               FF_rank[k]+=FF_value[i][k]*FF_value[i][k];
    1614             :             }
    1615             :           }
    1616             :         }
    1617             :       }
    1618             :     }
    1619             :     // not ONEBEAD
    1620             :   } else {
    1621       81024 :     for(unsigned i=0; i<size; ++i) {
    1622       80836 :       beads_pos[i] = getPosition(i);
    1623             :     }
    1624         376 :     aa_deriv = std::vector<Vector>(size,(Vector(1,1,1)));
    1625             :   }
    1626             : 
    1627         204 :   if(gpu) {
    1628           0 :     calculate_gpu(beads_pos, bd_deriv);
    1629             :   } else {
    1630         204 :     calculate_cpu(beads_pos, bd_deriv);
    1631             :   }
    1632             : 
    1633         204 :   if(getDoScore()) {
    1634             :     /* Metainference */
    1635         168 :     double score = getScore();
    1636         168 :     setScore(score);
    1637             :   }
    1638             : 
    1639        2088 :   for (unsigned k=0; k<numq; ++k) {
    1640        1884 :     const unsigned kdx=k*beads_size;
    1641        1884 :     Tensor deriv_box;
    1642             :     Value* val;
    1643        1884 :     if(!getDoScore()) {
    1644             :       std::string num;
    1645         372 :       Tools::convert(k,num);
    1646         372 :       val=getPntrToComponent("q-"+num);
    1647             : 
    1648         372 :       if(onebead) {
    1649             :         unsigned atom_id=0;
    1650       31338 :         for(unsigned i=0; i<beads_size; ++i) {
    1651      540468 :           for(unsigned j=0; j<atoms_per_bead[i]; ++j) {
    1652      509274 :             setAtomsDerivatives(val, atom_id, Vector(aa_deriv[atom_id][0]*bd_deriv[kdx+i][0], \
    1653      509274 :                                 aa_deriv[atom_id][1]*bd_deriv[kdx+i][1], \
    1654      509274 :                                 aa_deriv[atom_id][2]*bd_deriv[kdx+i][2]) );
    1655      509274 :             deriv_box += Tensor(getPosition(atom_id),Vector(aa_deriv[atom_id][0]*bd_deriv[kdx+i][0], \
    1656      509274 :                                 aa_deriv[atom_id][1]*bd_deriv[kdx+i][1], \
    1657     1018548 :                                 aa_deriv[atom_id][2]*bd_deriv[kdx+i][2]) );
    1658      509274 :             atom_id++;
    1659             :           }
    1660             :         }
    1661             :       } else {
    1662      501636 :         for(unsigned i=0; i<beads_size; ++i) {
    1663      501408 :           setAtomsDerivatives(val, i, Vector(bd_deriv[kdx+i][0], \
    1664      501408 :                                              bd_deriv[kdx+i][1], \
    1665      501408 :                                              bd_deriv[kdx+i][2]) );
    1666     1002816 :           deriv_box += Tensor(getPosition(i),Vector(bd_deriv[kdx+i][0], \
    1667      501408 :                               bd_deriv[kdx+i][1], \
    1668     1002816 :                               bd_deriv[kdx+i][2]) );
    1669             :         }
    1670             :       }
    1671             :     } else {
    1672        1512 :       val=getPntrToComponent("score");
    1673        1512 :       if(onebead) {
    1674             :         unsigned atom_id=0;
    1675           0 :         for(unsigned i=0; i<beads_size; ++i) {
    1676           0 :           for(unsigned j=0; j<atoms_per_bead[i]; ++j) {
    1677           0 :             setAtomsDerivatives(val, atom_id, Vector(aa_deriv[atom_id][0]*bd_deriv[kdx+i][0]*getMetaDer(k),
    1678           0 :                                 aa_deriv[atom_id][1]*bd_deriv[kdx+i][1]*getMetaDer(k),
    1679           0 :                                 aa_deriv[atom_id][2]*bd_deriv[kdx+i][2]*getMetaDer(k)) );
    1680           0 :             deriv_box += Tensor(getPosition(atom_id),Vector(aa_deriv[atom_id][0]*bd_deriv[kdx+i][0]*getMetaDer(k),
    1681           0 :                                 aa_deriv[atom_id][1]*bd_deriv[kdx+i][1]*getMetaDer(k),
    1682           0 :                                 aa_deriv[atom_id][2]*bd_deriv[kdx+i][2]*getMetaDer(k)) );
    1683           0 :             atom_id++;
    1684             :           }
    1685             :         }
    1686             :       } else {
    1687      450828 :         for(unsigned i=0; i<beads_size; ++i) {
    1688      449316 :           setAtomsDerivatives(val, i, Vector(bd_deriv[kdx+i][0]*getMetaDer(k),
    1689      449316 :                                              bd_deriv[kdx+i][1]*getMetaDer(k),
    1690      449316 :                                              bd_deriv[kdx+i][2]*getMetaDer(k)) );
    1691      898632 :           deriv_box += Tensor(getPosition(i),Vector(bd_deriv[kdx+i][0]*getMetaDer(k),
    1692      449316 :                               bd_deriv[kdx+i][1]*getMetaDer(k),
    1693      898632 :                               bd_deriv[kdx+i][2]*getMetaDer(k)) );
    1694             :         }
    1695             :       }
    1696             :     }
    1697        1884 :     setBoxDerivatives(val, -deriv_box);
    1698             :   }
    1699         204 : }
    1700             : 
    1701         204 : void SAXS::update() {
    1702             :   // write status file
    1703         204 :   if(getWstride()>0&& (getStep()%getWstride()==0 || getCPT()) ) {
    1704          44 :     writeStatus();
    1705             :   }
    1706         204 : }
    1707             : 
    1708          16 : unsigned SAXS::getOnebeadMapping(const PDB &pdb, const std::vector<AtomNumber> &atoms) {
    1709             :   std::vector<std::string> chains;
    1710          16 :   pdb.getChainNames( chains );
    1711             :   std::vector<std::vector<std::string> > AtomResidueName;
    1712             : 
    1713             :   // cycle over chains
    1714          42 :   for(unsigned i=0; i<chains.size(); ++i) {
    1715             :     unsigned start, end;
    1716             :     std::string errmsg;
    1717          26 :     pdb.getResidueRange(chains[i], start, end, errmsg);
    1718          26 :     AtomResidueName.resize(2);
    1719             :     // cycle over residues
    1720        3346 :     for(unsigned res=start; res<=end; res++) {
    1721        3320 :       std::string Rname = pdb.getResidueName(res, chains[i]);
    1722        3320 :       Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
    1723        3320 :       std::vector<AtomNumber> res_atoms = pdb.getAtomsInResidue(res, chains[i]);
    1724             :       std::vector<unsigned> tmp_residue_atom;
    1725        3320 :       tmp_residue_atom.resize(3,0);
    1726             :       // cycle over atoms
    1727       59906 :       for(unsigned a=0; a<res_atoms.size(); a++) {
    1728             :         // operations shared among all beads
    1729       56586 :         std::string Aname=pdb.getAtomName(res_atoms[a]);
    1730       56586 :         AtomResidueName[0].push_back(Aname);
    1731       56586 :         AtomResidueName[1].push_back(Rname);
    1732             :         char type;
    1733       56586 :         char first = Aname.at(0);
    1734             :         // We assume that element symbol is first letter, if not a number
    1735       56586 :         if (!isdigit(first)) {
    1736             :           type = first;
    1737             :           // otherwise is the second
    1738             :         } else {
    1739           0 :           type = Aname.at(1);
    1740             :         }
    1741       56586 :         if (type == 'H') {
    1742       30060 :           atoms_masses.push_back(1.008);
    1743             :         } else if(type == 'C') {
    1744       16594 :           atoms_masses.push_back(12.011);
    1745             :         } else if(type == 'N') {
    1746        4416 :           atoms_masses.push_back(14.007);
    1747             :         } else if(type == 'O') {
    1748        5316 :           atoms_masses.push_back(15.999);
    1749             :         } else if(type == 'S') {
    1750         132 :           atoms_masses.push_back(32.065);
    1751             :         } else if(type == 'P') {
    1752          68 :           atoms_masses.push_back(30.974);
    1753             :         } else {
    1754           0 :           error("Unknown element in mass extraction\n");
    1755             :         }
    1756      113172 :         if(pdb.allowedResidue("protein",Rname)) {
    1757       54262 :           residue_atom.push_back(atoms_per_bead.size());
    1758             :         } else {
    1759             :           // check for nucleic acids
    1760             :           // Pentose bead
    1761       10450 :           if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  || Aname=="O3'"  ||
    1762        8500 :               Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  || Aname=="C1'"  || Aname=="H5'"  ||
    1763        6628 :               Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  || Aname=="H2'"  || Aname=="H2''" ||
    1764        5732 :               Aname=="H2'2" || Aname=="H1'"  || Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" ||
    1765        7634 :               Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T"  ||
    1766             :               Aname=="H3T" ) {
    1767        1262 :             residue_atom.push_back(atoms_per_bead.size()+0);
    1768        1262 :             tmp_residue_atom[0]++;
    1769             :           }
    1770             :           // Nucleobase bead
    1771        4686 :           else if(Aname=="N1"  || Aname=="N2"  || Aname=="N3"  || Aname=="N4"  || Aname=="N6"  ||
    1772        4062 :                   Aname=="N7"  || Aname=="N9"  || Aname=="C2"  || Aname=="C4"  || Aname=="C5"  ||
    1773        2736 :                   Aname=="C6"  || Aname=="C7"  || Aname=="C8"  || Aname=="O2"  || Aname=="O4"  ||
    1774        1956 :                   Aname=="O6"  || Aname=="H1"  || Aname=="H2"  || Aname=="H3"  || Aname=="H5"  ||
    1775        1020 :                   Aname=="H6"  || Aname=="H8"  || Aname=="H21" || Aname=="H22" || Aname=="H41" ||
    1776        2082 :                   Aname=="H42" || Aname=="H61" || Aname=="H62" || Aname=="H71" || Aname=="H72" ||
    1777             :                   Aname=="H73" ) {
    1778         858 :             residue_atom.push_back(atoms_per_bead.size()+1);
    1779         858 :             tmp_residue_atom[1]++;
    1780             :           }
    1781             :           // PO bead
    1782         204 :           else if(Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" || Aname=="O1P" ||
    1783         204 :                   Aname=="O2P" || Aname=="O3P" || Aname=="HP"  || Aname=="HOP3" ) {
    1784         204 :             residue_atom.push_back(atoms_per_bead.size()+2);
    1785         204 :             tmp_residue_atom[2]++;
    1786             :           }
    1787             :           // error
    1788             :           else {
    1789           0 :             error("Atom name "+Aname+" cannot be indexed to any bead. Check the PDB.");
    1790             :           }
    1791             :         }
    1792             :       }
    1793        6640 :       if(pdb.allowedResidue("protein",Rname)) {
    1794        3242 :         atoms_per_bead.push_back(res_atoms.size());
    1795             :       } else {
    1796          78 :         atoms_per_bead.push_back(tmp_residue_atom[0]);
    1797          78 :         atoms_per_bead.push_back(tmp_residue_atom[1]);
    1798          78 :         if(tmp_residue_atom[2]>0) {
    1799          68 :           atoms_per_bead.push_back(tmp_residue_atom[2]);
    1800             :         }
    1801             :       }
    1802             :     }
    1803             :   }
    1804          16 :   readLCPOparam(AtomResidueName, atoms.size());
    1805          16 :   return atoms_per_bead.size();
    1806          16 : }
    1807             : 
    1808           8 : void SAXS::getMartiniFFparam(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &parameter) {
    1809           8 :   parameter[ALA_BB].push_back(9.045);
    1810           8 :   parameter[ALA_BB].push_back(-0.098114);
    1811           8 :   parameter[ALA_BB].push_back(7.54281);
    1812           8 :   parameter[ALA_BB].push_back(-1.97438);
    1813           8 :   parameter[ALA_BB].push_back(-8.32689);
    1814           8 :   parameter[ALA_BB].push_back(6.09318);
    1815           8 :   parameter[ALA_BB].push_back(-1.18913);
    1816             : 
    1817           8 :   parameter[ARG_BB].push_back(10.729);
    1818           8 :   parameter[ARG_BB].push_back(-0.0392574);
    1819           8 :   parameter[ARG_BB].push_back(1.15382);
    1820           8 :   parameter[ARG_BB].push_back(-0.155999);
    1821           8 :   parameter[ARG_BB].push_back(-2.43619);
    1822           8 :   parameter[ARG_BB].push_back(1.72922);
    1823           8 :   parameter[ARG_BB].push_back(-0.33799);
    1824             : 
    1825           8 :   parameter[ARG_SC1].push_back(-2.796);
    1826           8 :   parameter[ARG_SC1].push_back(0.472403);
    1827           8 :   parameter[ARG_SC1].push_back(8.07424);
    1828           8 :   parameter[ARG_SC1].push_back(4.37299);
    1829           8 :   parameter[ARG_SC1].push_back(-10.7398);
    1830           8 :   parameter[ARG_SC1].push_back(4.95677);
    1831           8 :   parameter[ARG_SC1].push_back(-0.725797);
    1832             : 
    1833           8 :   parameter[ARG_SC2].push_back(15.396);
    1834           8 :   parameter[ARG_SC2].push_back(0.0636736);
    1835           8 :   parameter[ARG_SC2].push_back(-1.258);
    1836           8 :   parameter[ARG_SC2].push_back(1.93135);
    1837           8 :   parameter[ARG_SC2].push_back(-4.45031);
    1838           8 :   parameter[ARG_SC2].push_back(2.49356);
    1839           8 :   parameter[ARG_SC2].push_back(-0.410721);
    1840             : 
    1841           8 :   parameter[ASN_BB].push_back(10.738);
    1842           8 :   parameter[ASN_BB].push_back(-0.0402162);
    1843           8 :   parameter[ASN_BB].push_back(1.03007);
    1844           8 :   parameter[ASN_BB].push_back(-0.254174);
    1845           8 :   parameter[ASN_BB].push_back(-2.12015);
    1846           8 :   parameter[ASN_BB].push_back(1.55535);
    1847           8 :   parameter[ASN_BB].push_back(-0.30963);
    1848             : 
    1849           8 :   parameter[ASN_SC1].push_back(9.249);
    1850           8 :   parameter[ASN_SC1].push_back(-0.0148678);
    1851           8 :   parameter[ASN_SC1].push_back(5.52169);
    1852           8 :   parameter[ASN_SC1].push_back(0.00853212);
    1853           8 :   parameter[ASN_SC1].push_back(-6.71992);
    1854           8 :   parameter[ASN_SC1].push_back(3.93622);
    1855           8 :   parameter[ASN_SC1].push_back(-0.64973);
    1856             : 
    1857           8 :   parameter[ASP_BB].push_back(10.695);
    1858           8 :   parameter[ASP_BB].push_back(-0.0410247);
    1859           8 :   parameter[ASP_BB].push_back(1.03656);
    1860           8 :   parameter[ASP_BB].push_back(-0.298558);
    1861           8 :   parameter[ASP_BB].push_back(-2.06064);
    1862           8 :   parameter[ASP_BB].push_back(1.53495);
    1863           8 :   parameter[ASP_BB].push_back(-0.308365);
    1864             : 
    1865           8 :   parameter[ASP_SC1].push_back(9.476);
    1866           8 :   parameter[ASP_SC1].push_back(-0.0254664);
    1867           8 :   parameter[ASP_SC1].push_back(5.57899);
    1868           8 :   parameter[ASP_SC1].push_back(-0.395027);
    1869           8 :   parameter[ASP_SC1].push_back(-5.9407);
    1870           8 :   parameter[ASP_SC1].push_back(3.48836);
    1871           8 :   parameter[ASP_SC1].push_back(-0.569402);
    1872             : 
    1873           8 :   parameter[CYS_BB].push_back(10.698);
    1874           8 :   parameter[CYS_BB].push_back(-0.0233493);
    1875           8 :   parameter[CYS_BB].push_back(1.18257);
    1876           8 :   parameter[CYS_BB].push_back(0.0684464);
    1877           8 :   parameter[CYS_BB].push_back(-2.792);
    1878           8 :   parameter[CYS_BB].push_back(1.88995);
    1879           8 :   parameter[CYS_BB].push_back(-0.360229);
    1880             : 
    1881           8 :   parameter[CYS_SC1].push_back(8.199);
    1882           8 :   parameter[CYS_SC1].push_back(-0.0261569);
    1883           8 :   parameter[CYS_SC1].push_back(6.79677);
    1884           8 :   parameter[CYS_SC1].push_back(-0.343845);
    1885           8 :   parameter[CYS_SC1].push_back(-5.03578);
    1886           8 :   parameter[CYS_SC1].push_back(2.7076);
    1887           8 :   parameter[CYS_SC1].push_back(-0.420714);
    1888             : 
    1889           8 :   parameter[GLN_BB].push_back(10.728);
    1890           8 :   parameter[GLN_BB].push_back(-0.0391984);
    1891           8 :   parameter[GLN_BB].push_back(1.09264);
    1892           8 :   parameter[GLN_BB].push_back(-0.261555);
    1893           8 :   parameter[GLN_BB].push_back(-2.21245);
    1894           8 :   parameter[GLN_BB].push_back(1.62071);
    1895           8 :   parameter[GLN_BB].push_back(-0.322325);
    1896             : 
    1897           8 :   parameter[GLN_SC1].push_back(8.317);
    1898           8 :   parameter[GLN_SC1].push_back(-0.229045);
    1899           8 :   parameter[GLN_SC1].push_back(12.6338);
    1900           8 :   parameter[GLN_SC1].push_back(-7.6719);
    1901           8 :   parameter[GLN_SC1].push_back(-5.8376);
    1902           8 :   parameter[GLN_SC1].push_back(5.53784);
    1903           8 :   parameter[GLN_SC1].push_back(-1.12604);
    1904             : 
    1905           8 :   parameter[GLU_BB].push_back(10.694);
    1906           8 :   parameter[GLU_BB].push_back(-0.0521961);
    1907           8 :   parameter[GLU_BB].push_back(1.11153);
    1908           8 :   parameter[GLU_BB].push_back(-0.491995);
    1909           8 :   parameter[GLU_BB].push_back(-1.86236);
    1910           8 :   parameter[GLU_BB].push_back(1.45332);
    1911           8 :   parameter[GLU_BB].push_back(-0.29708);
    1912             : 
    1913           8 :   parameter[GLU_SC1].push_back(8.544);
    1914           8 :   parameter[GLU_SC1].push_back(-0.249555);
    1915           8 :   parameter[GLU_SC1].push_back(12.8031);
    1916           8 :   parameter[GLU_SC1].push_back(-8.42696);
    1917           8 :   parameter[GLU_SC1].push_back(-4.66486);
    1918           8 :   parameter[GLU_SC1].push_back(4.90004);
    1919           8 :   parameter[GLU_SC1].push_back(-1.01204);
    1920             : 
    1921           8 :   parameter[GLY_BB].push_back(9.977);
    1922           8 :   parameter[GLY_BB].push_back(-0.0285799);
    1923           8 :   parameter[GLY_BB].push_back(1.84236);
    1924           8 :   parameter[GLY_BB].push_back(-0.0315192);
    1925           8 :   parameter[GLY_BB].push_back(-2.88326);
    1926           8 :   parameter[GLY_BB].push_back(1.87323);
    1927           8 :   parameter[GLY_BB].push_back(-0.345773);
    1928             : 
    1929           8 :   parameter[HIS_BB].push_back(10.721);
    1930           8 :   parameter[HIS_BB].push_back(-0.0379337);
    1931           8 :   parameter[HIS_BB].push_back(1.06028);
    1932           8 :   parameter[HIS_BB].push_back(-0.236143);
    1933           8 :   parameter[HIS_BB].push_back(-2.17819);
    1934           8 :   parameter[HIS_BB].push_back(1.58357);
    1935           8 :   parameter[HIS_BB].push_back(-0.31345);
    1936             : 
    1937           8 :   parameter[HIS_SC1].push_back(-0.424);
    1938           8 :   parameter[HIS_SC1].push_back(0.665176);
    1939           8 :   parameter[HIS_SC1].push_back(3.4369);
    1940           8 :   parameter[HIS_SC1].push_back(2.93795);
    1941           8 :   parameter[HIS_SC1].push_back(-5.18288);
    1942           8 :   parameter[HIS_SC1].push_back(2.12381);
    1943           8 :   parameter[HIS_SC1].push_back(-0.284224);
    1944             : 
    1945           8 :   parameter[HIS_SC2].push_back(5.363);
    1946           8 :   parameter[HIS_SC2].push_back(-0.0176945);
    1947           8 :   parameter[HIS_SC2].push_back(2.9506);
    1948           8 :   parameter[HIS_SC2].push_back(-0.387018);
    1949           8 :   parameter[HIS_SC2].push_back(-1.83951);
    1950           8 :   parameter[HIS_SC2].push_back(0.9703);
    1951           8 :   parameter[HIS_SC2].push_back(-0.1458);
    1952             : 
    1953           8 :   parameter[HIS_SC3].push_back(5.784);
    1954           8 :   parameter[HIS_SC3].push_back(-0.0293129);
    1955           8 :   parameter[HIS_SC3].push_back(2.74167);
    1956           8 :   parameter[HIS_SC3].push_back(-0.520875);
    1957           8 :   parameter[HIS_SC3].push_back(-1.62949);
    1958           8 :   parameter[HIS_SC3].push_back(0.902379);
    1959           8 :   parameter[HIS_SC3].push_back(-0.139957);
    1960             : 
    1961           8 :   parameter[ILE_BB].push_back(10.699);
    1962           8 :   parameter[ILE_BB].push_back(-0.0188962);
    1963           8 :   parameter[ILE_BB].push_back(1.217);
    1964           8 :   parameter[ILE_BB].push_back(0.242481);
    1965           8 :   parameter[ILE_BB].push_back(-3.13898);
    1966           8 :   parameter[ILE_BB].push_back(2.07916);
    1967           8 :   parameter[ILE_BB].push_back(-0.392574);
    1968             : 
    1969           8 :   parameter[ILE_SC1].push_back(-4.448);
    1970           8 :   parameter[ILE_SC1].push_back(1.20996);
    1971           8 :   parameter[ILE_SC1].push_back(11.5141);
    1972           8 :   parameter[ILE_SC1].push_back(6.98895);
    1973           8 :   parameter[ILE_SC1].push_back(-19.1948);
    1974           8 :   parameter[ILE_SC1].push_back(9.89207);
    1975           8 :   parameter[ILE_SC1].push_back(-1.60877);
    1976             : 
    1977           8 :   parameter[LEU_BB].push_back(10.692);
    1978           8 :   parameter[LEU_BB].push_back(-0.0414917);
    1979           8 :   parameter[LEU_BB].push_back(1.1077);
    1980           8 :   parameter[LEU_BB].push_back(-0.288062);
    1981           8 :   parameter[LEU_BB].push_back(-2.17187);
    1982           8 :   parameter[LEU_BB].push_back(1.59879);
    1983           8 :   parameter[LEU_BB].push_back(-0.318545);
    1984             : 
    1985           8 :   parameter[LEU_SC1].push_back(-4.448);
    1986           8 :   parameter[LEU_SC1].push_back(2.1063);
    1987           8 :   parameter[LEU_SC1].push_back(6.72381);
    1988           8 :   parameter[LEU_SC1].push_back(14.6954);
    1989           8 :   parameter[LEU_SC1].push_back(-23.7197);
    1990           8 :   parameter[LEU_SC1].push_back(10.7247);
    1991           8 :   parameter[LEU_SC1].push_back(-1.59146);
    1992             : 
    1993           8 :   parameter[LYS_BB].push_back(10.706);
    1994           8 :   parameter[LYS_BB].push_back(-0.0468629);
    1995           8 :   parameter[LYS_BB].push_back(1.09477);
    1996           8 :   parameter[LYS_BB].push_back(-0.432751);
    1997           8 :   parameter[LYS_BB].push_back(-1.94335);
    1998           8 :   parameter[LYS_BB].push_back(1.49109);
    1999           8 :   parameter[LYS_BB].push_back(-0.302589);
    2000             : 
    2001           8 :   parameter[LYS_SC1].push_back(-2.796);
    2002           8 :   parameter[LYS_SC1].push_back(0.508044);
    2003           8 :   parameter[LYS_SC1].push_back(7.91436);
    2004           8 :   parameter[LYS_SC1].push_back(4.54097);
    2005           8 :   parameter[LYS_SC1].push_back(-10.8051);
    2006           8 :   parameter[LYS_SC1].push_back(4.96204);
    2007           8 :   parameter[LYS_SC1].push_back(-0.724414);
    2008             : 
    2009           8 :   parameter[LYS_SC2].push_back(3.070);
    2010           8 :   parameter[LYS_SC2].push_back(-0.0101448);
    2011           8 :   parameter[LYS_SC2].push_back(4.67994);
    2012           8 :   parameter[LYS_SC2].push_back(-0.792529);
    2013           8 :   parameter[LYS_SC2].push_back(-2.09142);
    2014           8 :   parameter[LYS_SC2].push_back(1.02933);
    2015           8 :   parameter[LYS_SC2].push_back(-0.137787);
    2016             : 
    2017           8 :   parameter[MET_BB].push_back(10.671);
    2018           8 :   parameter[MET_BB].push_back(-0.0433724);
    2019           8 :   parameter[MET_BB].push_back(1.13784);
    2020           8 :   parameter[MET_BB].push_back(-0.40768);
    2021           8 :   parameter[MET_BB].push_back(-2.00555);
    2022           8 :   parameter[MET_BB].push_back(1.51673);
    2023           8 :   parameter[MET_BB].push_back(-0.305547);
    2024             : 
    2025           8 :   parameter[MET_SC1].push_back(5.85);
    2026           8 :   parameter[MET_SC1].push_back(-0.0485798);
    2027           8 :   parameter[MET_SC1].push_back(17.0391);
    2028           8 :   parameter[MET_SC1].push_back(-3.65327);
    2029           8 :   parameter[MET_SC1].push_back(-13.174);
    2030           8 :   parameter[MET_SC1].push_back(8.68286);
    2031           8 :   parameter[MET_SC1].push_back(-1.56095);
    2032             : 
    2033           8 :   parameter[PHE_BB].push_back(10.741);
    2034           8 :   parameter[PHE_BB].push_back(-0.0317275);
    2035           8 :   parameter[PHE_BB].push_back(1.15599);
    2036           8 :   parameter[PHE_BB].push_back(0.0276187);
    2037           8 :   parameter[PHE_BB].push_back(-2.74757);
    2038           8 :   parameter[PHE_BB].push_back(1.88783);
    2039           8 :   parameter[PHE_BB].push_back(-0.363525);
    2040             : 
    2041           8 :   parameter[PHE_SC1].push_back(-0.636);
    2042           8 :   parameter[PHE_SC1].push_back(0.527882);
    2043           8 :   parameter[PHE_SC1].push_back(6.77612);
    2044           8 :   parameter[PHE_SC1].push_back(3.18508);
    2045           8 :   parameter[PHE_SC1].push_back(-8.92826);
    2046           8 :   parameter[PHE_SC1].push_back(4.29752);
    2047           8 :   parameter[PHE_SC1].push_back(-0.65187);
    2048             : 
    2049           8 :   parameter[PHE_SC2].push_back(-0.424);
    2050           8 :   parameter[PHE_SC2].push_back(0.389174);
    2051           8 :   parameter[PHE_SC2].push_back(4.11761);
    2052           8 :   parameter[PHE_SC2].push_back(2.29527);
    2053           8 :   parameter[PHE_SC2].push_back(-4.7652);
    2054           8 :   parameter[PHE_SC2].push_back(1.97023);
    2055           8 :   parameter[PHE_SC2].push_back(-0.262318);
    2056             : 
    2057           8 :   parameter[PHE_SC3].push_back(-0.424);
    2058           8 :   parameter[PHE_SC3].push_back(0.38927);
    2059           8 :   parameter[PHE_SC3].push_back(4.11708);
    2060           8 :   parameter[PHE_SC3].push_back(2.29623);
    2061           8 :   parameter[PHE_SC3].push_back(-4.76592);
    2062           8 :   parameter[PHE_SC3].push_back(1.97055);
    2063           8 :   parameter[PHE_SC3].push_back(-0.262381);
    2064             : 
    2065           8 :   parameter[PRO_BB].push_back(11.434);
    2066           8 :   parameter[PRO_BB].push_back(-0.033323);
    2067           8 :   parameter[PRO_BB].push_back(0.472014);
    2068           8 :   parameter[PRO_BB].push_back(-0.290854);
    2069           8 :   parameter[PRO_BB].push_back(-1.81409);
    2070           8 :   parameter[PRO_BB].push_back(1.39751);
    2071           8 :   parameter[PRO_BB].push_back(-0.280407);
    2072             : 
    2073           8 :   parameter[PRO_SC1].push_back(-2.796);
    2074           8 :   parameter[PRO_SC1].push_back(0.95668);
    2075           8 :   parameter[PRO_SC1].push_back(6.84197);
    2076           8 :   parameter[PRO_SC1].push_back(6.43774);
    2077           8 :   parameter[PRO_SC1].push_back(-12.5068);
    2078           8 :   parameter[PRO_SC1].push_back(5.64597);
    2079           8 :   parameter[PRO_SC1].push_back(-0.825206);
    2080             : 
    2081           8 :   parameter[SER_BB].push_back(10.699);
    2082           8 :   parameter[SER_BB].push_back(-0.0325828);
    2083           8 :   parameter[SER_BB].push_back(1.20329);
    2084           8 :   parameter[SER_BB].push_back(-0.0674351);
    2085           8 :   parameter[SER_BB].push_back(-2.60749);
    2086           8 :   parameter[SER_BB].push_back(1.80318);
    2087           8 :   parameter[SER_BB].push_back(-0.346803);
    2088             : 
    2089           8 :   parameter[SER_SC1].push_back(3.298);
    2090           8 :   parameter[SER_SC1].push_back(-0.0366801);
    2091           8 :   parameter[SER_SC1].push_back(5.11077);
    2092           8 :   parameter[SER_SC1].push_back(-1.46774);
    2093           8 :   parameter[SER_SC1].push_back(-1.48421);
    2094           8 :   parameter[SER_SC1].push_back(0.800326);
    2095           8 :   parameter[SER_SC1].push_back(-0.108314);
    2096             : 
    2097           8 :   parameter[THR_BB].push_back(10.697);
    2098           8 :   parameter[THR_BB].push_back(-0.0242955);
    2099           8 :   parameter[THR_BB].push_back(1.24671);
    2100           8 :   parameter[THR_BB].push_back(0.146423);
    2101           8 :   parameter[THR_BB].push_back(-2.97429);
    2102           8 :   parameter[THR_BB].push_back(1.97513);
    2103           8 :   parameter[THR_BB].push_back(-0.371479);
    2104             : 
    2105           8 :   parameter[THR_SC1].push_back(2.366);
    2106           8 :   parameter[THR_SC1].push_back(0.0297604);
    2107           8 :   parameter[THR_SC1].push_back(11.9216);
    2108           8 :   parameter[THR_SC1].push_back(-9.32503);
    2109           8 :   parameter[THR_SC1].push_back(1.9396);
    2110           8 :   parameter[THR_SC1].push_back(0.0804861);
    2111           8 :   parameter[THR_SC1].push_back(-0.0302721);
    2112             : 
    2113           8 :   parameter[TRP_BB].push_back(10.689);
    2114           8 :   parameter[TRP_BB].push_back(-0.0265879);
    2115           8 :   parameter[TRP_BB].push_back(1.17819);
    2116           8 :   parameter[TRP_BB].push_back(0.0386457);
    2117           8 :   parameter[TRP_BB].push_back(-2.75634);
    2118           8 :   parameter[TRP_BB].push_back(1.88065);
    2119           8 :   parameter[TRP_BB].push_back(-0.360217);
    2120             : 
    2121           8 :   parameter[TRP_SC1].push_back(0.084);
    2122           8 :   parameter[TRP_SC1].push_back(0.752407);
    2123           8 :   parameter[TRP_SC1].push_back(5.3802);
    2124           8 :   parameter[TRP_SC1].push_back(4.09281);
    2125           8 :   parameter[TRP_SC1].push_back(-9.28029);
    2126           8 :   parameter[TRP_SC1].push_back(4.45923);
    2127           8 :   parameter[TRP_SC1].push_back(-0.689008);
    2128             : 
    2129           8 :   parameter[TRP_SC2].push_back(5.739);
    2130           8 :   parameter[TRP_SC2].push_back(0.0298492);
    2131           8 :   parameter[TRP_SC2].push_back(4.60446);
    2132           8 :   parameter[TRP_SC2].push_back(1.34463);
    2133           8 :   parameter[TRP_SC2].push_back(-5.69968);
    2134           8 :   parameter[TRP_SC2].push_back(2.84924);
    2135           8 :   parameter[TRP_SC2].push_back(-0.433781);
    2136             : 
    2137           8 :   parameter[TRP_SC3].push_back(-0.424);
    2138           8 :   parameter[TRP_SC3].push_back(0.388576);
    2139           8 :   parameter[TRP_SC3].push_back(4.11859);
    2140           8 :   parameter[TRP_SC3].push_back(2.29485);
    2141           8 :   parameter[TRP_SC3].push_back(-4.76255);
    2142           8 :   parameter[TRP_SC3].push_back(1.96849);
    2143           8 :   parameter[TRP_SC3].push_back(-0.262015);
    2144             : 
    2145           8 :   parameter[TRP_SC4].push_back(-0.424);
    2146           8 :   parameter[TRP_SC4].push_back(0.387685);
    2147           8 :   parameter[TRP_SC4].push_back(4.12153);
    2148           8 :   parameter[TRP_SC4].push_back(2.29144);
    2149           8 :   parameter[TRP_SC4].push_back(-4.7589);
    2150           8 :   parameter[TRP_SC4].push_back(1.96686);
    2151           8 :   parameter[TRP_SC4].push_back(-0.261786);
    2152             : 
    2153           8 :   parameter[TYR_BB].push_back(10.689);
    2154           8 :   parameter[TYR_BB].push_back(-0.0193526);
    2155           8 :   parameter[TYR_BB].push_back(1.18241);
    2156           8 :   parameter[TYR_BB].push_back(0.207318);
    2157           8 :   parameter[TYR_BB].push_back(-3.0041);
    2158           8 :   parameter[TYR_BB].push_back(1.99335);
    2159           8 :   parameter[TYR_BB].push_back(-0.376482);
    2160             : 
    2161           8 :   parameter[TYR_SC1].push_back(-0.636);
    2162           8 :   parameter[TYR_SC1].push_back(0.528902);
    2163           8 :   parameter[TYR_SC1].push_back(6.78168);
    2164           8 :   parameter[TYR_SC1].push_back(3.17769);
    2165           8 :   parameter[TYR_SC1].push_back(-8.93667);
    2166           8 :   parameter[TYR_SC1].push_back(4.30692);
    2167           8 :   parameter[TYR_SC1].push_back(-0.653993);
    2168             : 
    2169           8 :   parameter[TYR_SC2].push_back(-0.424);
    2170           8 :   parameter[TYR_SC2].push_back(0.388811);
    2171           8 :   parameter[TYR_SC2].push_back(4.11851);
    2172           8 :   parameter[TYR_SC2].push_back(2.29545);
    2173           8 :   parameter[TYR_SC2].push_back(-4.7668);
    2174           8 :   parameter[TYR_SC2].push_back(1.97131);
    2175           8 :   parameter[TYR_SC2].push_back(-0.262534);
    2176             : 
    2177           8 :   parameter[TYR_SC3].push_back(4.526);
    2178           8 :   parameter[TYR_SC3].push_back(-0.00381305);
    2179           8 :   parameter[TYR_SC3].push_back(5.8567);
    2180           8 :   parameter[TYR_SC3].push_back(-0.214086);
    2181           8 :   parameter[TYR_SC3].push_back(-4.63649);
    2182           8 :   parameter[TYR_SC3].push_back(2.52869);
    2183           8 :   parameter[TYR_SC3].push_back(-0.39894);
    2184             : 
    2185           8 :   parameter[VAL_BB].push_back(10.691);
    2186           8 :   parameter[VAL_BB].push_back(-0.0162929);
    2187           8 :   parameter[VAL_BB].push_back(1.24446);
    2188           8 :   parameter[VAL_BB].push_back(0.307914);
    2189           8 :   parameter[VAL_BB].push_back(-3.27446);
    2190           8 :   parameter[VAL_BB].push_back(2.14788);
    2191           8 :   parameter[VAL_BB].push_back(-0.403259);
    2192             : 
    2193           8 :   parameter[VAL_SC1].push_back(-3.516);
    2194           8 :   parameter[VAL_SC1].push_back(1.62307);
    2195           8 :   parameter[VAL_SC1].push_back(5.43064);
    2196           8 :   parameter[VAL_SC1].push_back(9.28809);
    2197           8 :   parameter[VAL_SC1].push_back(-14.9927);
    2198           8 :   parameter[VAL_SC1].push_back(6.6133);
    2199           8 :   parameter[VAL_SC1].push_back(-0.964977);
    2200             : 
    2201           8 :   parameter[A_BB1].push_back(32.88500000);
    2202           8 :   parameter[A_BB1].push_back(0.08339900);
    2203           8 :   parameter[A_BB1].push_back(-7.36054400);
    2204           8 :   parameter[A_BB1].push_back(2.19220300);
    2205           8 :   parameter[A_BB1].push_back(-3.56523400);
    2206           8 :   parameter[A_BB1].push_back(2.33326900);
    2207           8 :   parameter[A_BB1].push_back(-0.39785500);
    2208             : 
    2209           8 :   parameter[A_BB2].push_back(3.80600000);
    2210           8 :   parameter[A_BB2].push_back(-0.10727600);
    2211           8 :   parameter[A_BB2].push_back(9.58854100);
    2212           8 :   parameter[A_BB2].push_back(-6.23740500);
    2213           8 :   parameter[A_BB2].push_back(-0.48267300);
    2214           8 :   parameter[A_BB2].push_back(1.14119500);
    2215           8 :   parameter[A_BB2].push_back(-0.21385600);
    2216             : 
    2217           8 :   parameter[A_BB3].push_back(3.59400000);
    2218           8 :   parameter[A_BB3].push_back(0.04537300);
    2219           8 :   parameter[A_BB3].push_back(9.59178900);
    2220           8 :   parameter[A_BB3].push_back(-1.29202200);
    2221           8 :   parameter[A_BB3].push_back(-7.10851000);
    2222           8 :   parameter[A_BB3].push_back(4.05571200);
    2223           8 :   parameter[A_BB3].push_back(-0.63372500);
    2224             : 
    2225           8 :   parameter[A_SC1].push_back(6.67100000);
    2226           8 :   parameter[A_SC1].push_back(-0.00855300);
    2227           8 :   parameter[A_SC1].push_back(1.63222400);
    2228           8 :   parameter[A_SC1].push_back(-0.06466200);
    2229           8 :   parameter[A_SC1].push_back(-1.48694200);
    2230           8 :   parameter[A_SC1].push_back(0.78544600);
    2231           8 :   parameter[A_SC1].push_back(-0.12083500);
    2232             : 
    2233           8 :   parameter[A_SC2].push_back(5.95100000);
    2234           8 :   parameter[A_SC2].push_back(-0.02606600);
    2235           8 :   parameter[A_SC2].push_back(2.54399900);
    2236           8 :   parameter[A_SC2].push_back(-0.48436900);
    2237           8 :   parameter[A_SC2].push_back(-1.55357400);
    2238           8 :   parameter[A_SC2].push_back(0.86466900);
    2239           8 :   parameter[A_SC2].push_back(-0.13509000);
    2240             : 
    2241           8 :   parameter[A_SC3].push_back(11.39400000);
    2242           8 :   parameter[A_SC3].push_back(0.00871300);
    2243           8 :   parameter[A_SC3].push_back(-0.23891300);
    2244           8 :   parameter[A_SC3].push_back(0.48919400);
    2245           8 :   parameter[A_SC3].push_back(-1.75289400);
    2246           8 :   parameter[A_SC3].push_back(0.99267500);
    2247           8 :   parameter[A_SC3].push_back(-0.16291300);
    2248             : 
    2249           8 :   parameter[A_SC4].push_back(6.45900000);
    2250           8 :   parameter[A_SC4].push_back(0.01990600);
    2251           8 :   parameter[A_SC4].push_back(4.17970400);
    2252           8 :   parameter[A_SC4].push_back(0.97629900);
    2253           8 :   parameter[A_SC4].push_back(-5.03297800);
    2254           8 :   parameter[A_SC4].push_back(2.55576700);
    2255           8 :   parameter[A_SC4].push_back(-0.39150500);
    2256             : 
    2257           8 :   parameter[A_3TE].push_back(4.23000000);
    2258           8 :   parameter[A_3TE].push_back(0.00064800);
    2259           8 :   parameter[A_3TE].push_back(0.92124600);
    2260           8 :   parameter[A_3TE].push_back(0.08064300);
    2261           8 :   parameter[A_3TE].push_back(-0.39054400);
    2262           8 :   parameter[A_3TE].push_back(0.12429100);
    2263           8 :   parameter[A_3TE].push_back(-0.01122700);
    2264             : 
    2265           8 :   parameter[A_5TE].push_back(4.23000000);
    2266           8 :   parameter[A_5TE].push_back(0.00039300);
    2267           8 :   parameter[A_5TE].push_back(0.92305100);
    2268           8 :   parameter[A_5TE].push_back(0.07747500);
    2269           8 :   parameter[A_5TE].push_back(-0.38792100);
    2270           8 :   parameter[A_5TE].push_back(0.12323800);
    2271           8 :   parameter[A_5TE].push_back(-0.01106600);
    2272             : 
    2273           8 :   parameter[A_TE3].push_back(7.82400000);
    2274           8 :   parameter[A_TE3].push_back(-0.04881000);
    2275           8 :   parameter[A_TE3].push_back(8.21557900);
    2276           8 :   parameter[A_TE3].push_back(-0.89491400);
    2277           8 :   parameter[A_TE3].push_back(-9.54293700);
    2278           8 :   parameter[A_TE3].push_back(6.33122200);
    2279           8 :   parameter[A_TE3].push_back(-1.16672900);
    2280             : 
    2281           8 :   parameter[A_TE5].push_back(8.03600000);
    2282           8 :   parameter[A_TE5].push_back(0.01641200);
    2283           8 :   parameter[A_TE5].push_back(5.14902200);
    2284           8 :   parameter[A_TE5].push_back(0.83419700);
    2285           8 :   parameter[A_TE5].push_back(-7.59068300);
    2286           8 :   parameter[A_TE5].push_back(4.52063200);
    2287           8 :   parameter[A_TE5].push_back(-0.78260800);
    2288             : 
    2289           8 :   parameter[C_BB1].push_back(32.88500000);
    2290           8 :   parameter[C_BB1].push_back(0.08311100);
    2291           8 :   parameter[C_BB1].push_back(-7.35432100);
    2292           8 :   parameter[C_BB1].push_back(2.18610000);
    2293           8 :   parameter[C_BB1].push_back(-3.55788300);
    2294           8 :   parameter[C_BB1].push_back(2.32918700);
    2295           8 :   parameter[C_BB1].push_back(-0.39720000);
    2296             : 
    2297           8 :   parameter[C_BB2].push_back(3.80600000);
    2298           8 :   parameter[C_BB2].push_back(-0.10808100);
    2299           8 :   parameter[C_BB2].push_back(9.61612600);
    2300           8 :   parameter[C_BB2].push_back(-6.28595400);
    2301           8 :   parameter[C_BB2].push_back(-0.45187000);
    2302           8 :   parameter[C_BB2].push_back(1.13326000);
    2303           8 :   parameter[C_BB2].push_back(-0.21320300);
    2304             : 
    2305           8 :   parameter[C_BB3].push_back(3.59400000);
    2306           8 :   parameter[C_BB3].push_back(0.04484200);
    2307           8 :   parameter[C_BB3].push_back(9.61919800);
    2308           8 :   parameter[C_BB3].push_back(-1.33582800);
    2309           8 :   parameter[C_BB3].push_back(-7.07200400);
    2310           8 :   parameter[C_BB3].push_back(4.03952900);
    2311           8 :   parameter[C_BB3].push_back(-0.63098200);
    2312             : 
    2313           8 :   parameter[C_SC1].push_back(5.95100000);
    2314           8 :   parameter[C_SC1].push_back(-0.02911300);
    2315           8 :   parameter[C_SC1].push_back(2.59700400);
    2316           8 :   parameter[C_SC1].push_back(-0.55507700);
    2317           8 :   parameter[C_SC1].push_back(-1.56344600);
    2318           8 :   parameter[C_SC1].push_back(0.88956200);
    2319           8 :   parameter[C_SC1].push_back(-0.14061300);
    2320             : 
    2321           8 :   parameter[C_SC2].push_back(11.62100000);
    2322           8 :   parameter[C_SC2].push_back(0.01366100);
    2323           8 :   parameter[C_SC2].push_back(-0.25959200);
    2324           8 :   parameter[C_SC2].push_back(0.48918300);
    2325           8 :   parameter[C_SC2].push_back(-1.52550500);
    2326           8 :   parameter[C_SC2].push_back(0.83644100);
    2327           8 :   parameter[C_SC2].push_back(-0.13407300);
    2328             : 
    2329           8 :   parameter[C_SC3].push_back(5.01900000);
    2330           8 :   parameter[C_SC3].push_back(-0.03276100);
    2331           8 :   parameter[C_SC3].push_back(5.53776900);
    2332           8 :   parameter[C_SC3].push_back(-0.95105000);
    2333           8 :   parameter[C_SC3].push_back(-3.71130800);
    2334           8 :   parameter[C_SC3].push_back(2.16146000);
    2335           8 :   parameter[C_SC3].push_back(-0.34918600);
    2336             : 
    2337           8 :   parameter[C_3TE].push_back(4.23000000);
    2338           8 :   parameter[C_3TE].push_back(0.00057300);
    2339           8 :   parameter[C_3TE].push_back(0.92174800);
    2340           8 :   parameter[C_3TE].push_back(0.07964500);
    2341           8 :   parameter[C_3TE].push_back(-0.38965700);
    2342           8 :   parameter[C_3TE].push_back(0.12392500);
    2343           8 :   parameter[C_3TE].push_back(-0.01117000);
    2344             : 
    2345           8 :   parameter[C_5TE].push_back(4.23000000);
    2346           8 :   parameter[C_5TE].push_back(0.00071000);
    2347           8 :   parameter[C_5TE].push_back(0.92082800);
    2348           8 :   parameter[C_5TE].push_back(0.08150600);
    2349           8 :   parameter[C_5TE].push_back(-0.39127000);
    2350           8 :   parameter[C_5TE].push_back(0.12455900);
    2351           8 :   parameter[C_5TE].push_back(-0.01126300);
    2352             : 
    2353           8 :   parameter[C_TE3].push_back(7.82400000);
    2354           8 :   parameter[C_TE3].push_back(-0.05848300);
    2355           8 :   parameter[C_TE3].push_back(8.29319900);
    2356           8 :   parameter[C_TE3].push_back(-1.12563800);
    2357           8 :   parameter[C_TE3].push_back(-9.42197600);
    2358           8 :   parameter[C_TE3].push_back(6.35441700);
    2359           8 :   parameter[C_TE3].push_back(-1.18356900);
    2360             : 
    2361           8 :   parameter[C_TE5].push_back(8.03600000);
    2362           8 :   parameter[C_TE5].push_back(0.00493500);
    2363           8 :   parameter[C_TE5].push_back(4.92622000);
    2364           8 :   parameter[C_TE5].push_back(0.64810700);
    2365           8 :   parameter[C_TE5].push_back(-7.05100000);
    2366           8 :   parameter[C_TE5].push_back(4.26064400);
    2367           8 :   parameter[C_TE5].push_back(-0.74819100);
    2368             : 
    2369           8 :   parameter[G_BB1].push_back(32.88500000);
    2370           8 :   parameter[G_BB1].push_back(0.08325400);
    2371           8 :   parameter[G_BB1].push_back(-7.35736000);
    2372           8 :   parameter[G_BB1].push_back(2.18914800);
    2373           8 :   parameter[G_BB1].push_back(-3.56154800);
    2374           8 :   parameter[G_BB1].push_back(2.33120600);
    2375           8 :   parameter[G_BB1].push_back(-0.39752300);
    2376             : 
    2377           8 :   parameter[G_BB2].push_back(3.80600000);
    2378           8 :   parameter[G_BB2].push_back(-0.10788300);
    2379           8 :   parameter[G_BB2].push_back(9.60930800);
    2380           8 :   parameter[G_BB2].push_back(-6.27402500);
    2381           8 :   parameter[G_BB2].push_back(-0.46192700);
    2382           8 :   parameter[G_BB2].push_back(1.13737000);
    2383           8 :   parameter[G_BB2].push_back(-0.21383100);
    2384             : 
    2385           8 :   parameter[G_BB3].push_back(3.59400000);
    2386           8 :   parameter[G_BB3].push_back(0.04514500);
    2387           8 :   parameter[G_BB3].push_back(9.61234700);
    2388           8 :   parameter[G_BB3].push_back(-1.31542100);
    2389           8 :   parameter[G_BB3].push_back(-7.09150500);
    2390           8 :   parameter[G_BB3].push_back(4.04706200);
    2391           8 :   parameter[G_BB3].push_back(-0.63201000);
    2392             : 
    2393           8 :   parameter[G_SC1].push_back(6.67100000);
    2394           8 :   parameter[G_SC1].push_back(-0.00863200);
    2395           8 :   parameter[G_SC1].push_back(1.63252300);
    2396           8 :   parameter[G_SC1].push_back(-0.06567200);
    2397           8 :   parameter[G_SC1].push_back(-1.48680500);
    2398           8 :   parameter[G_SC1].push_back(0.78565600);
    2399           8 :   parameter[G_SC1].push_back(-0.12088900);
    2400             : 
    2401           8 :   parameter[G_SC2].push_back(11.39400000);
    2402           8 :   parameter[G_SC2].push_back(0.00912200);
    2403           8 :   parameter[G_SC2].push_back(-0.22869000);
    2404           8 :   parameter[G_SC2].push_back(0.49616400);
    2405           8 :   parameter[G_SC2].push_back(-1.75039000);
    2406           8 :   parameter[G_SC2].push_back(0.98649200);
    2407           8 :   parameter[G_SC2].push_back(-0.16141600);
    2408             : 
    2409           8 :   parameter[G_SC3].push_back(10.90100000);
    2410           8 :   parameter[G_SC3].push_back(0.02208700);
    2411           8 :   parameter[G_SC3].push_back(0.17032800);
    2412           8 :   parameter[G_SC3].push_back(0.73280800);
    2413           8 :   parameter[G_SC3].push_back(-1.95292000);
    2414           8 :   parameter[G_SC3].push_back(0.98357600);
    2415           8 :   parameter[G_SC3].push_back(-0.14790900);
    2416             : 
    2417           8 :   parameter[G_SC4].push_back(6.45900000);
    2418           8 :   parameter[G_SC4].push_back(0.02023700);
    2419           8 :   parameter[G_SC4].push_back(4.17655400);
    2420           8 :   parameter[G_SC4].push_back(0.98731800);
    2421           8 :   parameter[G_SC4].push_back(-5.04352800);
    2422           8 :   parameter[G_SC4].push_back(2.56059400);
    2423           8 :   parameter[G_SC4].push_back(-0.39234300);
    2424             : 
    2425           8 :   parameter[G_3TE].push_back(4.23000000);
    2426           8 :   parameter[G_3TE].push_back(0.00066300);
    2427           8 :   parameter[G_3TE].push_back(0.92118800);
    2428           8 :   parameter[G_3TE].push_back(0.08062700);
    2429           8 :   parameter[G_3TE].push_back(-0.39041600);
    2430           8 :   parameter[G_3TE].push_back(0.12419400);
    2431           8 :   parameter[G_3TE].push_back(-0.01120500);
    2432             : 
    2433           8 :   parameter[G_5TE].push_back(4.23000000);
    2434           8 :   parameter[G_5TE].push_back(0.00062800);
    2435           8 :   parameter[G_5TE].push_back(0.92133500);
    2436           8 :   parameter[G_5TE].push_back(0.08029900);
    2437           8 :   parameter[G_5TE].push_back(-0.39015300);
    2438           8 :   parameter[G_5TE].push_back(0.12411600);
    2439           8 :   parameter[G_5TE].push_back(-0.01119900);
    2440             : 
    2441           8 :   parameter[G_TE3].push_back(7.82400000);
    2442           8 :   parameter[G_TE3].push_back(-0.05177400);
    2443           8 :   parameter[G_TE3].push_back(8.34606700);
    2444           8 :   parameter[G_TE3].push_back(-1.02936300);
    2445           8 :   parameter[G_TE3].push_back(-9.55211900);
    2446           8 :   parameter[G_TE3].push_back(6.37776600);
    2447           8 :   parameter[G_TE3].push_back(-1.17898000);
    2448             : 
    2449           8 :   parameter[G_TE5].push_back(8.03600000);
    2450           8 :   parameter[G_TE5].push_back(0.00525100);
    2451           8 :   parameter[G_TE5].push_back(4.71070600);
    2452           8 :   parameter[G_TE5].push_back(0.66746900);
    2453           8 :   parameter[G_TE5].push_back(-6.72538700);
    2454           8 :   parameter[G_TE5].push_back(4.03644100);
    2455           8 :   parameter[G_TE5].push_back(-0.70605700);
    2456             : 
    2457           8 :   parameter[U_BB1].push_back(32.88500000);
    2458           8 :   parameter[U_BB1].push_back(0.08321400);
    2459           8 :   parameter[U_BB1].push_back(-7.35634900);
    2460           8 :   parameter[U_BB1].push_back(2.18826800);
    2461           8 :   parameter[U_BB1].push_back(-3.56047400);
    2462           8 :   parameter[U_BB1].push_back(2.33064700);
    2463           8 :   parameter[U_BB1].push_back(-0.39744000);
    2464             : 
    2465           8 :   parameter[U_BB2].push_back(3.80600000);
    2466           8 :   parameter[U_BB2].push_back(-0.10773100);
    2467           8 :   parameter[U_BB2].push_back(9.60099900);
    2468           8 :   parameter[U_BB2].push_back(-6.26131900);
    2469           8 :   parameter[U_BB2].push_back(-0.46668300);
    2470           8 :   parameter[U_BB2].push_back(1.13698100);
    2471           8 :   parameter[U_BB2].push_back(-0.21351600);
    2472             : 
    2473           8 :   parameter[U_BB3].push_back(3.59400000);
    2474           8 :   parameter[U_BB3].push_back(0.04544300);
    2475           8 :   parameter[U_BB3].push_back(9.59625900);
    2476           8 :   parameter[U_BB3].push_back(-1.29222200);
    2477           8 :   parameter[U_BB3].push_back(-7.11143200);
    2478           8 :   parameter[U_BB3].push_back(4.05687700);
    2479           8 :   parameter[U_BB3].push_back(-0.63382800);
    2480             : 
    2481           8 :   parameter[U_SC1].push_back(5.95100000);
    2482           8 :   parameter[U_SC1].push_back(-0.02924500);
    2483           8 :   parameter[U_SC1].push_back(2.59668700);
    2484           8 :   parameter[U_SC1].push_back(-0.56118700);
    2485           8 :   parameter[U_SC1].push_back(-1.56477100);
    2486           8 :   parameter[U_SC1].push_back(0.89265100);
    2487           8 :   parameter[U_SC1].push_back(-0.14130800);
    2488             : 
    2489           8 :   parameter[U_SC2].push_back(10.90100000);
    2490           8 :   parameter[U_SC2].push_back(0.02178900);
    2491           8 :   parameter[U_SC2].push_back(0.18839000);
    2492           8 :   parameter[U_SC2].push_back(0.72223100);
    2493           8 :   parameter[U_SC2].push_back(-1.92581600);
    2494           8 :   parameter[U_SC2].push_back(0.96654300);
    2495           8 :   parameter[U_SC2].push_back(-0.14501300);
    2496             : 
    2497           8 :   parameter[U_SC3].push_back(5.24600000);
    2498           8 :   parameter[U_SC3].push_back(-0.04586500);
    2499           8 :   parameter[U_SC3].push_back(5.89978100);
    2500           8 :   parameter[U_SC3].push_back(-1.50664700);
    2501           8 :   parameter[U_SC3].push_back(-3.17054400);
    2502           8 :   parameter[U_SC3].push_back(1.93717100);
    2503           8 :   parameter[U_SC3].push_back(-0.31701000);
    2504             : 
    2505           8 :   parameter[U_3TE].push_back(4.23000000);
    2506           8 :   parameter[U_3TE].push_back(0.00067500);
    2507           8 :   parameter[U_3TE].push_back(0.92102300);
    2508           8 :   parameter[U_3TE].push_back(0.08100800);
    2509           8 :   parameter[U_3TE].push_back(-0.39084300);
    2510           8 :   parameter[U_3TE].push_back(0.12441900);
    2511           8 :   parameter[U_3TE].push_back(-0.01124900);
    2512             : 
    2513           8 :   parameter[U_5TE].push_back(4.23000000);
    2514           8 :   parameter[U_5TE].push_back(0.00059000);
    2515           8 :   parameter[U_5TE].push_back(0.92154600);
    2516           8 :   parameter[U_5TE].push_back(0.07968200);
    2517           8 :   parameter[U_5TE].push_back(-0.38950100);
    2518           8 :   parameter[U_5TE].push_back(0.12382500);
    2519           8 :   parameter[U_5TE].push_back(-0.01115100);
    2520             : 
    2521           8 :   parameter[U_TE3].push_back(7.82400000);
    2522           8 :   parameter[U_TE3].push_back(-0.02968100);
    2523           8 :   parameter[U_TE3].push_back(7.93783200);
    2524           8 :   parameter[U_TE3].push_back(-0.33078100);
    2525           8 :   parameter[U_TE3].push_back(-10.14120200);
    2526           8 :   parameter[U_TE3].push_back(6.63334700);
    2527           8 :   parameter[U_TE3].push_back(-1.22111200);
    2528             : 
    2529           8 :   parameter[U_TE5].push_back(8.03600000);
    2530           8 :   parameter[U_TE5].push_back(-0.00909700);
    2531           8 :   parameter[U_TE5].push_back(4.33193500);
    2532           8 :   parameter[U_TE5].push_back(0.43416500);
    2533           8 :   parameter[U_TE5].push_back(-5.80831400);
    2534           8 :   parameter[U_TE5].push_back(3.52438800);
    2535           8 :   parameter[U_TE5].push_back(-0.62382400);
    2536             : 
    2537           8 :   parameter[DA_BB1].push_back(32.88500000);
    2538           8 :   parameter[DA_BB1].push_back(0.08179900);
    2539           8 :   parameter[DA_BB1].push_back(-7.31735900);
    2540           8 :   parameter[DA_BB1].push_back(2.15614500);
    2541           8 :   parameter[DA_BB1].push_back(-3.52263200);
    2542           8 :   parameter[DA_BB1].push_back(2.30604700);
    2543           8 :   parameter[DA_BB1].push_back(-0.39270100);
    2544             : 
    2545           8 :   parameter[DA_BB2].push_back(3.80600000);
    2546           8 :   parameter[DA_BB2].push_back(-0.10597700);
    2547           8 :   parameter[DA_BB2].push_back(9.52537500);
    2548           8 :   parameter[DA_BB2].push_back(-6.12991000);
    2549           8 :   parameter[DA_BB2].push_back(-0.54092600);
    2550           8 :   parameter[DA_BB2].push_back(1.15429100);
    2551           8 :   parameter[DA_BB2].push_back(-0.21503500);
    2552             : 
    2553           8 :   parameter[DA_BB3].push_back(-1.35600000);
    2554           8 :   parameter[DA_BB3].push_back(0.58928300);
    2555           8 :   parameter[DA_BB3].push_back(6.71894100);
    2556           8 :   parameter[DA_BB3].push_back(4.14050900);
    2557           8 :   parameter[DA_BB3].push_back(-9.65859900);
    2558           8 :   parameter[DA_BB3].push_back(4.43185000);
    2559           8 :   parameter[DA_BB3].push_back(-0.64657300);
    2560             : 
    2561           8 :   parameter[DA_SC1].push_back(6.67100000);
    2562           8 :   parameter[DA_SC1].push_back(-0.00871400);
    2563           8 :   parameter[DA_SC1].push_back(1.63289100);
    2564           8 :   parameter[DA_SC1].push_back(-0.06637700);
    2565           8 :   parameter[DA_SC1].push_back(-1.48632900);
    2566           8 :   parameter[DA_SC1].push_back(0.78551800);
    2567           8 :   parameter[DA_SC1].push_back(-0.12087300);
    2568             : 
    2569           8 :   parameter[DA_SC2].push_back(5.95100000);
    2570           8 :   parameter[DA_SC2].push_back(-0.02634300);
    2571           8 :   parameter[DA_SC2].push_back(2.54864300);
    2572           8 :   parameter[DA_SC2].push_back(-0.49015800);
    2573           8 :   parameter[DA_SC2].push_back(-1.55386900);
    2574           8 :   parameter[DA_SC2].push_back(0.86630200);
    2575           8 :   parameter[DA_SC2].push_back(-0.13546200);
    2576             : 
    2577           8 :   parameter[DA_SC3].push_back(11.39400000);
    2578           8 :   parameter[DA_SC3].push_back(0.00859500);
    2579           8 :   parameter[DA_SC3].push_back(-0.25471400);
    2580           8 :   parameter[DA_SC3].push_back(0.48718800);
    2581           8 :   parameter[DA_SC3].push_back(-1.74520000);
    2582           8 :   parameter[DA_SC3].push_back(0.99246200);
    2583           8 :   parameter[DA_SC3].push_back(-0.16351900);
    2584             : 
    2585           8 :   parameter[DA_SC4].push_back(6.45900000);
    2586           8 :   parameter[DA_SC4].push_back(0.01991800);
    2587           8 :   parameter[DA_SC4].push_back(4.17962300);
    2588           8 :   parameter[DA_SC4].push_back(0.97469100);
    2589           8 :   parameter[DA_SC4].push_back(-5.02950400);
    2590           8 :   parameter[DA_SC4].push_back(2.55371800);
    2591           8 :   parameter[DA_SC4].push_back(-0.39113400);
    2592             : 
    2593           8 :   parameter[DA_3TE].push_back(4.23000000);
    2594           8 :   parameter[DA_3TE].push_back(0.00062600);
    2595           8 :   parameter[DA_3TE].push_back(0.92142000);
    2596           8 :   parameter[DA_3TE].push_back(0.08016400);
    2597           8 :   parameter[DA_3TE].push_back(-0.39000300);
    2598           8 :   parameter[DA_3TE].push_back(0.12402500);
    2599           8 :   parameter[DA_3TE].push_back(-0.01117900);
    2600             : 
    2601           8 :   parameter[DA_5TE].push_back(4.23000000);
    2602           8 :   parameter[DA_5TE].push_back(0.00055500);
    2603           8 :   parameter[DA_5TE].push_back(0.92183900);
    2604           8 :   parameter[DA_5TE].push_back(0.07907600);
    2605           8 :   parameter[DA_5TE].push_back(-0.38895100);
    2606           8 :   parameter[DA_5TE].push_back(0.12359600);
    2607           8 :   parameter[DA_5TE].push_back(-0.01111600);
    2608             : 
    2609           8 :   parameter[DA_TE3].push_back(2.87400000);
    2610           8 :   parameter[DA_TE3].push_back(0.00112900);
    2611           8 :   parameter[DA_TE3].push_back(12.51167200);
    2612           8 :   parameter[DA_TE3].push_back(-7.67548000);
    2613           8 :   parameter[DA_TE3].push_back(-2.02234000);
    2614           8 :   parameter[DA_TE3].push_back(2.50837100);
    2615           8 :   parameter[DA_TE3].push_back(-0.49458500);
    2616             : 
    2617           8 :   parameter[DA_TE5].push_back(8.03600000);
    2618           8 :   parameter[DA_TE5].push_back(0.00473100);
    2619           8 :   parameter[DA_TE5].push_back(4.65554400);
    2620           8 :   parameter[DA_TE5].push_back(0.66424100);
    2621           8 :   parameter[DA_TE5].push_back(-6.62131300);
    2622           8 :   parameter[DA_TE5].push_back(3.96107400);
    2623           8 :   parameter[DA_TE5].push_back(-0.69075800);
    2624             : 
    2625           8 :   parameter[DC_BB1].push_back(32.88500000);
    2626           8 :   parameter[DC_BB1].push_back(0.08189900);
    2627           8 :   parameter[DC_BB1].push_back(-7.32493500);
    2628           8 :   parameter[DC_BB1].push_back(2.15976900);
    2629           8 :   parameter[DC_BB1].push_back(-3.52612100);
    2630           8 :   parameter[DC_BB1].push_back(2.31058600);
    2631           8 :   parameter[DC_BB1].push_back(-0.39402700);
    2632             : 
    2633           8 :   parameter[DC_BB2].push_back(3.80600000);
    2634           8 :   parameter[DC_BB2].push_back(-0.10559800);
    2635           8 :   parameter[DC_BB2].push_back(9.52527700);
    2636           8 :   parameter[DC_BB2].push_back(-6.12131700);
    2637           8 :   parameter[DC_BB2].push_back(-0.54899400);
    2638           8 :   parameter[DC_BB2].push_back(1.15592900);
    2639           8 :   parameter[DC_BB2].push_back(-0.21494500);
    2640             : 
    2641           8 :   parameter[DC_BB3].push_back(-1.35600000);
    2642           8 :   parameter[DC_BB3].push_back(0.55525700);
    2643           8 :   parameter[DC_BB3].push_back(6.80305500);
    2644           8 :   parameter[DC_BB3].push_back(4.05924700);
    2645           8 :   parameter[DC_BB3].push_back(-9.61034700);
    2646           8 :   parameter[DC_BB3].push_back(4.41253800);
    2647           8 :   parameter[DC_BB3].push_back(-0.64315100);
    2648             : 
    2649           8 :   parameter[DC_SC1].push_back(5.95100000);
    2650           8 :   parameter[DC_SC1].push_back(-0.02899900);
    2651           8 :   parameter[DC_SC1].push_back(2.59587800);
    2652           8 :   parameter[DC_SC1].push_back(-0.55388300);
    2653           8 :   parameter[DC_SC1].push_back(-1.56395100);
    2654           8 :   parameter[DC_SC1].push_back(0.88967400);
    2655           8 :   parameter[DC_SC1].push_back(-0.14062500);
    2656             : 
    2657           8 :   parameter[DC_SC2].push_back(11.62100000);
    2658           8 :   parameter[DC_SC2].push_back(0.01358100);
    2659           8 :   parameter[DC_SC2].push_back(-0.24913000);
    2660           8 :   parameter[DC_SC2].push_back(0.48787200);
    2661           8 :   parameter[DC_SC2].push_back(-1.52867300);
    2662           8 :   parameter[DC_SC2].push_back(0.83694900);
    2663           8 :   parameter[DC_SC2].push_back(-0.13395300);
    2664             : 
    2665           8 :   parameter[DC_SC3].push_back(5.01900000);
    2666           8 :   parameter[DC_SC3].push_back(-0.03298400);
    2667           8 :   parameter[DC_SC3].push_back(5.54242800);
    2668           8 :   parameter[DC_SC3].push_back(-0.96081500);
    2669           8 :   parameter[DC_SC3].push_back(-3.71051600);
    2670           8 :   parameter[DC_SC3].push_back(2.16500200);
    2671           8 :   parameter[DC_SC3].push_back(-0.35023400);
    2672             : 
    2673           8 :   parameter[DC_3TE].push_back(4.23000000);
    2674           8 :   parameter[DC_3TE].push_back(0.00055700);
    2675           8 :   parameter[DC_3TE].push_back(0.92181400);
    2676           8 :   parameter[DC_3TE].push_back(0.07924000);
    2677           8 :   parameter[DC_3TE].push_back(-0.38916400);
    2678           8 :   parameter[DC_3TE].push_back(0.12369900);
    2679           8 :   parameter[DC_3TE].push_back(-0.01113300);
    2680             : 
    2681           8 :   parameter[DC_5TE].push_back(4.23000000);
    2682           8 :   parameter[DC_5TE].push_back(0.00066500);
    2683           8 :   parameter[DC_5TE].push_back(0.92103900);
    2684           8 :   parameter[DC_5TE].push_back(0.08064600);
    2685           8 :   parameter[DC_5TE].push_back(-0.39034900);
    2686           8 :   parameter[DC_5TE].push_back(0.12417600);
    2687           8 :   parameter[DC_5TE].push_back(-0.01120600);
    2688             : 
    2689           8 :   parameter[DC_TE3].push_back(2.87400000);
    2690           8 :   parameter[DC_TE3].push_back(-0.05235500);
    2691           8 :   parameter[DC_TE3].push_back(13.09201200);
    2692           8 :   parameter[DC_TE3].push_back(-9.48128200);
    2693           8 :   parameter[DC_TE3].push_back(-0.14958600);
    2694           8 :   parameter[DC_TE3].push_back(1.75537200);
    2695           8 :   parameter[DC_TE3].push_back(-0.39347500);
    2696             : 
    2697           8 :   parameter[DC_TE5].push_back(8.03600000);
    2698           8 :   parameter[DC_TE5].push_back(-0.00513600);
    2699           8 :   parameter[DC_TE5].push_back(4.67705700);
    2700           8 :   parameter[DC_TE5].push_back(0.48333300);
    2701           8 :   parameter[DC_TE5].push_back(-6.34511000);
    2702           8 :   parameter[DC_TE5].push_back(3.83388500);
    2703           8 :   parameter[DC_TE5].push_back(-0.67367800);
    2704             : 
    2705           8 :   parameter[DG_BB1].push_back(32.88500000);
    2706           8 :   parameter[DG_BB1].push_back(0.08182900);
    2707           8 :   parameter[DG_BB1].push_back(-7.32133900);
    2708           8 :   parameter[DG_BB1].push_back(2.15767900);
    2709           8 :   parameter[DG_BB1].push_back(-3.52369700);
    2710           8 :   parameter[DG_BB1].push_back(2.30839600);
    2711           8 :   parameter[DG_BB1].push_back(-0.39348300);
    2712             : 
    2713           8 :   parameter[DG_BB2].push_back(3.80600000);
    2714           8 :   parameter[DG_BB2].push_back(-0.10618100);
    2715           8 :   parameter[DG_BB2].push_back(9.54169000);
    2716           8 :   parameter[DG_BB2].push_back(-6.15177600);
    2717           8 :   parameter[DG_BB2].push_back(-0.53462400);
    2718           8 :   parameter[DG_BB2].push_back(1.15581300);
    2719           8 :   parameter[DG_BB2].push_back(-0.21567000);
    2720             : 
    2721           8 :   parameter[DG_BB3].push_back(-1.35600000);
    2722           8 :   parameter[DG_BB3].push_back(0.57489100);
    2723           8 :   parameter[DG_BB3].push_back(6.75164700);
    2724           8 :   parameter[DG_BB3].push_back(4.11300900);
    2725           8 :   parameter[DG_BB3].push_back(-9.63394600);
    2726           8 :   parameter[DG_BB3].push_back(4.41675400);
    2727           8 :   parameter[DG_BB3].push_back(-0.64339900);
    2728             : 
    2729           8 :   parameter[DG_SC1].push_back(6.67100000);
    2730           8 :   parameter[DG_SC1].push_back(-0.00886600);
    2731           8 :   parameter[DG_SC1].push_back(1.63333000);
    2732           8 :   parameter[DG_SC1].push_back(-0.06892100);
    2733           8 :   parameter[DG_SC1].push_back(-1.48683500);
    2734           8 :   parameter[DG_SC1].push_back(0.78670800);
    2735           8 :   parameter[DG_SC1].push_back(-0.12113900);
    2736             : 
    2737           8 :   parameter[DG_SC2].push_back(11.39400000);
    2738           8 :   parameter[DG_SC2].push_back(0.00907900);
    2739           8 :   parameter[DG_SC2].push_back(-0.22475500);
    2740           8 :   parameter[DG_SC2].push_back(0.49535100);
    2741           8 :   parameter[DG_SC2].push_back(-1.75324900);
    2742           8 :   parameter[DG_SC2].push_back(0.98767400);
    2743           8 :   parameter[DG_SC2].push_back(-0.16150800);
    2744             : 
    2745           8 :   parameter[DG_SC3].push_back(10.90100000);
    2746           8 :   parameter[DG_SC3].push_back(0.02207600);
    2747           8 :   parameter[DG_SC3].push_back(0.17932200);
    2748           8 :   parameter[DG_SC3].push_back(0.73253200);
    2749           8 :   parameter[DG_SC3].push_back(-1.95554900);
    2750           8 :   parameter[DG_SC3].push_back(0.98339900);
    2751           8 :   parameter[DG_SC3].push_back(-0.14763600);
    2752             : 
    2753           8 :   parameter[DG_SC4].push_back(6.45900000);
    2754           8 :   parameter[DG_SC4].push_back(0.02018400);
    2755           8 :   parameter[DG_SC4].push_back(4.17705400);
    2756           8 :   parameter[DG_SC4].push_back(0.98531700);
    2757           8 :   parameter[DG_SC4].push_back(-5.04354900);
    2758           8 :   parameter[DG_SC4].push_back(2.56123700);
    2759           8 :   parameter[DG_SC4].push_back(-0.39249300);
    2760             : 
    2761           8 :   parameter[DG_3TE].push_back(4.23000000);
    2762           8 :   parameter[DG_3TE].push_back(0.00061700);
    2763           8 :   parameter[DG_3TE].push_back(0.92140100);
    2764           8 :   parameter[DG_3TE].push_back(0.08016400);
    2765           8 :   parameter[DG_3TE].push_back(-0.39003500);
    2766           8 :   parameter[DG_3TE].push_back(0.12406900);
    2767           8 :   parameter[DG_3TE].push_back(-0.01119200);
    2768             : 
    2769           8 :   parameter[DG_5TE].push_back(4.23000000);
    2770           8 :   parameter[DG_5TE].push_back(0.00064900);
    2771           8 :   parameter[DG_5TE].push_back(0.92110500);
    2772           8 :   parameter[DG_5TE].push_back(0.08031500);
    2773           8 :   parameter[DG_5TE].push_back(-0.38997000);
    2774           8 :   parameter[DG_5TE].push_back(0.12401200);
    2775           8 :   parameter[DG_5TE].push_back(-0.01118100);
    2776             : 
    2777           8 :   parameter[DG_TE3].push_back(2.87400000);
    2778           8 :   parameter[DG_TE3].push_back(0.00182000);
    2779           8 :   parameter[DG_TE3].push_back(12.41507000);
    2780           8 :   parameter[DG_TE3].push_back(-7.47384800);
    2781           8 :   parameter[DG_TE3].push_back(-2.11864700);
    2782           8 :   parameter[DG_TE3].push_back(2.50112600);
    2783           8 :   parameter[DG_TE3].push_back(-0.48652200);
    2784             : 
    2785           8 :   parameter[DG_TE5].push_back(8.03600000);
    2786           8 :   parameter[DG_TE5].push_back(0.00676400);
    2787           8 :   parameter[DG_TE5].push_back(4.65989200);
    2788           8 :   parameter[DG_TE5].push_back(0.78482500);
    2789           8 :   parameter[DG_TE5].push_back(-6.86460600);
    2790           8 :   parameter[DG_TE5].push_back(4.11675400);
    2791           8 :   parameter[DG_TE5].push_back(-0.72249100);
    2792             : 
    2793           8 :   parameter[DT_BB1].push_back(32.88500000);
    2794           8 :   parameter[DT_BB1].push_back(0.08220100);
    2795           8 :   parameter[DT_BB1].push_back(-7.33006800);
    2796           8 :   parameter[DT_BB1].push_back(2.16636500);
    2797           8 :   parameter[DT_BB1].push_back(-3.53465700);
    2798           8 :   parameter[DT_BB1].push_back(2.31447600);
    2799           8 :   parameter[DT_BB1].push_back(-0.39445400);
    2800             : 
    2801           8 :   parameter[DT_BB2].push_back(3.80600000);
    2802           8 :   parameter[DT_BB2].push_back(-0.10723000);
    2803           8 :   parameter[DT_BB2].push_back(9.56675000);
    2804           8 :   parameter[DT_BB2].push_back(-6.20236100);
    2805           8 :   parameter[DT_BB2].push_back(-0.49550400);
    2806           8 :   parameter[DT_BB2].push_back(1.14300600);
    2807           8 :   parameter[DT_BB2].push_back(-0.21420000);
    2808             : 
    2809           8 :   parameter[DT_BB3].push_back(-1.35600000);
    2810           8 :   parameter[DT_BB3].push_back(0.56737900);
    2811           8 :   parameter[DT_BB3].push_back(6.76595400);
    2812           8 :   parameter[DT_BB3].push_back(4.08976100);
    2813           8 :   parameter[DT_BB3].push_back(-9.61512500);
    2814           8 :   parameter[DT_BB3].push_back(4.40975100);
    2815           8 :   parameter[DT_BB3].push_back(-0.64239800);
    2816             : 
    2817           8 :   parameter[DT_SC1].push_back(5.95100000);
    2818           8 :   parameter[DT_SC1].push_back(-0.02926500);
    2819           8 :   parameter[DT_SC1].push_back(2.59630300);
    2820           8 :   parameter[DT_SC1].push_back(-0.56152200);
    2821           8 :   parameter[DT_SC1].push_back(-1.56532600);
    2822           8 :   parameter[DT_SC1].push_back(0.89322800);
    2823           8 :   parameter[DT_SC1].push_back(-0.14142900);
    2824             : 
    2825           8 :   parameter[DT_SC2].push_back(10.90100000);
    2826           8 :   parameter[DT_SC2].push_back(0.02183400);
    2827           8 :   parameter[DT_SC2].push_back(0.19463000);
    2828           8 :   parameter[DT_SC2].push_back(0.72393000);
    2829           8 :   parameter[DT_SC2].push_back(-1.93199500);
    2830           8 :   parameter[DT_SC2].push_back(0.96856300);
    2831           8 :   parameter[DT_SC2].push_back(-0.14512600);
    2832             : 
    2833           8 :   parameter[DT_SC3].push_back(4.31400000);
    2834           8 :   parameter[DT_SC3].push_back(-0.07745600);
    2835           8 :   parameter[DT_SC3].push_back(12.49820300);
    2836           8 :   parameter[DT_SC3].push_back(-7.64994200);
    2837           8 :   parameter[DT_SC3].push_back(-3.00359600);
    2838           8 :   parameter[DT_SC3].push_back(3.26263300);
    2839           8 :   parameter[DT_SC3].push_back(-0.64498600);
    2840             : 
    2841           8 :   parameter[DT_3TE].push_back(4.23000000);
    2842           8 :   parameter[DT_3TE].push_back(0.00062000);
    2843           8 :   parameter[DT_3TE].push_back(0.92141100);
    2844           8 :   parameter[DT_3TE].push_back(0.08030900);
    2845           8 :   parameter[DT_3TE].push_back(-0.39021500);
    2846           8 :   parameter[DT_3TE].push_back(0.12414000);
    2847           8 :   parameter[DT_3TE].push_back(-0.01120100);
    2848             : 
    2849           8 :   parameter[DT_5TE].push_back(4.23000000);
    2850           8 :   parameter[DT_5TE].push_back(0.00063700);
    2851           8 :   parameter[DT_5TE].push_back(0.92130800);
    2852           8 :   parameter[DT_5TE].push_back(0.08026900);
    2853           8 :   parameter[DT_5TE].push_back(-0.39007500);
    2854           8 :   parameter[DT_5TE].push_back(0.12406600);
    2855           8 :   parameter[DT_5TE].push_back(-0.01118800);
    2856             : 
    2857           8 :   parameter[DT_TE3].push_back(2.87400000);
    2858           8 :   parameter[DT_TE3].push_back(-0.00251200);
    2859           8 :   parameter[DT_TE3].push_back(12.43576400);
    2860           8 :   parameter[DT_TE3].push_back(-7.55343800);
    2861           8 :   parameter[DT_TE3].push_back(-2.07363500);
    2862           8 :   parameter[DT_TE3].push_back(2.51279300);
    2863           8 :   parameter[DT_TE3].push_back(-0.49437100);
    2864             : 
    2865           8 :   parameter[DT_TE5].push_back(8.03600000);
    2866           8 :   parameter[DT_TE5].push_back(0.00119900);
    2867           8 :   parameter[DT_TE5].push_back(4.91762300);
    2868           8 :   parameter[DT_TE5].push_back(0.65637000);
    2869           8 :   parameter[DT_TE5].push_back(-7.23392500);
    2870           8 :   parameter[DT_TE5].push_back(4.44636600);
    2871           8 :   parameter[DT_TE5].push_back(-0.79467800);
    2872             : 
    2873           8 :   auto* moldat=plumed.getActionSet().selectLatest<GenericMolInfo*>(this);
    2874           8 :   if( moldat ) {
    2875        8400 :     for(unsigned i=0; i<atoms.size(); ++i) {
    2876        8392 :       std::string Aname = moldat->getAtomName(atoms[i]);
    2877        8392 :       std::string Rname = moldat->getResidueName(atoms[i]);
    2878        8392 :       if(Rname=="ALA") {
    2879          72 :         if(Aname=="BB") {
    2880          72 :           atoi[i]=ALA_BB;
    2881             :         } else {
    2882           0 :           error("Atom name not known: "+Aname);
    2883             :         }
    2884        8320 :       } else if(Rname=="ARG") {
    2885         420 :         if(Aname=="BB") {
    2886         140 :           atoi[i]=ARG_BB;
    2887         280 :         } else if(Aname=="SC1") {
    2888         140 :           atoi[i]=ARG_SC1;
    2889         140 :         } else if(Aname=="SC2") {
    2890         140 :           atoi[i]=ARG_SC2;
    2891             :         } else {
    2892           0 :           error("Atom name not known: "+Aname);
    2893             :         }
    2894        7900 :       } else if(Rname=="ASN") {
    2895         240 :         if(Aname=="BB") {
    2896         120 :           atoi[i]=ASN_BB;
    2897         120 :         } else if(Aname=="SC1") {
    2898         120 :           atoi[i]=ASN_SC1;
    2899             :         } else {
    2900           0 :           error("Atom name not known: "+Aname);
    2901             :         }
    2902        7660 :       } else if(Rname=="ASP") {
    2903         368 :         if(Aname=="BB") {
    2904         184 :           atoi[i]=ASP_BB;
    2905         184 :         } else if(Aname=="SC1") {
    2906         184 :           atoi[i]=ASP_SC1;
    2907             :         } else {
    2908           0 :           error("Atom name not known: "+Aname);
    2909             :         }
    2910        7292 :       } else if(Rname=="CYS") {
    2911          16 :         if(Aname=="BB") {
    2912           8 :           atoi[i]=CYS_BB;
    2913           8 :         } else if(Aname=="SC1") {
    2914           8 :           atoi[i]=CYS_SC1;
    2915             :         } else {
    2916           0 :           error("Atom name not known: "+Aname);
    2917             :         }
    2918        7276 :       } else if(Rname=="GLN") {
    2919         224 :         if(Aname=="BB") {
    2920         112 :           atoi[i]=GLN_BB;
    2921         112 :         } else if(Aname=="SC1") {
    2922         112 :           atoi[i]=GLN_SC1;
    2923             :         } else {
    2924           0 :           error("Atom name not known: "+Aname);
    2925             :         }
    2926        7052 :       } else if(Rname=="GLU") {
    2927         480 :         if(Aname=="BB") {
    2928         240 :           atoi[i]=GLU_BB;
    2929         240 :         } else if(Aname=="SC1") {
    2930         240 :           atoi[i]=GLU_SC1;
    2931             :         } else {
    2932           0 :           error("Atom name not known: "+Aname);
    2933             :         }
    2934        6572 :       } else if(Rname=="GLY") {
    2935         116 :         if(Aname=="BB") {
    2936         116 :           atoi[i]=GLY_BB;
    2937             :         } else {
    2938           0 :           error("Atom name not known: "+Aname);
    2939             :         }
    2940        6456 :       } else if(Rname=="HIS") {
    2941         576 :         if(Aname=="BB") {
    2942         144 :           atoi[i]=HIS_BB;
    2943         432 :         } else if(Aname=="SC1") {
    2944         144 :           atoi[i]=HIS_SC1;
    2945         288 :         } else if(Aname=="SC2") {
    2946         144 :           atoi[i]=HIS_SC2;
    2947         144 :         } else if(Aname=="SC3") {
    2948         144 :           atoi[i]=HIS_SC3;
    2949             :         } else {
    2950           0 :           error("Atom name not known: "+Aname);
    2951             :         }
    2952        5880 :       } else if(Rname=="ILE") {
    2953         584 :         if(Aname=="BB") {
    2954         292 :           atoi[i]=ILE_BB;
    2955         292 :         } else if(Aname=="SC1") {
    2956         292 :           atoi[i]=ILE_SC1;
    2957             :         } else {
    2958           0 :           error("Atom name not known: "+Aname);
    2959             :         }
    2960        5296 :       } else if(Rname=="LEU") {
    2961         448 :         if(Aname=="BB") {
    2962         224 :           atoi[i]=LEU_BB;
    2963         224 :         } else if(Aname=="SC1") {
    2964         224 :           atoi[i]=LEU_SC1;
    2965             :         } else {
    2966           0 :           error("Atom name not known: "+Aname);
    2967             :         }
    2968        4848 :       } else if(Rname=="LYS") {
    2969         792 :         if(Aname=="BB") {
    2970         264 :           atoi[i]=LYS_BB;
    2971         528 :         } else if(Aname=="SC1") {
    2972         264 :           atoi[i]=LYS_SC1;
    2973         264 :         } else if(Aname=="SC2") {
    2974         264 :           atoi[i]=LYS_SC2;
    2975             :         } else {
    2976           0 :           error("Atom name not known: "+Aname);
    2977             :         }
    2978        4056 :       } else if(Rname=="MET") {
    2979          80 :         if(Aname=="BB") {
    2980          40 :           atoi[i]=MET_BB;
    2981          40 :         } else if(Aname=="SC1") {
    2982          40 :           atoi[i]=MET_SC1;
    2983             :         } else {
    2984           0 :           error("Atom name not known: "+Aname);
    2985             :         }
    2986        3976 :       } else if(Rname=="PHE") {
    2987         512 :         if(Aname=="BB") {
    2988         128 :           atoi[i]=PHE_BB;
    2989         384 :         } else if(Aname=="SC1") {
    2990         128 :           atoi[i]=PHE_SC1;
    2991         256 :         } else if(Aname=="SC2") {
    2992         128 :           atoi[i]=PHE_SC2;
    2993         128 :         } else if(Aname=="SC3") {
    2994         128 :           atoi[i]=PHE_SC3;
    2995             :         } else {
    2996           0 :           error("Atom name not known: "+Aname);
    2997             :         }
    2998        3464 :       } else if(Rname=="PRO") {
    2999         128 :         if(Aname=="BB") {
    3000          64 :           atoi[i]=PRO_BB;
    3001          64 :         } else if(Aname=="SC1") {
    3002          64 :           atoi[i]=PRO_SC1;
    3003             :         } else {
    3004           0 :           error("Atom name not known: "+Aname);
    3005             :         }
    3006        3336 :       } else if(Rname=="SER") {
    3007         248 :         if(Aname=="BB") {
    3008         124 :           atoi[i]=SER_BB;
    3009         124 :         } else if(Aname=="SC1") {
    3010         124 :           atoi[i]=SER_SC1;
    3011             :         } else {
    3012           0 :           error("Atom name not known: "+Aname);
    3013             :         }
    3014        3088 :       } else if(Rname=="THR") {
    3015         288 :         if(Aname=="BB") {
    3016         144 :           atoi[i]=THR_BB;
    3017         144 :         } else if(Aname=="SC1") {
    3018         144 :           atoi[i]=THR_SC1;
    3019             :         } else {
    3020           0 :           error("Atom name not known: "+Aname);
    3021             :         }
    3022        2800 :       } else if(Rname=="TRP") {
    3023           0 :         if(Aname=="BB") {
    3024           0 :           atoi[i]=TRP_BB;
    3025           0 :         } else if(Aname=="SC1") {
    3026           0 :           atoi[i]=TRP_SC1;
    3027           0 :         } else if(Aname=="SC2") {
    3028           0 :           atoi[i]=TRP_SC2;
    3029           0 :         } else if(Aname=="SC3") {
    3030           0 :           atoi[i]=TRP_SC3;
    3031           0 :         } else if(Aname=="SC4") {
    3032           0 :           atoi[i]=TRP_SC4;
    3033             :         } else {
    3034           0 :           error("Atom name not known: "+Aname);
    3035             :         }
    3036        2800 :       } else if(Rname=="TYR") {
    3037         544 :         if(Aname=="BB") {
    3038         136 :           atoi[i]=TYR_BB;
    3039         408 :         } else if(Aname=="SC1") {
    3040         136 :           atoi[i]=TYR_SC1;
    3041         272 :         } else if(Aname=="SC2") {
    3042         136 :           atoi[i]=TYR_SC2;
    3043         136 :         } else if(Aname=="SC3") {
    3044         136 :           atoi[i]=TYR_SC3;
    3045             :         } else {
    3046           0 :           error("Atom name not known: "+Aname);
    3047             :         }
    3048        2256 :       } else if(Rname=="VAL") {
    3049         288 :         if(Aname=="BB") {
    3050         144 :           atoi[i]=VAL_BB;
    3051         144 :         } else if(Aname=="SC1") {
    3052         144 :           atoi[i]=VAL_SC1;
    3053             :         } else {
    3054           0 :           error("Atom name not known: "+Aname);
    3055             :         }
    3056        1968 :       } else if(Rname=="  A") {
    3057           0 :         if(Aname=="BB1") {
    3058           0 :           atoi[i]=A_BB1;
    3059           0 :         } else if(Aname=="BB2") {
    3060           0 :           atoi[i]=A_BB2;
    3061           0 :         } else if(Aname=="BB3") {
    3062           0 :           atoi[i]=A_BB3;
    3063           0 :         } else if(Aname=="SC1") {
    3064           0 :           atoi[i]=A_SC1;
    3065           0 :         } else if(Aname=="SC2") {
    3066           0 :           atoi[i]=A_SC2;
    3067           0 :         } else if(Aname=="SC3") {
    3068           0 :           atoi[i]=A_SC3;
    3069           0 :         } else if(Aname=="SC4") {
    3070           0 :           atoi[i]=A_SC4;
    3071           0 :         } else if(Aname=="3TE") {
    3072           0 :           atoi[i]=A_3TE;
    3073           0 :         } else if(Aname=="5TE") {
    3074           0 :           atoi[i]=A_5TE;
    3075           0 :         } else if(Aname=="TE3") {
    3076           0 :           atoi[i]=A_TE3;
    3077           0 :         } else if(Aname=="TE5") {
    3078           0 :           atoi[i]=A_TE5;
    3079             :         } else {
    3080           0 :           error("Atom name not known: "+Aname);
    3081             :         }
    3082        1968 :       } else if(Rname=="  C") {
    3083           0 :         if(Aname=="BB1") {
    3084           0 :           atoi[i]=C_BB1;
    3085           0 :         } else if(Aname=="BB2") {
    3086           0 :           atoi[i]=C_BB2;
    3087           0 :         } else if(Aname=="BB3") {
    3088           0 :           atoi[i]=C_BB3;
    3089           0 :         } else if(Aname=="SC1") {
    3090           0 :           atoi[i]=C_SC1;
    3091           0 :         } else if(Aname=="SC2") {
    3092           0 :           atoi[i]=C_SC2;
    3093           0 :         } else if(Aname=="SC3") {
    3094           0 :           atoi[i]=C_SC3;
    3095           0 :         } else if(Aname=="3TE") {
    3096           0 :           atoi[i]=C_3TE;
    3097           0 :         } else if(Aname=="5TE") {
    3098           0 :           atoi[i]=C_5TE;
    3099           0 :         } else if(Aname=="TE3") {
    3100           0 :           atoi[i]=C_TE3;
    3101           0 :         } else if(Aname=="TE5") {
    3102           0 :           atoi[i]=C_TE5;
    3103             :         } else {
    3104           0 :           error("Atom name not known: "+Aname);
    3105             :         }
    3106        1968 :       } else if(Rname=="  G") {
    3107           0 :         if(Aname=="BB1") {
    3108           0 :           atoi[i]=G_BB1;
    3109           0 :         } else if(Aname=="BB2") {
    3110           0 :           atoi[i]=G_BB2;
    3111           0 :         } else if(Aname=="BB3") {
    3112           0 :           atoi[i]=G_BB3;
    3113           0 :         } else if(Aname=="SC1") {
    3114           0 :           atoi[i]=G_SC1;
    3115           0 :         } else if(Aname=="SC2") {
    3116           0 :           atoi[i]=G_SC2;
    3117           0 :         } else if(Aname=="SC3") {
    3118           0 :           atoi[i]=G_SC3;
    3119           0 :         } else if(Aname=="SC4") {
    3120           0 :           atoi[i]=G_SC4;
    3121           0 :         } else if(Aname=="3TE") {
    3122           0 :           atoi[i]=G_3TE;
    3123           0 :         } else if(Aname=="5TE") {
    3124           0 :           atoi[i]=G_5TE;
    3125           0 :         } else if(Aname=="TE3") {
    3126           0 :           atoi[i]=G_TE3;
    3127           0 :         } else if(Aname=="TE5") {
    3128           0 :           atoi[i]=G_TE5;
    3129             :         } else {
    3130           0 :           error("Atom name not known: "+Aname);
    3131             :         }
    3132        1968 :       } else if(Rname=="  U") {
    3133           0 :         if(Aname=="BB1") {
    3134           0 :           atoi[i]=U_BB1;
    3135           0 :         } else if(Aname=="BB2") {
    3136           0 :           atoi[i]=U_BB2;
    3137           0 :         } else if(Aname=="BB3") {
    3138           0 :           atoi[i]=U_BB3;
    3139           0 :         } else if(Aname=="SC1") {
    3140           0 :           atoi[i]=U_SC1;
    3141           0 :         } else if(Aname=="SC2") {
    3142           0 :           atoi[i]=U_SC2;
    3143           0 :         } else if(Aname=="SC3") {
    3144           0 :           atoi[i]=U_SC3;
    3145           0 :         } else if(Aname=="3TE") {
    3146           0 :           atoi[i]=U_3TE;
    3147           0 :         } else if(Aname=="5TE") {
    3148           0 :           atoi[i]=U_5TE;
    3149           0 :         } else if(Aname=="TE3") {
    3150           0 :           atoi[i]=U_TE3;
    3151           0 :         } else if(Aname=="TE5") {
    3152           0 :           atoi[i]=U_TE5;
    3153             :         } else {
    3154           0 :           error("Atom name not known: "+Aname);
    3155             :         }
    3156        1968 :       } else if(Rname==" DA") {
    3157         696 :         if(Aname=="BB1") {
    3158          96 :           atoi[i]=DA_BB1;
    3159         600 :         } else if(Aname=="BB2") {
    3160          96 :           atoi[i]=DA_BB2;
    3161         504 :         } else if(Aname=="BB3") {
    3162          96 :           atoi[i]=DA_BB3;
    3163         408 :         } else if(Aname=="SC1") {
    3164         100 :           atoi[i]=DA_SC1;
    3165         308 :         } else if(Aname=="SC2") {
    3166         100 :           atoi[i]=DA_SC2;
    3167         208 :         } else if(Aname=="SC3") {
    3168         100 :           atoi[i]=DA_SC3;
    3169         108 :         } else if(Aname=="SC4") {
    3170         100 :           atoi[i]=DA_SC4;
    3171           8 :         } else if(Aname=="3TE") {
    3172           0 :           atoi[i]=DA_3TE;
    3173           8 :         } else if(Aname=="5TE") {
    3174           0 :           atoi[i]=DA_5TE;
    3175           8 :         } else if(Aname=="TE3") {
    3176           4 :           atoi[i]=DA_TE3;
    3177           4 :         } else if(Aname=="TE5") {
    3178           4 :           atoi[i]=DA_TE5;
    3179             :         } else {
    3180           0 :           error("Atom name not known: "+Aname);
    3181             :         }
    3182        1272 :       } else if(Rname==" DC") {
    3183         312 :         if(Aname=="BB1") {
    3184          52 :           atoi[i]=DC_BB1;
    3185         260 :         } else if(Aname=="BB2") {
    3186          52 :           atoi[i]=DC_BB2;
    3187         208 :         } else if(Aname=="BB3") {
    3188          52 :           atoi[i]=DC_BB3;
    3189         156 :         } else if(Aname=="SC1") {
    3190          52 :           atoi[i]=DC_SC1;
    3191         104 :         } else if(Aname=="SC2") {
    3192          52 :           atoi[i]=DC_SC2;
    3193          52 :         } else if(Aname=="SC3") {
    3194          52 :           atoi[i]=DC_SC3;
    3195           0 :         } else if(Aname=="3TE") {
    3196           0 :           atoi[i]=DC_3TE;
    3197           0 :         } else if(Aname=="5TE") {
    3198           0 :           atoi[i]=DC_5TE;
    3199           0 :         } else if(Aname=="TE3") {
    3200           0 :           atoi[i]=DC_TE3;
    3201           0 :         } else if(Aname=="TE5") {
    3202           0 :           atoi[i]=DC_TE5;
    3203             :         } else {
    3204           0 :           error("Atom name not known: "+Aname);
    3205             :         }
    3206         960 :       } else if(Rname==" DG") {
    3207         364 :         if(Aname=="BB1") {
    3208          52 :           atoi[i]=DG_BB1;
    3209         312 :         } else if(Aname=="BB2") {
    3210          52 :           atoi[i]=DG_BB2;
    3211         260 :         } else if(Aname=="BB3") {
    3212          52 :           atoi[i]=DG_BB3;
    3213         208 :         } else if(Aname=="SC1") {
    3214          52 :           atoi[i]=DG_SC1;
    3215         156 :         } else if(Aname=="SC2") {
    3216          52 :           atoi[i]=DG_SC2;
    3217         104 :         } else if(Aname=="SC3") {
    3218          52 :           atoi[i]=DG_SC3;
    3219          52 :         } else if(Aname=="SC4") {
    3220          52 :           atoi[i]=DG_SC4;
    3221           0 :         } else if(Aname=="3TE") {
    3222           0 :           atoi[i]=DG_3TE;
    3223           0 :         } else if(Aname=="5TE") {
    3224           0 :           atoi[i]=DG_5TE;
    3225           0 :         } else if(Aname=="TE3") {
    3226           0 :           atoi[i]=DG_TE3;
    3227           0 :         } else if(Aname=="TE5") {
    3228           0 :           atoi[i]=DG_TE5;
    3229             :         } else {
    3230           0 :           error("Atom name not known: "+Aname);
    3231             :         }
    3232         596 :       } else if(Rname==" DT") {
    3233         596 :         if(Aname=="BB1") {
    3234          96 :           atoi[i]=DT_BB1;
    3235         500 :         } else if(Aname=="BB2") {
    3236          96 :           atoi[i]=DT_BB2;
    3237         404 :         } else if(Aname=="BB3") {
    3238          96 :           atoi[i]=DT_BB3;
    3239         308 :         } else if(Aname=="SC1") {
    3240         100 :           atoi[i]=DT_SC1;
    3241         208 :         } else if(Aname=="SC2") {
    3242         100 :           atoi[i]=DT_SC2;
    3243         108 :         } else if(Aname=="SC3") {
    3244         100 :           atoi[i]=DT_SC3;
    3245           8 :         } else if(Aname=="3TE") {
    3246           0 :           atoi[i]=DT_3TE;
    3247           8 :         } else if(Aname=="5TE") {
    3248           0 :           atoi[i]=DT_5TE;
    3249           8 :         } else if(Aname=="TE3") {
    3250           4 :           atoi[i]=DT_TE3;
    3251           4 :         } else if(Aname=="TE5") {
    3252           4 :           atoi[i]=DT_TE5;
    3253             :         } else {
    3254           0 :           error("Atom name not known: "+Aname);
    3255             :         }
    3256             :       } else {
    3257           0 :         error("Residue not known: "+Rname);
    3258             :       }
    3259             :     }
    3260             :   } else {
    3261           0 :     error("MOLINFO DATA not found\n");
    3262             :   }
    3263           8 : }
    3264             : 
    3265          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) {
    3266             : 
    3267          10 :   parameter_solv[TRP].push_back(60737.60249988003);
    3268          10 :   parameter_solv[TRP].push_back(-77.75716755173752);
    3269          10 :   parameter_solv[TRP].push_back(-205962.98557711052);
    3270          10 :   parameter_solv[TRP].push_back(-62013.46984155453);
    3271          10 :   parameter_solv[TRP].push_back(680710.7592231638);
    3272          10 :   parameter_solv[TRP].push_back(-681336.8777362367);
    3273          10 :   parameter_solv[TRP].push_back(211473.65530642506);
    3274             : 
    3275          10 :   parameter_solv[TYR].push_back(46250.80359987982);
    3276          10 :   parameter_solv[TYR].push_back(-45.8287864681578);
    3277          10 :   parameter_solv[TYR].push_back(-143872.91752817619);
    3278          10 :   parameter_solv[TYR].push_back(-39049.68736409533);
    3279          10 :   parameter_solv[TYR].push_back(441321.71874090104);
    3280          10 :   parameter_solv[TYR].push_back(-434478.0972346327);
    3281          10 :   parameter_solv[TYR].push_back(133179.3694641212);
    3282             : 
    3283          10 :   parameter_solv[PHE].push_back(42407.164900118914);
    3284          10 :   parameter_solv[PHE].push_back(-159.1980754191431);
    3285          10 :   parameter_solv[PHE].push_back(-123847.86192757386);
    3286          10 :   parameter_solv[PHE].push_back(-41797.69041575073);
    3287          10 :   parameter_solv[PHE].push_back(380283.7035277073);
    3288          10 :   parameter_solv[PHE].push_back(-361432.67247521743);
    3289          10 :   parameter_solv[PHE].push_back(107750.64978068044);
    3290             : 
    3291          10 :   parameter_solv[HIP].push_back(24473.47360011923);
    3292          10 :   parameter_solv[HIP].push_back(-111.64156672747428);
    3293          10 :   parameter_solv[HIP].push_back(-65826.16993707925);
    3294          10 :   parameter_solv[HIP].push_back(-23305.91329798928);
    3295          10 :   parameter_solv[HIP].push_back(194795.11911635034);
    3296          10 :   parameter_solv[HIP].push_back(-180454.49458095312);
    3297          10 :   parameter_solv[HIP].push_back(52699.374196745615);
    3298             : 
    3299          10 :   parameter_solv[ARG].push_back(34106.70239988039);
    3300          10 :   parameter_solv[ARG].push_back(152.7472727640246);
    3301          10 :   parameter_solv[ARG].push_back(-117086.49392248681);
    3302          10 :   parameter_solv[ARG].push_back(-19664.229479267167);
    3303          10 :   parameter_solv[ARG].push_back(364454.0909203641);
    3304          10 :   parameter_solv[ARG].push_back(-382075.8018312776);
    3305          10 :   parameter_solv[ARG].push_back(122775.75036605193);
    3306             : 
    3307          10 :   parameter_solv[LYS].push_back(32292.090000118922);
    3308          10 :   parameter_solv[LYS].push_back(-111.97371180593888);
    3309          10 :   parameter_solv[LYS].push_back(-91953.10997619898);
    3310          10 :   parameter_solv[LYS].push_back(-30690.807047993283);
    3311          10 :   parameter_solv[LYS].push_back(282092.40760143084);
    3312          10 :   parameter_solv[LYS].push_back(-269503.2592457489);
    3313          10 :   parameter_solv[LYS].push_back(80777.81552915688);
    3314             : 
    3315          10 :   parameter_solv[CYS].push_back(11352.902500119093);
    3316          10 :   parameter_solv[CYS].push_back(-45.5226331859686);
    3317          10 :   parameter_solv[CYS].push_back(-20925.085562607524);
    3318          10 :   parameter_solv[CYS].push_back(-5662.685408989286);
    3319          10 :   parameter_solv[CYS].push_back(38559.10376731146);
    3320          10 :   parameter_solv[CYS].push_back(-27885.23426006181);
    3321          10 :   parameter_solv[CYS].push_back(6280.15058191397);
    3322             : 
    3323          10 :   parameter_solv[CYX].push_back(10281.960000119348);
    3324          10 :   parameter_solv[CYX].push_back(-42.315998754511);
    3325          10 :   parameter_solv[CYX].push_back(-19328.174487327480);
    3326          10 :   parameter_solv[CYX].push_back(-5523.191775626829);
    3327          10 :   parameter_solv[CYX].push_back(38185.463172673335);
    3328          10 :   parameter_solv[CYX].push_back(-28940.174693042034);
    3329          10 :   parameter_solv[CYX].push_back(6925.390014187676);
    3330             : 
    3331          10 :   parameter_solv[ASP].push_back(13511.73760011933);
    3332          10 :   parameter_solv[ASP].push_back(-59.929111107656595);
    3333          10 :   parameter_solv[ASP].push_back(-25849.869639655575);
    3334          10 :   parameter_solv[ASP].push_back(-7541.669448872824);
    3335          10 :   parameter_solv[ASP].push_back(50760.92045144903);
    3336          10 :   parameter_solv[ASP].push_back(-37677.87583269734);
    3337          10 :   parameter_solv[ASP].push_back(8745.7056219399);
    3338             : 
    3339          10 :   parameter_solv[GLU].push_back(20443.280400119456);
    3340          10 :   parameter_solv[GLU].push_back(-113.77561814283207);
    3341          10 :   parameter_solv[GLU].push_back(-45587.79314626863);
    3342          10 :   parameter_solv[GLU].push_back(-16187.556837331254);
    3343          10 :   parameter_solv[GLU].push_back(112609.65830609271);
    3344          10 :   parameter_solv[GLU].push_back(-93362.05323205091);
    3345          10 :   parameter_solv[GLU].push_back(24519.557866124724);
    3346             : 
    3347          10 :   parameter_solv[ILE].push_back(27858.948100119596);
    3348          10 :   parameter_solv[ILE].push_back(-159.27355145839834);
    3349          10 :   parameter_solv[ILE].push_back(-61571.43463039565);
    3350          10 :   parameter_solv[ILE].push_back(-21324.879474559468);
    3351          10 :   parameter_solv[ILE].push_back(144070.7572894681);
    3352          10 :   parameter_solv[ILE].push_back(-115021.81959095894);
    3353          10 :   parameter_solv[ILE].push_back(28939.085108838968);
    3354             : 
    3355          10 :   parameter_solv[LEU].push_back(27858.948100119596);
    3356          10 :   parameter_solv[LEU].push_back(-165.61892007509647);
    3357          10 :   parameter_solv[LEU].push_back(-62564.568746500125);
    3358          10 :   parameter_solv[LEU].push_back(-22465.332149768525);
    3359          10 :   parameter_solv[LEU].push_back(151616.79489291538);
    3360          10 :   parameter_solv[LEU].push_back(-122905.6119395393);
    3361          10 :   parameter_solv[LEU].push_back(31436.664377885514);
    3362             : 
    3363          10 :   parameter_solv[MET].push_back(25609.60090011981);
    3364          10 :   parameter_solv[MET].push_back(-135.38857843066708);
    3365          10 :   parameter_solv[MET].push_back(-67771.01108177133);
    3366          10 :   parameter_solv[MET].push_back(-25228.934337676077);
    3367          10 :   parameter_solv[MET].push_back(199649.95030712147);
    3368          10 :   parameter_solv[MET].push_back(-182251.94895101967);
    3369          10 :   parameter_solv[MET].push_back(52502.88444247481);
    3370             : 
    3371          10 :   parameter_solv[ASN].push_back(14376.010000119095);
    3372          10 :   parameter_solv[ASN].push_back(-67.65579048748472);
    3373          10 :   parameter_solv[ASN].push_back(-28302.87809850141);
    3374          10 :   parameter_solv[ASN].push_back(-8577.439830985548);
    3375          10 :   parameter_solv[ASN].push_back(57532.879075695324);
    3376          10 :   parameter_solv[ASN].push_back(-43261.79286366774);
    3377          10 :   parameter_solv[ASN].push_back(10186.448634149085);
    3378             : 
    3379          10 :   parameter_solv[PRO].push_back(16866.21690011944);
    3380          10 :   parameter_solv[PRO].push_back(-70.84327801054884);
    3381          10 :   parameter_solv[PRO].push_back(-31465.84064925844);
    3382          10 :   parameter_solv[PRO].push_back(-8653.3693368317);
    3383          10 :   parameter_solv[PRO].push_back(58032.28250733714);
    3384          10 :   parameter_solv[PRO].push_back(-41521.01146771431);
    3385          10 :   parameter_solv[PRO].push_back(9184.530596102064);
    3386             : 
    3387          10 :   parameter_solv[GLN].push_back(21503.289600119);
    3388          10 :   parameter_solv[GLN].push_back(-121.30164008960246);
    3389          10 :   parameter_solv[GLN].push_back(-50468.580981118175);
    3390          10 :   parameter_solv[GLN].push_back(-18462.49098408308);
    3391          10 :   parameter_solv[GLN].push_back(132718.44904081387);
    3392          10 :   parameter_solv[GLN].push_back(-113787.22666510186);
    3393          10 :   parameter_solv[GLN].push_back(30920.348610969988);
    3394             : 
    3395          10 :   parameter_solv[SER].push_back(9181.472400119354);
    3396          10 :   parameter_solv[SER].push_back(-28.77519915767741);
    3397          10 :   parameter_solv[SER].push_back(-15205.543144104717);
    3398          10 :   parameter_solv[SER].push_back(-3377.782176346411);
    3399          10 :   parameter_solv[SER].push_back(23345.555771001076);
    3400          10 :   parameter_solv[SER].push_back(-15312.694356014094);
    3401          10 :   parameter_solv[SER].push_back(3013.8428466148);
    3402             : 
    3403          10 :   parameter_solv[THR].push_back(15020.953600119403);
    3404          10 :   parameter_solv[THR].push_back(-61.91004832631006);
    3405          10 :   parameter_solv[THR].push_back(-27814.537889259853);
    3406          10 :   parameter_solv[THR].push_back(-7532.227289701552);
    3407          10 :   parameter_solv[THR].push_back(50586.30566118166);
    3408          10 :   parameter_solv[THR].push_back(-35943.866131120165);
    3409          10 :   parameter_solv[THR].push_back(7880.093558764326);
    3410             : 
    3411          10 :   parameter_solv[VAL].push_back(19647.628900119355);
    3412          10 :   parameter_solv[VAL].push_back(-89.04983250107853);
    3413          10 :   parameter_solv[VAL].push_back(-38050.09958470928);
    3414          10 :   parameter_solv[VAL].push_back(-10921.427112288537);
    3415          10 :   parameter_solv[VAL].push_back(72774.32322962297);
    3416          10 :   parameter_solv[VAL].push_back(-52689.060152305225);
    3417          10 :   parameter_solv[VAL].push_back(11806.492503632868);
    3418             : 
    3419          10 :   parameter_solv[ALA].push_back(7515.156100119276);
    3420          10 :   parameter_solv[ALA].push_back(-20.226381685697746);
    3421          10 :   parameter_solv[ALA].push_back(-11761.841094237716);
    3422          10 :   parameter_solv[ALA].push_back(-2341.4929468980367);
    3423          10 :   parameter_solv[ALA].push_back(16545.385777961936);
    3424          10 :   parameter_solv[ALA].push_back(-10397.175253025776);
    3425          10 :   parameter_solv[ALA].push_back(1921.5264606725107);
    3426             : 
    3427          10 :   parameter_solv[GLY].push_back(3594.002500119159);
    3428          10 :   parameter_solv[GLY].push_back(-6.910836154887606);
    3429          10 :   parameter_solv[GLY].push_back(-4937.354220666574);
    3430          10 :   parameter_solv[GLY].push_back(-785.4549468992149);
    3431          10 :   parameter_solv[GLY].push_back(5852.854429532936);
    3432          10 :   parameter_solv[GLY].push_back(-3391.2927115487832);
    3433          10 :   parameter_solv[GLY].push_back(552.3280571490722);
    3434             : 
    3435          10 :   parameter_solv[HIS].push_back(22888.664100119073);
    3436          10 :   parameter_solv[HIS].push_back(-133.86265270962434);
    3437          10 :   parameter_solv[HIS].push_back(-57533.51591635819);
    3438          10 :   parameter_solv[HIS].push_back(-21767.293192014684);
    3439          10 :   parameter_solv[HIS].push_back(161255.14120001195);
    3440          10 :   parameter_solv[HIS].push_back(-142176.64081149307);
    3441          10 :   parameter_solv[HIS].push_back(39642.61185646193);
    3442             : 
    3443          10 :   parameter_mix[TRP].push_back(48294.0117571196);
    3444          10 :   parameter_mix[TRP].push_back(-205.45879626487798);
    3445          10 :   parameter_mix[TRP].push_back(-148816.1858118254);
    3446          10 :   parameter_mix[TRP].push_back(-54968.030079609875);
    3447          10 :   parameter_mix[TRP].push_back(491793.79967057955);
    3448          10 :   parameter_mix[TRP].push_back(-476312.9117969879);
    3449          10 :   parameter_mix[TRP].push_back(144159.96165644142);
    3450             : 
    3451          10 :   parameter_mix[TYR].push_back(36984.20240312081);
    3452          10 :   parameter_mix[TYR].push_back(-83.86380083812203);
    3453          10 :   parameter_mix[TYR].push_back(-108820.52211887162);
    3454          10 :   parameter_mix[TYR].push_back(-33934.69818901515);
    3455          10 :   parameter_mix[TYR].push_back(341504.736372253);
    3456          10 :   parameter_mix[TYR].push_back(-334008.1748614056);
    3457          10 :   parameter_mix[TYR].push_back(102033.08077851454);
    3458             : 
    3459          10 :   parameter_mix[PHE].push_back(32119.469231338233);
    3460          10 :   parameter_mix[PHE].push_back(-172.96940450568917);
    3461          10 :   parameter_mix[PHE].push_back(-85831.4326887122);
    3462          10 :   parameter_mix[PHE].push_back(-33193.32405438845);
    3463          10 :   parameter_mix[PHE].push_back(262940.64471909316);
    3464          10 :   parameter_mix[PHE].push_back(-243540.06898907054);
    3465          10 :   parameter_mix[PHE].push_back(71084.54387480798);
    3466             : 
    3467          10 :   parameter_mix[HIP].push_back(22833.36414923898);
    3468          10 :   parameter_mix[HIP].push_back(-134.0493955562186);
    3469          10 :   parameter_mix[HIP].push_back(-55325.55607328898);
    3470          10 :   parameter_mix[HIP].push_back(-21898.314938881984);
    3471          10 :   parameter_mix[HIP].push_back(159995.6912885654);
    3472          10 :   parameter_mix[HIP].push_back(-142968.19796084083);
    3473          10 :   parameter_mix[HIP].push_back(40417.44581470003);
    3474             : 
    3475          10 :   parameter_mix[ARG].push_back(31385.401600920715);
    3476          10 :   parameter_mix[ARG].push_back(36.114094042884254);
    3477          10 :   parameter_mix[ARG].push_back(-103730.44467490204);
    3478          10 :   parameter_mix[ARG].push_back(-27036.249157905615);
    3479          10 :   parameter_mix[ARG].push_back(347011.0339314942);
    3480          10 :   parameter_mix[ARG].push_back(-358879.9736802336);
    3481          10 :   parameter_mix[ARG].push_back(114432.18361399164);
    3482             : 
    3483          10 :   parameter_mix[LYS].push_back(25511.35812671878);
    3484          10 :   parameter_mix[LYS].push_back(-130.4381491986372);
    3485          10 :   parameter_mix[LYS].push_back(-69258.61236879184);
    3486          10 :   parameter_mix[LYS].push_back(-27066.36783798707);
    3487          10 :   parameter_mix[LYS].push_back(220092.65231165203);
    3488          10 :   parameter_mix[LYS].push_back(-207794.5056092443);
    3489          10 :   parameter_mix[LYS].push_back(61665.57004630315);
    3490             : 
    3491          10 :   parameter_mix[CYS].push_back(11505.517261618916);
    3492          10 :   parameter_mix[CYS].push_back(-33.60468076978334);
    3493          10 :   parameter_mix[CYS].push_back(-18328.882710004465);
    3494          10 :   parameter_mix[CYS].push_back(-3956.9113649567626);
    3495          10 :   parameter_mix[CYS].push_back(27546.35146501212);
    3496          10 :   parameter_mix[CYS].push_back(-18024.826330595406);
    3497          10 :   parameter_mix[CYS].push_back(3551.2207387570024);
    3498             : 
    3499          10 :   parameter_mix[CYX].push_back(10746.617793719070);
    3500          10 :   parameter_mix[CYX].push_back(-37.082746200650);
    3501          10 :   parameter_mix[CYX].push_back(-17871.552278655203);
    3502          10 :   parameter_mix[CYX].push_back(-4512.203184574789);
    3503          10 :   parameter_mix[CYX].push_back(30605.726711712588);
    3504          10 :   parameter_mix[CYX].push_back(-21530.684072275839);
    3505          10 :   parameter_mix[CYX].push_back(4694.601090758420);
    3506             : 
    3507          10 :   parameter_mix[ASP].push_back(13713.858501879382);
    3508          10 :   parameter_mix[ASP].push_back(-51.33286241257164);
    3509          10 :   parameter_mix[ASP].push_back(-23807.8549764091);
    3510          10 :   parameter_mix[ASP].push_back(-6153.667315935503);
    3511          10 :   parameter_mix[ASP].push_back(41296.118377286424);
    3512          10 :   parameter_mix[ASP].push_back(-28740.28391184026);
    3513          10 :   parameter_mix[ASP].push_back(6132.671533319127);
    3514             : 
    3515          10 :   parameter_mix[GLU].push_back(19156.03660739947);
    3516          10 :   parameter_mix[GLU].push_back(-110.90600703589246);
    3517          10 :   parameter_mix[GLU].push_back(-40319.3351514524);
    3518          10 :   parameter_mix[GLU].push_back(-14679.813393816446);
    3519          10 :   parameter_mix[GLU].push_back(96769.28565573556);
    3520          10 :   parameter_mix[GLU].push_back(-77909.09315520026);
    3521          10 :   parameter_mix[GLU].push_back(19770.047062759568);
    3522             : 
    3523          10 :   parameter_mix[ILE].push_back(20693.06215917923);
    3524          10 :   parameter_mix[ILE].push_back(-102.87208880594848);
    3525          10 :   parameter_mix[ILE].push_back(-41080.44036311675);
    3526          10 :   parameter_mix[ILE].push_back(-12874.439649378206);
    3527          10 :   parameter_mix[ILE].push_back(84947.33147117581);
    3528          10 :   parameter_mix[ILE].push_back(-63779.07871450237);
    3529          10 :   parameter_mix[ILE].push_back(14938.919981690511);
    3530             : 
    3531          10 :   parameter_mix[LEU].push_back(20693.062159179233);
    3532          10 :   parameter_mix[LEU].push_back(-114.09539845409269);
    3533          10 :   parameter_mix[LEU].push_back(-42417.3431074524);
    3534          10 :   parameter_mix[LEU].push_back(-14393.801090829746);
    3535          10 :   parameter_mix[LEU].push_back(93640.48403643962);
    3536          10 :   parameter_mix[LEU].push_back(-71990.10354816525);
    3537          10 :   parameter_mix[LEU].push_back(17299.01082057651);
    3538             : 
    3539          10 :   parameter_mix[MET].push_back(22400.800002738917);
    3540          10 :   parameter_mix[MET].push_back(-138.14469221559762);
    3541          10 :   parameter_mix[MET].push_back(-53013.97694299946);
    3542          10 :   parameter_mix[MET].push_back(-21079.899452619244);
    3543          10 :   parameter_mix[MET].push_back(148607.1089339919);
    3544          10 :   parameter_mix[MET].push_back(-129827.63962878387);
    3545          10 :   parameter_mix[MET].push_back(35882.3297822684);
    3546             : 
    3547          10 :   parameter_mix[ASN].push_back(14384.287416519475);
    3548          10 :   parameter_mix[ASN].push_back(-55.24976731179147);
    3549          10 :   parameter_mix[ASN].push_back(-25372.978199926372);
    3550          10 :   parameter_mix[ASN].push_back(-6646.452004616925);
    3551          10 :   parameter_mix[ASN].push_back(44594.5027556148);
    3552          10 :   parameter_mix[ASN].push_back(-31202.511764907107);
    3553          10 :   parameter_mix[ASN].push_back(6703.764135873442);
    3554             : 
    3555          10 :   parameter_mix[PRO].push_back(13503.797145659117);
    3556          10 :   parameter_mix[PRO].push_back(-38.58316011847087);
    3557          10 :   parameter_mix[PRO].push_back(-21446.17847324053);
    3558          10 :   parameter_mix[PRO].push_back(-4480.55896170459);
    3559          10 :   parameter_mix[PRO].push_back(31274.287350083254);
    3560          10 :   parameter_mix[PRO].push_back(-19984.249229169505);
    3561          10 :   parameter_mix[PRO].push_back(3782.272312712745);
    3562             : 
    3563          10 :   parameter_mix[GLN].push_back(19938.23724683901);
    3564          10 :   parameter_mix[GLN].push_back(-121.24884503048865);
    3565          10 :   parameter_mix[GLN].push_back(-43928.589472297834);
    3566          10 :   parameter_mix[GLN].push_back(-16805.069757865473);
    3567          10 :   parameter_mix[GLN].push_back(112831.61348476357);
    3568          10 :   parameter_mix[GLN].push_back(-93979.08819184235);
    3569          10 :   parameter_mix[GLN].push_back(24741.563493163732);
    3570             : 
    3571          10 :   parameter_mix[SER].push_back(8813.67020471935);
    3572          10 :   parameter_mix[SER].push_back(-18.291615317790175);
    3573          10 :   parameter_mix[SER].push_back(-12585.074732466266);
    3574          10 :   parameter_mix[SER].push_back(-2064.454891600786);
    3575          10 :   parameter_mix[SER].push_back(15273.905065790364);
    3576          10 :   parameter_mix[SER].push_back(-8813.056005263466);
    3577          10 :   parameter_mix[SER].push_back(1404.9812302289881);
    3578             : 
    3579          10 :   parameter_mix[THR].push_back(13233.997179639062);
    3580          10 :   parameter_mix[THR].push_back(-39.40454157416847);
    3581          10 :   parameter_mix[THR].push_back(-21430.58717233547);
    3582          10 :   parameter_mix[THR].push_back(-4566.332853710876);
    3583          10 :   parameter_mix[THR].push_back(31717.497780073558);
    3584          10 :   parameter_mix[THR].push_back(-20299.614304281313);
    3585          10 :   parameter_mix[THR].push_back(3837.207224537505);
    3586             : 
    3587          10 :   parameter_mix[VAL].push_back(15135.438016299158);
    3588          10 :   parameter_mix[VAL].push_back(-51.415141550353205);
    3589          10 :   parameter_mix[VAL].push_back(-25859.078442379723);
    3590          10 :   parameter_mix[VAL].push_back(-6007.697291593915);
    3591          10 :   parameter_mix[VAL].push_back(40997.969600345634);
    3592          10 :   parameter_mix[VAL].push_back(-27036.257386814148);
    3593          10 :   parameter_mix[VAL].push_back(5328.922363811635);
    3594             : 
    3595          10 :   parameter_mix[ALA].push_back(6586.942863819189);
    3596          10 :   parameter_mix[ALA].push_back(-10.96713559950907);
    3597          10 :   parameter_mix[ALA].push_back(-8758.836131731925);
    3598          10 :   parameter_mix[ALA].push_back(-1223.1723720922605);
    3599          10 :   parameter_mix[ALA].push_back(9475.182453543037);
    3600          10 :   parameter_mix[ALA].push_back(-5124.611191433804);
    3601          10 :   parameter_mix[ALA].push_back(721.7625962949869);
    3602             : 
    3603          10 :   parameter_mix[GLY].push_back(3596.0718542192762);
    3604          10 :   parameter_mix[GLY].push_back(-4.079285964028122);
    3605          10 :   parameter_mix[GLY].push_back(-4089.4217504382686);
    3606          10 :   parameter_mix[GLY].push_back(-450.9650932154967);
    3607          10 :   parameter_mix[GLY].push_back(3737.026778223427);
    3608          10 :   parameter_mix[GLY].push_back(-1862.9856575810572);
    3609          10 :   parameter_mix[GLY].push_back(222.97288276257262);
    3610             : 
    3611          10 :   parameter_mix[HIS].push_back(21779.124723299232);
    3612          10 :   parameter_mix[HIS].push_back(-131.4603421188538);
    3613          10 :   parameter_mix[HIS].push_back(-49068.74667421681);
    3614          10 :   parameter_mix[HIS].push_back(-18685.909496392127);
    3615          10 :   parameter_mix[HIS].push_back(127724.60792384286);
    3616          10 :   parameter_mix[HIS].push_back(-107419.22159440348);
    3617          10 :   parameter_mix[HIS].push_back(28577.228634530744);
    3618             : 
    3619          10 :   parameter_vac[TRP].push_back(9599.949107368187);
    3620          10 :   parameter_vac[TRP].push_back(-66.35331786175249);
    3621          10 :   parameter_vac[TRP].push_back(-26311.640290970638);
    3622          10 :   parameter_vac[TRP].push_back(-11577.314600529338);
    3623          10 :   parameter_vac[TRP].push_back(85847.52554160352);
    3624          10 :   parameter_vac[TRP].push_back(-79417.17065742958);
    3625          10 :   parameter_vac[TRP].push_back(23090.348430572863);
    3626             : 
    3627          10 :   parameter_vac[TYR].push_back(7393.553846412945);
    3628          10 :   parameter_vac[TYR].push_back(-27.51954035778316);
    3629          10 :   parameter_vac[TYR].push_back(-20329.10485615286);
    3630          10 :   parameter_vac[TYR].push_back(-7444.276340508767);
    3631          10 :   parameter_vac[TYR].push_back(66343.22315132803);
    3632          10 :   parameter_vac[TYR].push_back(-64470.58721639446);
    3633          10 :   parameter_vac[TYR].push_back(19614.63563898146);
    3634             : 
    3635          10 :   parameter_vac[PHE].push_back(6081.874997705279);
    3636          10 :   parameter_vac[PHE].push_back(-40.474695969500104);
    3637          10 :   parameter_vac[PHE].push_back(-14354.627390498901);
    3638          10 :   parameter_vac[PHE].push_back(-6156.69750315959);
    3639          10 :   parameter_vac[PHE].push_back(42580.84239395237);
    3640          10 :   parameter_vac[PHE].push_back(-37704.09749809582);
    3641          10 :   parameter_vac[PHE].push_back(10543.005717478625);
    3642             : 
    3643          10 :   parameter_vac[HIP].push_back(5325.791987063724);
    3644          10 :   parameter_vac[HIP].push_back(-35.512112257530156);
    3645          10 :   parameter_vac[HIP].push_back(-11488.443296477566);
    3646          10 :   parameter_vac[HIP].push_back(-4916.724935318093);
    3647          10 :   parameter_vac[HIP].push_back(32134.338675979947);
    3648          10 :   parameter_vac[HIP].push_back(-27388.387595464188);
    3649          10 :   parameter_vac[HIP].push_back(7359.899986748838);
    3650             : 
    3651          10 :   parameter_vac[ARG].push_back(7220.306892248294);
    3652          10 :   parameter_vac[ARG].push_back(-20.65912886190997);
    3653          10 :   parameter_vac[ARG].push_back(-22700.70129646048);
    3654          10 :   parameter_vac[ARG].push_back(-8696.901551172636);
    3655          10 :   parameter_vac[ARG].push_back(83641.36257312517);
    3656          10 :   parameter_vac[ARG].push_back(-85237.33676336925);
    3657          10 :   parameter_vac[ARG].push_back(26899.162688310953);
    3658             : 
    3659          10 :   parameter_vac[LYS].push_back(5038.613120729022);
    3660          10 :   parameter_vac[LYS].push_back(-34.08366887546492);
    3661          10 :   parameter_vac[LYS].push_back(-12812.921120433106);
    3662          10 :   parameter_vac[LYS].push_back(-5843.761329082788);
    3663          10 :   parameter_vac[LYS].push_back(42419.08427856609);
    3664          10 :   parameter_vac[LYS].push_back(-39460.49038159249);
    3665          10 :   parameter_vac[LYS].push_back(11542.320830663035);
    3666             : 
    3667          10 :   parameter_vac[CYS].push_back(2915.0458981763995);
    3668          10 :   parameter_vac[CYS].push_back(-5.380571839804511);
    3669          10 :   parameter_vac[CYS].push_back(-3865.366285883624);
    3670          10 :   parameter_vac[CYS].push_back(-602.3275271136284);
    3671          10 :   parameter_vac[CYS].push_back(4524.133086072617);
    3672          10 :   parameter_vac[CYS].push_back(-2537.87137720241);
    3673          10 :   parameter_vac[CYS].push_back(381.52870758240016);
    3674             : 
    3675          10 :   parameter_vac[CYX].push_back(2808.068549348085);
    3676          10 :   parameter_vac[CYX].push_back(-7.372260063948);
    3677          10 :   parameter_vac[CYX].push_back(-4017.492317531980);
    3678          10 :   parameter_vac[CYX].push_back(-840.151815748375);
    3679          10 :   parameter_vac[CYX].push_back(5800.074437790741);
    3680          10 :   parameter_vac[CYX].push_back(-3637.868824045027);
    3681          10 :   parameter_vac[CYX].push_back(659.528934122407);
    3682             : 
    3683          10 :   parameter_vac[ASP].push_back(3479.750728224898);
    3684          10 :   parameter_vac[ASP].push_back(-10.33897891836596);
    3685          10 :   parameter_vac[ASP].push_back(-5382.628188436401);
    3686          10 :   parameter_vac[ASP].push_back(-1183.8060939576694);
    3687          10 :   parameter_vac[ASP].push_back(8100.082378727997);
    3688          10 :   parameter_vac[ASP].push_back(-5162.630696148773);
    3689          10 :   parameter_vac[ASP].push_back(958.993022379732);
    3690             : 
    3691          10 :   parameter_vac[GLU].push_back(4487.461543955491);
    3692          10 :   parameter_vac[GLU].push_back(-26.671865751817936);
    3693          10 :   parameter_vac[GLU].push_back(-8829.738168429001);
    3694          10 :   parameter_vac[GLU].push_back(-3297.668395415257);
    3695          10 :   parameter_vac[GLU].push_back(20686.457747123466);
    3696          10 :   parameter_vac[GLU].push_back(-16030.814134196151);
    3697          10 :   parameter_vac[GLU].push_back(3858.4457728083275);
    3698             : 
    3699          10 :   parameter_vac[ILE].push_back(3842.5968201937776);
    3700          10 :   parameter_vac[ILE].push_back(-13.848165050578492);
    3701          10 :   parameter_vac[ILE].push_back(-6480.062699452774);
    3702          10 :   parameter_vac[ILE].push_back(-1636.3888925440413);
    3703          10 :   parameter_vac[ILE].push_back(10967.333210698738);
    3704          10 :   parameter_vac[ILE].push_back(-7483.704914714421);
    3705          10 :   parameter_vac[ILE].push_back(1548.5696047594895);
    3706             : 
    3707          10 :   parameter_vac[LEU].push_back(3842.5968201937785);
    3708          10 :   parameter_vac[LEU].push_back(-16.2745108270949);
    3709          10 :   parameter_vac[LEU].push_back(-6807.110269770606);
    3710          10 :   parameter_vac[LEU].push_back(-1926.6303434106014);
    3711          10 :   parameter_vac[LEU].push_back(12577.952756390941);
    3712          10 :   parameter_vac[LEU].push_back(-8829.40489330961);
    3713          10 :   parameter_vac[LEU].push_back(1882.919316016889);
    3714             : 
    3715          10 :   parameter_vac[MET].push_back(4898.512892967389);
    3716          10 :   parameter_vac[MET].push_back(-30.588244886468207);
    3717          10 :   parameter_vac[MET].push_back(-10159.093665859045);
    3718          10 :   parameter_vac[MET].push_back(-4025.0261508449653);
    3719          10 :   parameter_vac[MET].push_back(26007.394369425827);
    3720          10 :   parameter_vac[MET].push_back(-21199.218680206573);
    3721          10 :   parameter_vac[MET].push_back(5423.004225853842);
    3722             : 
    3723          10 :   parameter_vac[ASN].push_back(3598.1423998115492);
    3724          10 :   parameter_vac[ASN].push_back(-10.357995638888545);
    3725          10 :   parameter_vac[ASN].push_back(-5565.603011562138);
    3726          10 :   parameter_vac[ASN].push_back(-1190.3294930971967);
    3727          10 :   parameter_vac[ASN].push_back(8227.920711951123);
    3728          10 :   parameter_vac[ASN].push_back(-5222.61541118056);
    3729          10 :   parameter_vac[ASN].push_back(968.593406702772);
    3730             : 
    3731          10 :   parameter_vac[PRO].push_back(2702.925890807494);
    3732          10 :   parameter_vac[PRO].push_back(-4.11690159421177);
    3733          10 :   parameter_vac[PRO].push_back(-3395.325331307625);
    3734          10 :   parameter_vac[PRO].push_back(-458.95242128002894);
    3735          10 :   parameter_vac[PRO].push_back(3584.3640448715823);
    3736          10 :   parameter_vac[PRO].push_back(-1921.4140769384692);
    3737          10 :   parameter_vac[PRO].push_back(267.08577848319516);
    3738             : 
    3739          10 :   parameter_vac[GLN].push_back(4621.773132292556);
    3740          10 :   parameter_vac[GLN].push_back(-29.511778489038818);
    3741          10 :   parameter_vac[GLN].push_back(-9486.077450010192);
    3742          10 :   parameter_vac[GLN].push_back(-3768.5756897489828);
    3743          10 :   parameter_vac[GLN].push_back(23828.07111260487);
    3744          10 :   parameter_vac[GLN].push_back(-19110.205836780202);
    3745          10 :   parameter_vac[GLN].push_back(4791.718204894083);
    3746             : 
    3747          10 :   parameter_vac[SER].push_back(2115.1504654043965);
    3748          10 :   parameter_vac[SER].push_back(-2.4158378234251234);
    3749          10 :   parameter_vac[SER].push_back(-2488.1131972903822);
    3750          10 :   parameter_vac[SER].push_back(-263.64072945387693);
    3751          10 :   parameter_vac[SER].push_back(2251.376687850687);
    3752          10 :   parameter_vac[SER].push_back(-1066.0790768852626);
    3753          10 :   parameter_vac[SER].push_back(105.5155397911316);
    3754             : 
    3755          10 :   parameter_vac[THR].push_back(2914.9061707158835);
    3756          10 :   parameter_vac[THR].push_back(-5.032844592364407);
    3757          10 :   parameter_vac[THR].push_back(-3903.2546253886653);
    3758          10 :   parameter_vac[THR].push_back(-559.4734271244915);
    3759          10 :   parameter_vac[THR].push_back(4315.044828297787);
    3760          10 :   parameter_vac[THR].push_back(-2331.211908177365);
    3761          10 :   parameter_vac[THR].push_back(323.76849758109853);
    3762             : 
    3763          10 :   parameter_vac[VAL].push_back(2914.8744247581953);
    3764          10 :   parameter_vac[VAL].push_back(-5.847217106105881);
    3765          10 :   parameter_vac[VAL].push_back(-4096.370479502377);
    3766          10 :   parameter_vac[VAL].push_back(-655.2917606620404);
    3767          10 :   parameter_vac[VAL].push_back(4888.77261250007);
    3768          10 :   parameter_vac[VAL].push_back(-2765.7552774385167);
    3769          10 :   parameter_vac[VAL].push_back(421.9081598033515);
    3770             : 
    3771          10 :   parameter_vac[ALA].push_back(1443.3438146824446);
    3772          10 :   parameter_vac[ALA].push_back(-1.1234573178567506);
    3773          10 :   parameter_vac[ALA].push_back(-1492.4547663363514);
    3774          10 :   parameter_vac[ALA].push_back(-121.47935619968672);
    3775          10 :   parameter_vac[ALA].push_back(1139.689871538201);
    3776          10 :   parameter_vac[ALA].push_back(-483.8336547914466);
    3777          10 :   parameter_vac[ALA].push_back(32.48231950404626);
    3778             : 
    3779          10 :   parameter_vac[GLY].push_back(899.5356000422925);
    3780          10 :   parameter_vac[GLY].push_back(-0.5200880084066986);
    3781          10 :   parameter_vac[GLY].push_back(-787.5892053280859);
    3782          10 :   parameter_vac[GLY].push_back(-56.07596224884467);
    3783          10 :   parameter_vac[GLY].push_back(546.4212287680981);
    3784          10 :   parameter_vac[GLY].push_back(-222.2667666932616);
    3785          10 :   parameter_vac[GLY].push_back(12.474587265791476);
    3786             : 
    3787          10 :   parameter_vac[HIS].push_back(5180.842705000207);
    3788          10 :   parameter_vac[HIS].push_back(-29.578973475252766);
    3789          10 :   parameter_vac[HIS].push_back(-10323.417251934066);
    3790          10 :   parameter_vac[HIS].push_back(-3788.977215582307);
    3791          10 :   parameter_vac[HIS].push_back(24427.720792289427);
    3792          10 :   parameter_vac[HIS].push_back(-19307.35836837878);
    3793          10 :   parameter_vac[HIS].push_back(4780.831414992477);
    3794             : 
    3795             :   // NUCLEIC ACIDS
    3796          10 :   parameter_solv[BB_PO3].push_back(1464.5929001192262);
    3797          10 :   parameter_solv[BB_PO3].push_back(-2.316908934494931);
    3798          10 :   parameter_solv[BB_PO3].push_back(-1882.4844584696532);
    3799          10 :   parameter_solv[BB_PO3].push_back(-258.8660305554736);
    3800          10 :   parameter_solv[BB_PO3].push_back(2007.5216385943972);
    3801          10 :   parameter_solv[BB_PO3].push_back(-1087.6423562424877);
    3802          10 :   parameter_solv[BB_PO3].push_back(154.89236486681165);
    3803             : 
    3804          10 :   parameter_solv[BB_PO2].push_back(575.5201001192197);
    3805          10 :   parameter_solv[BB_PO2].push_back(-0.6126595489733868);
    3806          10 :   parameter_solv[BB_PO2].push_back(-623.3371092254897);
    3807          10 :   parameter_solv[BB_PO2].push_back(-68.05795957022156);
    3808          10 :   parameter_solv[BB_PO2].push_back(561.8052621243662);
    3809          10 :   parameter_solv[BB_PO2].push_back(-283.39573309540344);
    3810          10 :   parameter_solv[BB_PO2].push_back(35.55001698010027);
    3811             : 
    3812          10 :   parameter_solv[BB_DNA].push_back(21211.009600118316);
    3813          10 :   parameter_solv[BB_DNA].push_back(-90.18805990529991);
    3814          10 :   parameter_solv[BB_DNA].push_back(-39731.1337351215);
    3815          10 :   parameter_solv[BB_DNA].push_back(-10920.373563712878);
    3816          10 :   parameter_solv[BB_DNA].push_back(72882.21702424977);
    3817          10 :   parameter_solv[BB_DNA].push_back(-51747.487078112754);
    3818          10 :   parameter_solv[BB_DNA].push_back(11308.67842901876);
    3819             : 
    3820          10 :   parameter_solv[BB_DNA_5].push_back(22737.624100119025);
    3821          10 :   parameter_solv[BB_DNA_5].push_back(-102.72714886664163);
    3822          10 :   parameter_solv[BB_DNA_5].push_back(-43685.329677789705);
    3823          10 :   parameter_solv[BB_DNA_5].push_back(-12564.259374093454);
    3824          10 :   parameter_solv[BB_DNA_5].push_back(83454.87540484876);
    3825          10 :   parameter_solv[BB_DNA_5].push_back(-60367.15652138888);
    3826          10 :   parameter_solv[BB_DNA_5].push_back(13507.33372986899);
    3827             : 
    3828          10 :   parameter_solv[BB_DNA_3].push_back(22737.62410011902);
    3829          10 :   parameter_solv[BB_DNA_3].push_back(-101.57816684452263);
    3830          10 :   parameter_solv[BB_DNA_3].push_back(-43488.53670557616);
    3831          10 :   parameter_solv[BB_DNA_3].push_back(-12345.056184958417);
    3832          10 :   parameter_solv[BB_DNA_3].push_back(81963.5236411489);
    3833          10 :   parameter_solv[BB_DNA_3].push_back(-58791.59443618196);
    3834          10 :   parameter_solv[BB_DNA_3].push_back(13003.199362335576);
    3835             : 
    3836          10 :   parameter_solv[BB_RNA].push_back(23953.752900120977);
    3837          10 :   parameter_solv[BB_RNA].push_back(-117.35779348824401);
    3838          10 :   parameter_solv[BB_RNA].push_back(-47644.41735332837);
    3839          10 :   parameter_solv[BB_RNA].push_back(-14641.556643789863);
    3840          10 :   parameter_solv[BB_RNA].push_back(96893.48627050382);
    3841          10 :   parameter_solv[BB_RNA].push_back(-72249.62534169314);
    3842          10 :   parameter_solv[BB_RNA].push_back(16792.05552105538);
    3843             : 
    3844          10 :   parameter_solv[BB_RNA_5].push_back(25574.406400119024);
    3845          10 :   parameter_solv[BB_RNA_5].push_back(-131.99642772933734);
    3846          10 :   parameter_solv[BB_RNA_5].push_back(-52136.51404531249);
    3847          10 :   parameter_solv[BB_RNA_5].push_back(-16682.14273917604);
    3848          10 :   parameter_solv[BB_RNA_5].push_back(110278.019216394);
    3849          10 :   parameter_solv[BB_RNA_5].push_back(-83715.92027818545);
    3850          10 :   parameter_solv[BB_RNA_5].push_back(19875.891337706045);
    3851             : 
    3852          10 :   parameter_solv[BB_RNA_3].push_back(25574.406400119024);
    3853          10 :   parameter_solv[BB_RNA_3].push_back(-127.96875237036166);
    3854          10 :   parameter_solv[BB_RNA_3].push_back(-51407.183917584385);
    3855          10 :   parameter_solv[BB_RNA_3].push_back(-15922.900669975606);
    3856          10 :   parameter_solv[BB_RNA_3].push_back(105078.58889106264);
    3857          10 :   parameter_solv[BB_RNA_3].push_back(-78289.16276190648);
    3858          10 :   parameter_solv[BB_RNA_3].push_back(18156.83214344118);
    3859             : 
    3860          10 :   parameter_solv[BASE_A].push_back(13282.562500119211);
    3861          10 :   parameter_solv[BASE_A].push_back(-76.45124168404048);
    3862          10 :   parameter_solv[BASE_A].push_back(-28376.06994108963);
    3863          10 :   parameter_solv[BASE_A].push_back(-9972.910773722022);
    3864          10 :   parameter_solv[BASE_A].push_back(65873.86341939073);
    3865          10 :   parameter_solv[BASE_A].push_back(-52064.33492910885);
    3866          10 :   parameter_solv[BASE_A].push_back(12931.608989412513);
    3867             : 
    3868          10 :   parameter_solv[BASE_C].push_back(10600.76160011891);
    3869          10 :   parameter_solv[BASE_C].push_back(-49.1670871249108);
    3870          10 :   parameter_solv[BASE_C].push_back(-20239.818742072875);
    3871          10 :   parameter_solv[BASE_C].push_back(-6020.278780090207);
    3872          10 :   parameter_solv[BASE_C].push_back(39632.13288981881);
    3873          10 :   parameter_solv[BASE_C].push_back(-28954.779736165576);
    3874          10 :   parameter_solv[BASE_C].push_back(6551.541109526305);
    3875             : 
    3876          10 :   parameter_solv[BASE_G].push_back(15470.384400119934);
    3877          10 :   parameter_solv[BASE_G].push_back(-93.8013620200972);
    3878          10 :   parameter_solv[BASE_G].push_back(-36188.29687013545);
    3879          10 :   parameter_solv[BASE_G].push_back(-13717.685098209471);
    3880          10 :   parameter_solv[BASE_G].push_back(95658.18473657136);
    3881          10 :   parameter_solv[BASE_G].push_back(-81262.37811451119);
    3882          10 :   parameter_solv[BASE_G].push_back(21841.903930943085);
    3883             : 
    3884          10 :   parameter_solv[BASE_T].push_back(17210.81610011936);
    3885          10 :   parameter_solv[BASE_T].push_back(-93.10189802920208);
    3886          10 :   parameter_solv[BASE_T].push_back(-36466.51927689957);
    3887          10 :   parameter_solv[BASE_T].push_back(-12425.55615716932);
    3888          10 :   parameter_solv[BASE_T].push_back(83847.427808925);
    3889          10 :   parameter_solv[BASE_T].push_back(-66735.64997846584);
    3890          10 :   parameter_solv[BASE_T].push_back(16757.3463987507);
    3891             : 
    3892          10 :   parameter_solv[BASE_U].push_back(10909.802500119395);
    3893          10 :   parameter_solv[BASE_U].push_back(-46.17712672768298);
    3894          10 :   parameter_solv[BASE_U].push_back(-20149.67695512526);
    3895          10 :   parameter_solv[BASE_U].push_back(-5590.242961204435);
    3896          10 :   parameter_solv[BASE_U].push_back(37169.2740983132);
    3897          10 :   parameter_solv[BASE_U].push_back(-26475.631627167604);
    3898          10 :   parameter_solv[BASE_U].push_back(5808.201015156168);
    3899             : 
    3900          10 :   parameter_mix[BB_PO3].push_back(3061.4050527391964);
    3901          10 :   parameter_mix[BB_PO3].push_back(-2.022452986623699);
    3902          10 :   parameter_mix[BB_PO3].push_back(-2998.2603666141363);
    3903          10 :   parameter_mix[BB_PO3].push_back(-218.44256405859076);
    3904          10 :   parameter_mix[BB_PO3].push_back(2113.3633950628328);
    3905          10 :   parameter_mix[BB_PO3].push_back(-868.4021757095805);
    3906          10 :   parameter_mix[BB_PO3].push_back(52.19052064107954);
    3907             : 
    3908          10 :   parameter_mix[BB_PO2].push_back(1487.2888381188868);
    3909          10 :   parameter_mix[BB_PO2].push_back(-0.6155376265599789);
    3910          10 :   parameter_mix[BB_PO2].push_back(-1181.5076027691764);
    3911          10 :   parameter_mix[BB_PO2].push_back(-66.25027450710594);
    3912          10 :   parameter_mix[BB_PO2].push_back(697.0421991965113);
    3913          10 :   parameter_mix[BB_PO2].push_back(-261.8559466354847);
    3914          10 :   parameter_mix[BB_PO2].push_back(9.974337082362194);
    3915             : 
    3916          10 :   parameter_mix[BB_DNA].push_back(17766.29474499878);
    3917          10 :   parameter_mix[BB_DNA].push_back(-48.97330188566253);
    3918          10 :   parameter_mix[BB_DNA].push_back(-28199.563596327207);
    3919          10 :   parameter_mix[BB_DNA].push_back(-5623.82085602494);
    3920          10 :   parameter_mix[BB_DNA].push_back(39646.22954828498);
    3921          10 :   parameter_mix[BB_DNA].push_back(-24658.81157651943);
    3922          10 :   parameter_mix[BB_DNA].push_back(4453.73906293146);
    3923             : 
    3924          10 :   parameter_mix[BB_DNA_5].push_back(18696.09744203927);
    3925          10 :   parameter_mix[BB_DNA_5].push_back(-56.29408880833802);
    3926          10 :   parameter_mix[BB_DNA_5].push_back(-30486.108599707608);
    3927          10 :   parameter_mix[BB_DNA_5].push_back(-6524.195857141158);
    3928          10 :   parameter_mix[BB_DNA_5].push_back(45280.80142686446);
    3929          10 :   parameter_mix[BB_DNA_5].push_back(-29007.98616567993);
    3930          10 :   parameter_mix[BB_DNA_5].push_back(5488.566965501818);
    3931             : 
    3932          10 :   parameter_mix[BB_DNA_3].push_back(18696.097442039274);
    3933          10 :   parameter_mix[BB_DNA_3].push_back(-55.5645003501971);
    3934          10 :   parameter_mix[BB_DNA_3].push_back(-30422.262113654506);
    3935          10 :   parameter_mix[BB_DNA_3].push_back(-6409.659659309089);
    3936          10 :   parameter_mix[BB_DNA_3].push_back(44605.76043515699);
    3937          10 :   parameter_mix[BB_DNA_3].push_back(-28295.62152988411);
    3938          10 :   parameter_mix[BB_DNA_3].push_back(5262.5765863484);
    3939             : 
    3940          10 :   parameter_mix[BB_RNA].push_back(21356.177105457366);
    3941          10 :   parameter_mix[BB_RNA].push_back(-76.73490647754872);
    3942          10 :   parameter_mix[BB_RNA].push_back(-36845.234814782816);
    3943          10 :   parameter_mix[BB_RNA].push_back(-9066.559625582728);
    3944          10 :   parameter_mix[BB_RNA].push_back(61167.998793390485);
    3945          10 :   parameter_mix[BB_RNA].push_back(-41467.23384423218);
    3946          10 :   parameter_mix[BB_RNA].push_back(8518.937793863257);
    3947             : 
    3948          10 :   parameter_mix[BB_RNA_5].push_back(22386.63276427916);
    3949          10 :   parameter_mix[BB_RNA_5].push_back(-85.70426456933487);
    3950          10 :   parameter_mix[BB_RNA_5].push_back(-39490.50298502025);
    3951          10 :   parameter_mix[BB_RNA_5].push_back(-10223.702594972712);
    3952          10 :   parameter_mix[BB_RNA_5].push_back(68450.60459618448);
    3953          10 :   parameter_mix[BB_RNA_5].push_back(-47409.91098159006);
    3954          10 :   parameter_mix[BB_RNA_5].push_back(10031.136138513202);
    3955             : 
    3956          10 :   parameter_mix[BB_RNA_3].push_back(22386.63276427916);
    3957          10 :   parameter_mix[BB_RNA_3].push_back(-81.93760812351479);
    3958          10 :   parameter_mix[BB_RNA_3].push_back(-39031.70571520093);
    3959          10 :   parameter_mix[BB_RNA_3].push_back(-9666.316086142708);
    3960          10 :   parameter_mix[BB_RNA_3].push_back(65120.07128126262);
    3961          10 :   parameter_mix[BB_RNA_3].push_back(-44110.13603681317);
    3962          10 :   parameter_mix[BB_RNA_3].push_back(9036.76498256983);
    3963             : 
    3964          10 :   parameter_mix[BASE_A].push_back(15897.31116611889);
    3965          10 :   parameter_mix[BASE_A].push_back(-67.86385832953485);
    3966          10 :   parameter_mix[BASE_A].push_back(-28851.754660951636);
    3967          10 :   parameter_mix[BASE_A].push_back(-8144.431687170413);
    3968          10 :   parameter_mix[BASE_A].push_back(53606.39082954489);
    3969          10 :   parameter_mix[BASE_A].push_back(-38083.51243782253);
    3970          10 :   parameter_mix[BASE_A].push_back(8293.47107993253);
    3971             : 
    3972          10 :   parameter_mix[BASE_C].push_back(11733.2828871599);
    3973          10 :   parameter_mix[BASE_C].push_back(-38.76775400274115);
    3974          10 :   parameter_mix[BASE_C].push_back(-19318.84666423464);
    3975          10 :   parameter_mix[BASE_C].push_back(-4507.915522704176);
    3976          10 :   parameter_mix[BASE_C].push_back(30576.57671286052);
    3977          10 :   parameter_mix[BASE_C].push_back(-20132.46696910844);
    3978          10 :   parameter_mix[BASE_C].push_back(3947.8727087996162);
    3979             : 
    3980          10 :   parameter_mix[BASE_G].push_back(19146.612417237808);
    3981          10 :   parameter_mix[BASE_G].push_back(-102.37046638004914);
    3982          10 :   parameter_mix[BASE_G].push_back(-38718.96478190546);
    3983          10 :   parameter_mix[BASE_G].push_back(-13238.106081860074);
    3984          10 :   parameter_mix[BASE_G].push_back(87309.07460288722);
    3985          10 :   parameter_mix[BASE_G].push_back(-68364.82442984737);
    3986          10 :   parameter_mix[BASE_G].push_back(16815.362401369);
    3987             : 
    3988          10 :   parameter_mix[BASE_T].push_back(17050.440260819163);
    3989          10 :   parameter_mix[BASE_T].push_back(-76.33750600643376);
    3990          10 :   parameter_mix[BASE_T].push_back(-31849.539096715005);
    3991          10 :   parameter_mix[BASE_T].push_back(-9484.498992751434);
    3992          10 :   parameter_mix[BASE_T].push_back(62881.895771680494);
    3993          10 :   parameter_mix[BASE_T].push_back(-46531.948557759024);
    3994          10 :   parameter_mix[BASE_T].push_back(10734.196329884822);
    3995             : 
    3996          10 :   parameter_mix[BASE_U].push_back(11904.095265219023);
    3997          10 :   parameter_mix[BASE_U].push_back(-34.67511054915295);
    3998          10 :   parameter_mix[BASE_U].push_back(-18842.275003104005);
    3999          10 :   parameter_mix[BASE_U].push_back(-3993.1174764890684);
    4000          10 :   parameter_mix[BASE_U].push_back(27663.625106762345);
    4001          10 :   parameter_mix[BASE_U].push_back(-17577.387831701515);
    4002          10 :   parameter_mix[BASE_U].push_back(3273.183903219142);
    4003             : 
    4004          10 :   parameter_vac[BB_PO3].push_back(1599.7962466063982);
    4005          10 :   parameter_vac[BB_PO3].push_back(-0.2734304923675441);
    4006          10 :   parameter_vac[BB_PO3].push_back(-1023.9448073303214);
    4007          10 :   parameter_vac[BB_PO3].push_back(-28.78655166266909);
    4008          10 :   parameter_vac[BB_PO3].push_back(426.4382937268249);
    4009          10 :   parameter_vac[BB_PO3].push_back(-109.57771615730755);
    4010          10 :   parameter_vac[BB_PO3].push_back(-10.244595559424265);
    4011             : 
    4012          10 :   parameter_vac[BB_PO2].push_back(960.8822037291127);
    4013          10 :   parameter_vac[BB_PO2].push_back(-0.09312135742159174);
    4014          10 :   parameter_vac[BB_PO2].push_back(-469.39643497461844);
    4015          10 :   parameter_vac[BB_PO2].push_back(-9.779346709041985);
    4016          10 :   parameter_vac[BB_PO2].push_back(162.1581550003227);
    4017          10 :   parameter_vac[BB_PO2].push_back(-37.06686233305618);
    4018          10 :   parameter_vac[BB_PO2].push_back(-4.695586672655664);
    4019             : 
    4020          10 :   parameter_vac[BB_DNA].push_back(3720.2522996838984);
    4021          10 :   parameter_vac[BB_DNA].push_back(-5.4229642176938);
    4022          10 :   parameter_vac[BB_DNA].push_back(-4800.897672711981);
    4023          10 :   parameter_vac[BB_DNA].push_back(-597.2274673070993);
    4024          10 :   parameter_vac[BB_DNA].push_back(4825.908840953665);
    4025          10 :   parameter_vac[BB_DNA].push_back(-2451.397454446564);
    4026          10 :   parameter_vac[BB_DNA].push_back(294.93071756645685);
    4027             : 
    4028          10 :   parameter_vac[BB_DNA_5].push_back(3843.234214262163);
    4029          10 :   parameter_vac[BB_DNA_5].push_back(-6.423078416284452);
    4030          10 :   parameter_vac[BB_DNA_5].push_back(-5112.1216386963115);
    4031          10 :   parameter_vac[BB_DNA_5].push_back(-713.8373583426668);
    4032          10 :   parameter_vac[BB_DNA_5].push_back(5547.545382516269);
    4033          10 :   parameter_vac[BB_DNA_5].push_back(-2973.5659871174225);
    4034          10 :   parameter_vac[BB_DNA_5].push_back(407.2789106630427);
    4035             : 
    4036          10 :   parameter_vac[BB_DNA_3].push_back(3843.234214262163);
    4037          10 :   parameter_vac[BB_DNA_3].push_back(-6.268636561475645);
    4038          10 :   parameter_vac[BB_DNA_3].push_back(-5103.192931218086);
    4039          10 :   parameter_vac[BB_DNA_3].push_back(-693.8705734390547);
    4040          10 :   parameter_vac[BB_DNA_3].push_back(5443.979645097035);
    4041          10 :   parameter_vac[BB_DNA_3].push_back(-2871.4337477324893);
    4042          10 :   parameter_vac[BB_DNA_3].push_back(377.3062915349831);
    4043             : 
    4044          10 :   parameter_vac[BB_RNA].push_back(4760.071443398374);
    4045          10 :   parameter_vac[BB_RNA].push_back(-11.0990475402486);
    4046          10 :   parameter_vac[BB_RNA].push_back(-6934.713566418421);
    4047          10 :   parameter_vac[BB_RNA].push_back(-1256.5202524085096);
    4048          10 :   parameter_vac[BB_RNA].push_back(9024.962587066922);
    4049          10 :   parameter_vac[BB_RNA].push_back(-5386.842667932241);
    4050          10 :   parameter_vac[BB_RNA].push_back(907.42947751372);
    4051             : 
    4052          10 :   parameter_vac[BB_RNA_5].push_back(4899.051406033406);
    4053          10 :   parameter_vac[BB_RNA_5].push_back(-12.279240472628238);
    4054          10 :   parameter_vac[BB_RNA_5].push_back(-7276.273570813667);
    4055          10 :   parameter_vac[BB_RNA_5].push_back(-1400.9520839250868);
    4056          10 :   parameter_vac[BB_RNA_5].push_back(9912.215823228895);
    4057          10 :   parameter_vac[BB_RNA_5].push_back(-6079.2565270404075);
    4058          10 :   parameter_vac[BB_RNA_5].push_back(1073.53428175472);
    4059             : 
    4060          10 :   parameter_vac[BB_RNA_3].push_back(4899.051406033406);
    4061          10 :   parameter_vac[BB_RNA_3].push_back(-11.642804195148194);
    4062          10 :   parameter_vac[BB_RNA_3].push_back(-7213.774619570996);
    4063          10 :   parameter_vac[BB_RNA_3].push_back(-1317.4463949342964);
    4064          10 :   parameter_vac[BB_RNA_3].push_back(9450.928929264686);
    4065          10 :   parameter_vac[BB_RNA_3].push_back(-5643.856117200917);
    4066          10 :   parameter_vac[BB_RNA_3].push_back(949.4698817407918);
    4067             : 
    4068          10 :   parameter_vac[BASE_A].push_back(4756.697028810353);
    4069          10 :   parameter_vac[BASE_A].push_back(-12.158940746852812);
    4070          10 :   parameter_vac[BASE_A].push_back(-7106.473423744205);
    4071          10 :   parameter_vac[BASE_A].push_back(-1376.295184173137);
    4072          10 :   parameter_vac[BASE_A].push_back(9747.132255557788);
    4073          10 :   parameter_vac[BASE_A].push_back(-5900.026637038756);
    4074          10 :   parameter_vac[BASE_A].push_back(1004.6226388342955);
    4075             : 
    4076          10 :   parameter_vac[BASE_C].push_back(3246.698975674651);
    4077          10 :   parameter_vac[BASE_C].push_back(-6.125036521218687);
    4078          10 :   parameter_vac[BASE_C].push_back(-4280.666521437201);
    4079          10 :   parameter_vac[BASE_C].push_back(-684.0183580843932);
    4080          10 :   parameter_vac[BASE_C].push_back(5077.062889522692);
    4081          10 :   parameter_vac[BASE_C].push_back(-2870.3239317750963);
    4082          10 :   parameter_vac[BASE_C].push_back(434.51551177863547);
    4083             : 
    4084          10 :   parameter_vac[BASE_G].push_back(5924.105658596052);
    4085          10 :   parameter_vac[BASE_G].push_back(-23.097956587232552);
    4086          10 :   parameter_vac[BASE_G].push_back(-10149.526301285418);
    4087          10 :   parameter_vac[BASE_G].push_back(-2752.9166169522528);
    4088          10 :   parameter_vac[BASE_G].push_back(18239.32985385683);
    4089          10 :   parameter_vac[BASE_G].push_back(-12749.277858800957);
    4090          10 :   parameter_vac[BASE_G].push_back(2715.354663787367);
    4091             : 
    4092          10 :   parameter_vac[BASE_T].push_back(4222.889713694404);
    4093          10 :   parameter_vac[BASE_T].push_back(-12.15861456306705);
    4094          10 :   parameter_vac[BASE_T].push_back(-6395.50289789404);
    4095          10 :   parameter_vac[BASE_T].push_back(-1421.3942549301012);
    4096          10 :   parameter_vac[BASE_T].push_back(9757.061008720135);
    4097          10 :   parameter_vac[BASE_T].push_back(-6399.630933839126);
    4098          10 :   parameter_vac[BASE_T].push_back(1258.9874225605438);
    4099             : 
    4100          10 :   parameter_vac[BASE_U].push_back(3247.251361465539);
    4101          10 :   parameter_vac[BASE_U].push_back(-5.211020853261115);
    4102          10 :   parameter_vac[BASE_U].push_back(-4125.165310360279);
    4103          10 :   parameter_vac[BASE_U].push_back(-575.1860235473902);
    4104          10 :   parameter_vac[BASE_U].push_back(4457.6562621371495);
    4105          10 :   parameter_vac[BASE_U].push_back(-2368.7250146912766);
    4106          10 :   parameter_vac[BASE_U].push_back(313.23997718445014);
    4107             : 
    4108       35262 :   for(unsigned i=0; i<atoms.size(); ++i) {
    4109       35252 :     std::string Aname = pdb.getAtomName(atoms[i]);
    4110       35252 :     std::string Rname = pdb.getResidueName(atoms[i]);
    4111       35252 :     Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
    4112       35252 :     if(Rname=="ALA") {
    4113        1790 :       atoi[residue_atom[i]]=ALA;
    4114       33462 :     } else if(Rname=="ARG") {
    4115        2160 :       atoi[residue_atom[i]]=ARG;
    4116       31302 :     } else if(Rname=="ASN") {
    4117        1800 :       atoi[residue_atom[i]]=ASN;
    4118       29502 :     } else if(Rname=="ASP") {
    4119        1560 :       atoi[residue_atom[i]]=ASP;
    4120       27942 :     } else if(Rname=="CYS") {
    4121         120 :       atoi[residue_atom[i]]=CYS;
    4122       27822 :     } else if(Rname=="CYX") {
    4123           0 :       atoi[residue_atom[i]]=CYX;
    4124       27822 :     } else if(Rname=="GLN") {
    4125        2584 :       atoi[residue_atom[i]]=GLN;
    4126       25238 :     } else if(Rname=="GLU") {
    4127        1190 :       atoi[residue_atom[i]]=GLU;
    4128       24048 :     } else if(Rname=="GLY") {
    4129        1548 :       atoi[residue_atom[i]]=GLY;
    4130       22500 :     } else if(Rname=="HIS") {
    4131           0 :       atoi[residue_atom[i]]=HIS;
    4132       22500 :     } else if(Rname=="HID") {
    4133           0 :       atoi[residue_atom[i]]=HIS;
    4134       22500 :     } else if(Rname=="HIE") {
    4135         360 :       atoi[residue_atom[i]]=HIS;
    4136       22140 :     } else if(Rname=="HIP") {
    4137           0 :       atoi[residue_atom[i]]=HIP;
    4138             :       // CHARMM NAMING FOR PROTONATION STATES OF HISTIDINE
    4139       22140 :     } else if(Rname=="HSD") {
    4140           0 :       atoi[residue_atom[i]]=HIS;
    4141       22140 :     } else if(Rname=="HSE") {
    4142           0 :       atoi[residue_atom[i]]=HIS;
    4143       22140 :     } else if(Rname=="HSP") {
    4144           0 :       atoi[residue_atom[i]]=HIP;
    4145       22140 :     } else if(Rname=="ILE") {
    4146        2160 :       atoi[residue_atom[i]]=ILE;
    4147       19980 :     } else if(Rname=="LEU") {
    4148        3800 :       atoi[residue_atom[i]]=LEU;
    4149       16180 :     } else if(Rname=="LYS") {
    4150        2600 :       atoi[residue_atom[i]]=LYS;
    4151       13580 :     } else if(Rname=="MET") {
    4152        1368 :       atoi[residue_atom[i]]=MET;
    4153       12212 :     } else if(Rname=="PHE") {
    4154        2520 :       atoi[residue_atom[i]]=PHE;
    4155        9692 :     } else if(Rname=="PRO") {
    4156        1870 :       atoi[residue_atom[i]]=PRO;
    4157        7822 :     } else if(Rname=="SER") {
    4158        1272 :       atoi[residue_atom[i]]=SER;
    4159        6550 :     } else if(Rname=="THR") {
    4160        1204 :       atoi[residue_atom[i]]=THR;
    4161        5346 :     } else if(Rname=="TRP") {
    4162           0 :       atoi[residue_atom[i]]=TRP;
    4163        5346 :     } else if(Rname=="TYR") {
    4164        1320 :       atoi[residue_atom[i]]=TYR;
    4165        4026 :     } else if(Rname=="VAL") {
    4166        2656 :       atoi[residue_atom[i]]=VAL;
    4167             :     }
    4168             :     // NUCLEIC ACIDS
    4169             :     // nucleobases are not automatically populated as an additional check on the health of the PDB.
    4170             :     // RNA - G
    4171        1370 :     else if(Rname=="G") {
    4172           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4173           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    4174           0 :         atoi [residue_atom[i]]=BB_PO2;
    4175           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4176           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4177           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4178           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4179           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4180           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4181           0 :         atoi[residue_atom[i]]=BB_RNA;
    4182           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4183           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4184           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4185           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4186           0 :         atoi[residue_atom[i]]=BASE_G;
    4187             :       } else {
    4188           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4189             :       }
    4190             :       // RNA - G3
    4191        1370 :     } else if(Rname=="G3") {
    4192           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4193           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4194           0 :         atoi [residue_atom[i]]=BB_PO2;
    4195           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    4196           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    4197           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    4198           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    4199           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    4200           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    4201           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    4202           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4203           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4204           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4205           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4206           0 :         atoi[residue_atom[i]]=BASE_G;
    4207             :       } else {
    4208           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4209             :       }
    4210             :       // RNA - G5
    4211        1370 :     } else if(Rname=="G5") {
    4212           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4213           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4214           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4215           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    4216           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    4217           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    4218           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    4219           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4220           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4221           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4222           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4223           0 :         atoi[residue_atom[i]]=BASE_G;
    4224             :       } else {
    4225           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4226             :       }
    4227             :       // RNA - GT
    4228        1370 :     } else if(Rname=="GT") {
    4229           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4230           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4231           0 :         atoi [residue_atom[i]]=BB_PO3;
    4232           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4233           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4234           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4235           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4236           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4237           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4238           0 :         atoi[residue_atom[i]]=BB_RNA;
    4239           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4240           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4241           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4242           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4243           0 :         atoi[residue_atom[i]]=BASE_G;
    4244             :       } else {
    4245           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4246             :       }
    4247             :       // RNA - U
    4248        1370 :     } else if(Rname=="U") {
    4249        4218 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4250        2166 :           Aname=="O1P" || Aname=="O2P"  ) {
    4251         114 :         atoi [residue_atom[i]]=BB_PO2;
    4252        3724 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4253        3116 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4254        2508 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4255        1938 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4256        1748 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4257        2280 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4258         608 :         atoi[residue_atom[i]]=BB_RNA;
    4259        1292 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    4260         684 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    4261         532 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    4262         418 :         atoi[residue_atom[i]]=BASE_U;
    4263             :       } else {
    4264           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4265             :       }
    4266             :       // RNA - U3
    4267         230 :     } else if(Rname=="U3") {
    4268         230 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4269         174 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4270           6 :         atoi [residue_atom[i]]=BB_PO2;
    4271         204 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    4272         172 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    4273         140 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    4274         110 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    4275          94 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    4276          78 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    4277          34 :         atoi[residue_atom[i]]=BB_RNA_3;
    4278          68 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    4279          36 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    4280          28 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    4281          22 :         atoi[residue_atom[i]]=BASE_U;
    4282             :       } else {
    4283           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4284             :       }
    4285             :       // RNA - U5
    4286         168 :     } else if(Rname=="U5") {
    4287         612 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4288         516 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4289         420 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4290         324 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    4291         264 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    4292         234 :           Aname=="H2'1" || Aname=="H5T" ) {
    4293         102 :         atoi[residue_atom[i]]=BB_RNA_5;
    4294         204 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    4295         108 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    4296          84 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    4297          66 :         atoi[residue_atom[i]]=BASE_U;
    4298             :       } else {
    4299           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4300             :       }
    4301             :       // RNA - UT
    4302           0 :     } else if(Rname=="UT") {
    4303           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4304           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4305           0 :         atoi [residue_atom[i]]=BB_PO3;
    4306           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4307           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4308           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4309           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4310           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4311           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4312           0 :         atoi[residue_atom[i]]=BB_RNA;
    4313           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    4314           0 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    4315           0 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    4316           0 :         atoi[residue_atom[i]]=BASE_U;
    4317             :       } else {
    4318           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4319             :       }
    4320             :       // RNA - A
    4321           0 :     } else if(Rname=="A") {
    4322           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4323           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    4324           0 :         atoi [residue_atom[i]]=BB_PO2;
    4325           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4326           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4327           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4328           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4329           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4330           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4331           0 :         atoi[residue_atom[i]]=BB_RNA;
    4332           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4333           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4334           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4335           0 :                 Aname=="H61" || Aname=="H62" ) {
    4336           0 :         atoi[residue_atom[i]]=BASE_A;
    4337             :       } else {
    4338           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4339             :       }
    4340             :       // RNA - A3
    4341           0 :     } else if(Rname=="A3") {
    4342           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4343           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4344           0 :         atoi [residue_atom[i]]=BB_PO2;
    4345           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    4346           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    4347           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    4348           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    4349           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    4350           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    4351           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    4352           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4353           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4354           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4355           0 :                 Aname=="H61" || Aname=="H62" ) {
    4356           0 :         atoi[residue_atom[i]]=BASE_A;
    4357             :       } else {
    4358           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4359             :       }
    4360             :       // RNA - A5
    4361           0 :     } else if(Rname=="A5") {
    4362           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4363           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4364           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4365           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    4366           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    4367           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    4368           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    4369           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4370           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4371           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4372           0 :                 Aname=="H61" || Aname=="H62" ) {
    4373           0 :         atoi[residue_atom[i]]=BASE_A;
    4374             :       } else {
    4375           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4376             :       }
    4377             :       // RNA - AT
    4378           0 :     } else if(Rname=="AT") {
    4379           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4380           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4381           0 :         atoi [residue_atom[i]]=BB_PO3;
    4382           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4383           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4384           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4385           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4386           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4387           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4388           0 :         atoi[residue_atom[i]]=BB_RNA;
    4389           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4390           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4391           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4392           0 :                 Aname=="H61" || Aname=="H62" ) {
    4393           0 :         atoi[residue_atom[i]]=BASE_A;
    4394             :       } else {
    4395           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4396             :       }
    4397             :       // RNA - C
    4398           0 :     } else if(Rname=="C") {
    4399           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4400           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    4401           0 :         atoi [residue_atom[i]]=BB_PO2;
    4402           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4403           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4404           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4405           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4406           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4407           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4408           0 :         atoi[residue_atom[i]]=BB_RNA;
    4409           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4410           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4411           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4412           0 :         atoi[residue_atom[i]]=BASE_C;
    4413             :       } else {
    4414           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4415             :       }
    4416             :       // RNA - C3
    4417           0 :     } else if(Rname=="C3") {
    4418           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4419           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4420           0 :         atoi [residue_atom[i]]=BB_PO2;
    4421           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    4422           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    4423           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    4424           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    4425           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    4426           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    4427           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    4428           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4429           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4430           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4431           0 :         atoi[residue_atom[i]]=BASE_C;
    4432             :       } else {
    4433           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4434             :       }
    4435             :       // RNA - C5
    4436           0 :     } else if(Rname=="C5") {
    4437           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4438           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4439           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4440           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    4441           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    4442           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    4443           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    4444           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4445           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4446           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4447           0 :         atoi[residue_atom[i]]=BASE_C;
    4448             :       } else {
    4449           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4450             :       }
    4451             :       // RNA - CT
    4452           0 :     } else if(Rname=="CT") {
    4453           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4454           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4455           0 :         atoi [residue_atom[i]]=BB_PO3;
    4456           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4457           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    4458           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    4459           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    4460           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    4461           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    4462           0 :         atoi[residue_atom[i]]=BB_RNA;
    4463           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4464           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4465           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4466           0 :         atoi[residue_atom[i]]=BASE_C;
    4467             :       } else {
    4468           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4469             :       }
    4470             :       // DNA - G
    4471           0 :     } else if(Rname=="DG") {
    4472           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4473           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    4474           0 :         atoi [residue_atom[i]]=BB_PO2;
    4475           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4476           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4477           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4478           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4479           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4480           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4481           0 :         atoi[residue_atom[i]]=BB_DNA;
    4482           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4483           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4484           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4485           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4486           0 :         atoi[residue_atom[i]]=BASE_G;
    4487             :       } else {
    4488           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4489             :       }
    4490             :       // DNA - G3
    4491           0 :     } else if(Rname=="DG3") {
    4492           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4493           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4494           0 :         atoi [residue_atom[i]]=BB_PO2;
    4495           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4496           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4497           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4498           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    4499           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4500             :                 Aname=="H3T" ) {
    4501           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    4502           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4503           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4504           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4505           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4506           0 :         atoi[residue_atom[i]]=BASE_G;
    4507             :       } else {
    4508           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4509             :       }
    4510             :       // DNA - G5
    4511           0 :     } else if(Rname=="DG5") {
    4512           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4513           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    4514           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4515           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4516           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4517             :           Aname=="H5T" ) {
    4518           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    4519           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4520           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4521           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4522           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4523           0 :         atoi[residue_atom[i]]=BASE_G;
    4524             :       } else {
    4525           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4526             :       }
    4527             :       // DNA - GT
    4528           0 :     } else if(Rname=="DGT") {
    4529           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4530           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4531           0 :         atoi [residue_atom[i]]=BB_PO3;
    4532           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4533           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4534           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4535           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4536           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4537           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4538           0 :         atoi[residue_atom[i]]=BB_DNA;
    4539           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4540           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4541           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4542           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4543           0 :         atoi[residue_atom[i]]=BASE_G;
    4544             :       } else {
    4545           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4546             :       }
    4547             :       // DNA - T
    4548           0 :     } else if(Rname=="DT") {
    4549           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4550           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    4551           0 :         atoi [residue_atom[i]]=BB_PO2;
    4552           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4553           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4554           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4555           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4556           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4557           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4558           0 :         atoi[residue_atom[i]]=BB_DNA;
    4559           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    4560           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    4561           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    4562           0 :                 Aname=="H72" || Aname=="H73" ) {
    4563           0 :         atoi[residue_atom[i]]=BASE_T;
    4564             :       } else {
    4565           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4566             :       }
    4567             :       // DNA - T3
    4568           0 :     } else if(Rname=="DT3") {
    4569           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4570           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4571           0 :         atoi [residue_atom[i]]=BB_PO2;
    4572           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4573           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4574           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4575           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    4576           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4577             :                 Aname=="H3T" ) {
    4578           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    4579           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    4580           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    4581           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    4582           0 :                 Aname=="H72" || Aname=="H73" ) {
    4583           0 :         atoi[residue_atom[i]]=BASE_T;
    4584             :       } else {
    4585           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4586             :       }
    4587             :       // DNA - T5
    4588           0 :     } else if(Rname=="DT5") {
    4589           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4590           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    4591           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4592           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4593           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4594             :           Aname=="H5T" ) {
    4595           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    4596           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    4597           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    4598           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    4599           0 :                 Aname=="H72" || Aname=="H73" ) {
    4600           0 :         atoi[residue_atom[i]]=BASE_T;
    4601             :       } else {
    4602           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4603             :       }
    4604             :       // DNA - TT
    4605           0 :     } else if(Rname=="DTT") {
    4606           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4607           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4608           0 :         atoi [residue_atom[i]]=BB_PO3;
    4609           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4610           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4611           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4612           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4613           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4614           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4615           0 :         atoi[residue_atom[i]]=BB_DNA;
    4616           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    4617           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    4618           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    4619           0 :                 Aname=="H72" || Aname=="H73" ) {
    4620           0 :         atoi[residue_atom[i]]=BASE_T;
    4621             :       } else {
    4622           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4623             :       }
    4624             :       // DNA - A
    4625           0 :     } else if(Rname=="DA") {
    4626           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4627           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    4628           0 :         atoi [residue_atom[i]]=BB_PO2;
    4629           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4630           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4631           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4632           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4633           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4634           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4635           0 :         atoi[residue_atom[i]]=BB_DNA;
    4636           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4637           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4638           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4639           0 :                 Aname=="H61" || Aname=="H62" ) {
    4640           0 :         atoi[residue_atom[i]]=BASE_A;
    4641             :       } else {
    4642           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4643             :       }
    4644             :       // DNA - A3
    4645           0 :     } else if(Rname=="DA3") {
    4646           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4647           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4648           0 :         atoi [residue_atom[i]]=BB_PO2;
    4649           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4650           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4651           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4652           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    4653           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4654             :                 Aname=="H3T" ) {
    4655           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    4656           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4657           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4658           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4659           0 :                 Aname=="H61" || Aname=="H62" ) {
    4660           0 :         atoi[residue_atom[i]]=BASE_A;
    4661             :       } else {
    4662           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4663             :       }
    4664             :       // DNA - A5
    4665           0 :     } else if(Rname=="DA5") {
    4666           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4667           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    4668           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4669           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4670           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4671             :           Aname=="H5T" ) {
    4672           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    4673           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4674           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4675           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4676           0 :                 Aname=="H61" || Aname=="H62" ) {
    4677           0 :         atoi[residue_atom[i]]=BASE_A;
    4678             :       } else {
    4679           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4680             :       }
    4681             :       // DNA - AT
    4682           0 :     } else if(Rname=="DAT") {
    4683           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4684           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4685           0 :         atoi [residue_atom[i]]=BB_PO3;
    4686           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4687           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4688           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4689           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4690           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4691           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4692           0 :         atoi[residue_atom[i]]=BB_DNA;
    4693           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4694           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4695           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4696           0 :                 Aname=="H61" || Aname=="H62" ) {
    4697           0 :         atoi[residue_atom[i]]=BASE_A;
    4698             :       } else {
    4699           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4700             :       }
    4701             :       // DNA - C
    4702           0 :     } else if(Rname=="DC") {
    4703           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    4704           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    4705           0 :         atoi [residue_atom[i]]=BB_PO2;
    4706           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4707           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4708           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4709           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4710           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4711           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4712           0 :         atoi[residue_atom[i]]=BB_DNA;
    4713           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4714           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4715           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4716           0 :         atoi[residue_atom[i]]=BASE_C;
    4717             :       } else {
    4718           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4719             :       }
    4720             :       // DNA - C3
    4721           0 :     } else if(Rname=="DC3") {
    4722           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4723           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4724           0 :         atoi [residue_atom[i]]=BB_PO2;
    4725           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4726           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4727           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4728           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    4729           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4730             :                 Aname=="H3T" ) {
    4731           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    4732           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4733           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4734           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4735           0 :         atoi[residue_atom[i]]=BASE_C;
    4736             :       } else {
    4737           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4738             :       }
    4739             :       // DNA - C5
    4740           0 :     } else if(Rname=="DC5") {
    4741           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4742           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    4743           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4744           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4745           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4746             :           Aname=="H5T" ) {
    4747           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    4748           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4749           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4750           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4751           0 :         atoi[residue_atom[i]]=BASE_C;
    4752             :       } else {
    4753           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4754             :       }
    4755             :       // DNA - CT
    4756           0 :     } else if(Rname=="DCT") {
    4757           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    4758           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    4759           0 :         atoi [residue_atom[i]]=BB_PO3;
    4760           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4761           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4762           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4763           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4764           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4765           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4766           0 :         atoi[residue_atom[i]]=BB_DNA;
    4767           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4768           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4769           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4770           0 :         atoi[residue_atom[i]]=BASE_C;
    4771             :       } else {
    4772           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4773             :       }
    4774             :     } else {
    4775           0 :       error("Residue not known: "+Rname);
    4776             :     }
    4777             :   }
    4778          10 : }
    4779             : 
    4780           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) {
    4781           6 :   parameter_solv_H[TRP].push_back(60737.60249988011);
    4782           6 :   parameter_solv_H[TRP].push_back(-77.77344118516487);
    4783           6 :   parameter_solv_H[TRP].push_back(-205962.80436572764);
    4784           6 :   parameter_solv_H[TRP].push_back(-62014.18523271781);
    4785           6 :   parameter_solv_H[TRP].push_back(680712.0512548896);
    4786           6 :   parameter_solv_H[TRP].push_back(-681337.967312983);
    4787           6 :   parameter_solv_H[TRP].push_back(211474.00338118695);
    4788             : 
    4789           6 :   parameter_solv_H[TYR].push_back(46250.803599880084);
    4790           6 :   parameter_solv_H[TYR].push_back(-45.827646837514614);
    4791           6 :   parameter_solv_H[TYR].push_back(-143872.94597686914);
    4792           6 :   parameter_solv_H[TYR].push_back(-39049.51580628132);
    4793           6 :   parameter_solv_H[TYR].push_back(441321.31246635393);
    4794           6 :   parameter_solv_H[TYR].push_back(-434477.6826175059);
    4795           6 :   parameter_solv_H[TYR].push_back(133179.21673104732);
    4796             : 
    4797           6 :   parameter_solv_H[PHE].push_back(42407.164900118914);
    4798           6 :   parameter_solv_H[PHE].push_back(-159.20054549009086);
    4799           6 :   parameter_solv_H[PHE].push_back(-123847.83591352346);
    4800           6 :   parameter_solv_H[PHE].push_back(-41797.78884558073);
    4801           6 :   parameter_solv_H[PHE].push_back(380283.87543872406);
    4802           6 :   parameter_solv_H[PHE].push_back(-361432.81356389285);
    4803           6 :   parameter_solv_H[PHE].push_back(107750.69385054041);
    4804             : 
    4805           6 :   parameter_solv_H[HIP].push_back(24473.473600119047);
    4806           6 :   parameter_solv_H[HIP].push_back(-111.6412807124612);
    4807           6 :   parameter_solv_H[HIP].push_back(-65826.17293437096);
    4808           6 :   parameter_solv_H[HIP].push_back(-23305.902022201855);
    4809           6 :   parameter_solv_H[HIP].push_back(194795.09953510275);
    4810           6 :   parameter_solv_H[HIP].push_back(-180454.47859494278);
    4811           6 :   parameter_solv_H[HIP].push_back(52699.36922660704);
    4812             : 
    4813           6 :   parameter_solv_H[ARG].push_back(34106.70239988039);
    4814           6 :   parameter_solv_H[ARG].push_back(152.74468231268114);
    4815           6 :   parameter_solv_H[ARG].push_back(-117086.46040369231);
    4816           6 :   parameter_solv_H[ARG].push_back(-19664.37512726012);
    4817           6 :   parameter_solv_H[ARG].push_back(364454.3721646173);
    4818           6 :   parameter_solv_H[ARG].push_back(-382076.05102190404);
    4819           6 :   parameter_solv_H[ARG].push_back(122775.83306003918);
    4820             : 
    4821           6 :   parameter_solv_H[LYS].push_back(32292.09000011877);
    4822           6 :   parameter_solv_H[LYS].push_back(-111.97888350941923);
    4823           6 :   parameter_solv_H[LYS].push_back(-91953.05212591762);
    4824           6 :   parameter_solv_H[LYS].push_back(-30691.03615444628);
    4825           6 :   parameter_solv_H[LYS].push_back(282092.82233263896);
    4826           6 :   parameter_solv_H[LYS].push_back(-269503.6095978623);
    4827           6 :   parameter_solv_H[LYS].push_back(80777.92760273012);
    4828             : 
    4829           6 :   parameter_solv_H[CYS].push_back(11352.902500119093);
    4830           6 :   parameter_solv_H[CYS].push_back(-45.52255488723637);
    4831           6 :   parameter_solv_H[CYS].push_back(-20925.086525675117);
    4832           6 :   parameter_solv_H[CYS].push_back(-5662.681335644281);
    4833           6 :   parameter_solv_H[CYS].push_back(38559.09602816144);
    4834           6 :   parameter_solv_H[CYS].push_back(-27885.22747486708);
    4835           6 :   parameter_solv_H[CYS].push_back(6280.148346561226);
    4836             : 
    4837           6 :   parameter_solv_H[CYX].push_back(10281.960000119348);
    4838           6 :   parameter_solv_H[CYX].push_back(-42.315998754511);
    4839           6 :   parameter_solv_H[CYX].push_back(-19328.174487327480);
    4840           6 :   parameter_solv_H[CYX].push_back(-5523.191775626829);
    4841           6 :   parameter_solv_H[CYX].push_back(38185.463172673335);
    4842           6 :   parameter_solv_H[CYX].push_back(-28940.174693042034);
    4843           6 :   parameter_solv_H[CYX].push_back(6925.390014187676);
    4844             : 
    4845           6 :   parameter_solv_H[ASP].push_back(13511.73760011933);
    4846           6 :   parameter_solv_H[ASP].push_back(-59.92934247210642);
    4847           6 :   parameter_solv_H[ASP].push_back(-25849.867077822244);
    4848           6 :   parameter_solv_H[ASP].push_back(-7541.679510407563);
    4849           6 :   parameter_solv_H[ASP].push_back(50760.93853987092);
    4850           6 :   parameter_solv_H[ASP].push_back(-37677.89102528413);
    4851           6 :   parameter_solv_H[ASP].push_back(8745.710458140105);
    4852             : 
    4853           6 :   parameter_solv_H[GLU].push_back(20443.280400119456);
    4854           6 :   parameter_solv_H[GLU].push_back(-113.77513581661388);
    4855           6 :   parameter_solv_H[GLU].push_back(-45587.79863958479);
    4856           6 :   parameter_solv_H[GLU].push_back(-16187.534798976243);
    4857           6 :   parameter_solv_H[GLU].push_back(112609.61802147207);
    4858           6 :   parameter_solv_H[GLU].push_back(-93362.01894077536);
    4859           6 :   parameter_solv_H[GLU].push_back(24519.546829431332);
    4860             : 
    4861           6 :   parameter_solv_H[ILE].push_back(27858.948100119596);
    4862           6 :   parameter_solv_H[ILE].push_back(-159.27394962770595);
    4863           6 :   parameter_solv_H[ILE].push_back(-61571.43025249802);
    4864           6 :   parameter_solv_H[ILE].push_back(-21324.89659912433);
    4865           6 :   parameter_solv_H[ILE].push_back(144070.7880009225);
    4866           6 :   parameter_solv_H[ILE].push_back(-115021.84534734003);
    4867           6 :   parameter_solv_H[ILE].push_back(28939.093300284097);
    4868             : 
    4869           6 :   parameter_solv_H[LEU].push_back(27858.948100119596);
    4870           6 :   parameter_solv_H[LEU].push_back(-165.61872365361);
    4871           6 :   parameter_solv_H[LEU].push_back(-62564.5706162518);
    4872           6 :   parameter_solv_H[LEU].push_back(-22465.325666767214);
    4873           6 :   parameter_solv_H[LEU].push_back(151616.7844050042);
    4874           6 :   parameter_solv_H[LEU].push_back(-122905.60389771541);
    4875           6 :   parameter_solv_H[LEU].push_back(31436.66201442061);
    4876             : 
    4877           6 :   parameter_solv_H[MET].push_back(25609.60090011981);
    4878           6 :   parameter_solv_H[MET].push_back(-135.38816369794569);
    4879           6 :   parameter_solv_H[MET].push_back(-67771.01548433342);
    4880           6 :   parameter_solv_H[MET].push_back(-25228.91756660071);
    4881           6 :   parameter_solv_H[MET].push_back(199649.92084565928);
    4882           6 :   parameter_solv_H[MET].push_back(-182251.9246506795);
    4883           6 :   parameter_solv_H[MET].push_back(52502.876819125115);
    4884             : 
    4885           6 :   parameter_solv_H[ASN].push_back(14376.010000119095);
    4886           6 :   parameter_solv_H[ASN].push_back(-67.65587848183215);
    4887           6 :   parameter_solv_H[ASN].push_back(-28302.877059425664);
    4888           6 :   parameter_solv_H[ASN].push_back(-8577.444107282141);
    4889           6 :   parameter_solv_H[ASN].push_back(57532.88704197217);
    4890           6 :   parameter_solv_H[ASN].push_back(-43261.79974462857);
    4891           6 :   parameter_solv_H[ASN].push_back(10186.450874679671);
    4892             : 
    4893           6 :   parameter_solv_H[PRO].push_back(16866.21690011944);
    4894           6 :   parameter_solv_H[PRO].push_back(-70.84312112734995);
    4895           6 :   parameter_solv_H[PRO].push_back(-31465.8423531932);
    4896           6 :   parameter_solv_H[PRO].push_back(-8653.362744540535);
    4897           6 :   parameter_solv_H[PRO].push_back(58032.27079924916);
    4898           6 :   parameter_solv_H[PRO].push_back(-41521.001733021694);
    4899           6 :   parameter_solv_H[PRO].push_back(9184.527523759205);
    4900             : 
    4901           6 :   parameter_solv_H[GLN].push_back(21503.289600119);
    4902           6 :   parameter_solv_H[GLN].push_back(-121.3012777474678);
    4903           6 :   parameter_solv_H[GLN].push_back(-50468.58503443957);
    4904           6 :   parameter_solv_H[GLN].push_back(-18462.47495329696);
    4905           6 :   parameter_solv_H[GLN].push_back(132718.42007501892);
    4906           6 :   parameter_solv_H[GLN].push_back(-113787.20224345029);
    4907           6 :   parameter_solv_H[GLN].push_back(30920.340813688686);
    4908             : 
    4909           6 :   parameter_solv_H[SER].push_back(9181.47240011935);
    4910           6 :   parameter_solv_H[SER].push_back(-28.775273124392083);
    4911           6 :   parameter_solv_H[SER].push_back(-15205.54229808512);
    4912           6 :   parameter_solv_H[SER].push_back(-3377.785599913673);
    4913           6 :   parameter_solv_H[SER].push_back(23345.562090489493);
    4914           6 :   parameter_solv_H[SER].push_back(-15312.699787471944);
    4915           6 :   parameter_solv_H[SER].push_back(3013.844610647712);
    4916             : 
    4917           6 :   parameter_solv_H[THR].push_back(15020.953600119403);
    4918           6 :   parameter_solv_H[THR].push_back(-61.909951810375105);
    4919           6 :   parameter_solv_H[THR].push_back(-27814.538986050964);
    4920           6 :   parameter_solv_H[THR].push_back(-7532.222992514079);
    4921           6 :   parameter_solv_H[THR].push_back(50586.29804970814);
    4922           6 :   parameter_solv_H[THR].push_back(-35943.85986777198);
    4923           6 :   parameter_solv_H[THR].push_back(7880.091610023207);
    4924             : 
    4925           6 :   parameter_solv_H[VAL].push_back(19647.628900119355);
    4926           6 :   parameter_solv_H[VAL].push_back(-89.04968136833762);
    4927           6 :   parameter_solv_H[VAL].push_back(-38050.10118919102);
    4928           6 :   parameter_solv_H[VAL].push_back(-10921.421066774372);
    4929           6 :   parameter_solv_H[VAL].push_back(72774.31277743122);
    4930           6 :   parameter_solv_H[VAL].push_back(-52689.05168504517);
    4931           6 :   parameter_solv_H[VAL].push_back(11806.48989635518);
    4932             : 
    4933           6 :   parameter_solv_H[ALA].push_back(7515.156100119273);
    4934           6 :   parameter_solv_H[ALA].push_back(-20.226317591188526);
    4935           6 :   parameter_solv_H[ALA].push_back(-11761.841775007797);
    4936           6 :   parameter_solv_H[ALA].push_back(-2341.4903622033885);
    4937           6 :   parameter_solv_H[ALA].push_back(16545.381259883452);
    4938           6 :   parameter_solv_H[ALA].push_back(-10397.171546969075);
    4939           6 :   parameter_solv_H[ALA].push_back(1921.5253045340198);
    4940             : 
    4941           6 :   parameter_solv_H[GLY].push_back(3594.002500119159);
    4942           6 :   parameter_solv_H[GLY].push_back(-6.910832388009796);
    4943           6 :   parameter_solv_H[GLY].push_back(-4937.3542895091905);
    4944           6 :   parameter_solv_H[GLY].push_back(-785.4545979203357);
    4945           6 :   parameter_solv_H[GLY].push_back(5852.853693316741);
    4946           6 :   parameter_solv_H[GLY].push_back(-3391.2920205126734);
    4947           6 :   parameter_solv_H[GLY].push_back(552.3278183161507);
    4948             : 
    4949           6 :   parameter_solv_H[HIS].push_back(22888.664100119073);
    4950           6 :   parameter_solv_H[HIS].push_back(-133.86281863999585);
    4951           6 :   parameter_solv_H[HIS].push_back(-57533.51412287858);
    4952           6 :   parameter_solv_H[HIS].push_back(-21767.300111408193);
    4953           6 :   parameter_solv_H[HIS].push_back(161255.15347073504);
    4954           6 :   parameter_solv_H[HIS].push_back(-142176.65100718598);
    4955           6 :   parameter_solv_H[HIS].push_back(39642.61507384587);
    4956             : 
    4957           6 :   parameter_mix_H[TRP].push_back(2974.6515001192306);
    4958           6 :   parameter_mix_H[TRP].push_back(-18.361939022074825);
    4959           6 :   parameter_mix_H[TRP].push_back(-7284.637435770752);
    4960           6 :   parameter_mix_H[TRP].push_back(-2945.7969900381895);
    4961           6 :   parameter_mix_H[TRP].push_back(21235.01878657283);
    4962           6 :   parameter_mix_H[TRP].push_back(-18909.7406035548);
    4963           6 :   parameter_mix_H[TRP].push_back(5324.324204245179);
    4964             : 
    4965           6 :   parameter_mix_H[TYR].push_back(2029.7362801192114);
    4966           6 :   parameter_mix_H[TYR].push_back(-6.983186065527884);
    4967           6 :   parameter_mix_H[TYR].push_back(-5041.996113037476);
    4968           6 :   parameter_mix_H[TYR].push_back(-1744.5213085724158);
    4969           6 :   parameter_mix_H[TYR].push_back(15329.420227814338);
    4970           6 :   parameter_mix_H[TYR].push_back(-14648.322529889958);
    4971           6 :   parameter_mix_H[TYR].push_back(4405.608657083287);
    4972             : 
    4973           6 :   parameter_mix_H[PHE].push_back(1704.6885401192117);
    4974           6 :   parameter_mix_H[PHE].push_back(-10.077274979133408);
    4975           6 :   parameter_mix_H[PHE].push_back(-3769.440088334303);
    4976           6 :   parameter_mix_H[PHE].push_back(-1574.6255694551546);
    4977           6 :   parameter_mix_H[PHE].push_back(10996.32497868798);
    4978           6 :   parameter_mix_H[PHE].push_back(-9840.68281283696);
    4979           6 :   parameter_mix_H[PHE].push_back(2792.098605716682);
    4980             : 
    4981           6 :   parameter_mix_H[HIP].push_back(1376.0462401192394);
    4982           6 :   parameter_mix_H[HIP].push_back(-8.576320475413144);
    4983           6 :   parameter_mix_H[HIP].push_back(-2796.8327726392167);
    4984           6 :   parameter_mix_H[HIP].push_back(-1165.0473128576);
    4985           6 :   parameter_mix_H[HIP].push_back(7495.063650365717);
    4986           6 :   parameter_mix_H[HIP].push_back(-6331.20422098132);
    4987           6 :   parameter_mix_H[HIP].push_back(1692.637366093312);
    4988             : 
    4989           6 :   parameter_mix_H[ARG].push_back(1280.940480119178);
    4990           6 :   parameter_mix_H[ARG].push_back(-7.411214928783748);
    4991           6 :   parameter_mix_H[ARG].push_back(-3747.6200569785033);
    4992           6 :   parameter_mix_H[ARG].push_back(-1766.5282176004569);
    4993           6 :   parameter_mix_H[ARG].push_back(14307.817638456267);
    4994           6 :   parameter_mix_H[ARG].push_back(-14297.104122885643);
    4995           6 :   parameter_mix_H[ARG].push_back(4450.526244207772);
    4996             : 
    4997           6 :   parameter_mix_H[LYS].push_back(570.7272001192143);
    4998           6 :   parameter_mix_H[LYS].push_back(-5.371742288956095);
    4999           6 :   parameter_mix_H[LYS].push_back(-1255.9868267793006);
    5000           6 :   parameter_mix_H[LYS].push_back(-748.3071074443138);
    5001           6 :   parameter_mix_H[LYS].push_back(4534.824932304509);
    5002           6 :   parameter_mix_H[LYS].push_back(-4125.307867230812);
    5003           6 :   parameter_mix_H[LYS].push_back(1178.781491068295);
    5004             : 
    5005           6 :   parameter_mix_H[CYS].push_back(410.21750011921864);
    5006           6 :   parameter_mix_H[CYS].push_back(-0.7655651758449595);
    5007           6 :   parameter_mix_H[CYS].push_back(-523.8897033718782);
    5008           6 :   parameter_mix_H[CYS].push_back(-89.88478273744425);
    5009           6 :   parameter_mix_H[CYS].push_back(655.3313542467919);
    5010           6 :   parameter_mix_H[CYS].push_back(-407.87897719750896);
    5011           6 :   parameter_mix_H[CYS].push_back(76.50541508448237);
    5012             : 
    5013           6 :   parameter_mix_H[CYX].push_back(466.237200119199);
    5014           6 :   parameter_mix_H[CYX].push_back(-1.302082362010);
    5015           6 :   parameter_mix_H[CYX].push_back(-667.565738985901);
    5016           6 :   parameter_mix_H[CYX].push_back(-159.506437978088);
    5017           6 :   parameter_mix_H[CYX].push_back(1085.648159448292);
    5018           6 :   parameter_mix_H[CYX].push_back(-767.622943338598);
    5019           6 :   parameter_mix_H[CYX].push_back(170.157274620163);
    5020             : 
    5021           6 :   parameter_mix_H[ASP].push_back(893.6531201192147);
    5022           6 :   parameter_mix_H[ASP].push_back(-3.0756255172248874);
    5023           6 :   parameter_mix_H[ASP].push_back(-1453.1760425275006);
    5024           6 :   parameter_mix_H[ASP].push_back(-365.0424824614137);
    5025           6 :   parameter_mix_H[ASP].push_back(2443.570600976796);
    5026           6 :   parameter_mix_H[ASP].push_back(-1679.8996339740277);
    5027           6 :   parameter_mix_H[ASP].push_back(352.33054461512455);
    5028             : 
    5029           6 :   parameter_mix_H[GLU].push_back(1075.4955601191884);
    5030           6 :   parameter_mix_H[GLU].push_back(-6.917429973203965);
    5031           6 :   parameter_mix_H[GLU].push_back(-2262.861870389347);
    5032           6 :   parameter_mix_H[GLU].push_back(-909.8078514527992);
    5033           6 :   parameter_mix_H[GLU].push_back(5841.923857549836);
    5034           6 :   parameter_mix_H[GLU].push_back(-4784.620969556751);
    5035           6 :   parameter_mix_H[GLU].push_back(1230.873134652953);
    5036             : 
    5037           6 :   parameter_mix_H[ILE].push_back(466.0127201192081);
    5038           6 :   parameter_mix_H[ILE].push_back(-0.9323443258150218);
    5039           6 :   parameter_mix_H[ILE].push_back(-576.7178005955719);
    5040           6 :   parameter_mix_H[ILE].push_back(-103.03003361062478);
    5041           6 :   parameter_mix_H[ILE].push_back(706.4269951176641);
    5042           6 :   parameter_mix_H[ILE].push_back(-420.4412859632717);
    5043           6 :   parameter_mix_H[ILE].push_back(71.53175726608731);
    5044             : 
    5045           6 :   parameter_mix_H[LEU].push_back(466.0127201192081);
    5046           6 :   parameter_mix_H[LEU].push_back(-1.9793605752606065);
    5047           6 :   parameter_mix_H[LEU].push_back(-718.3988478701591);
    5048           6 :   parameter_mix_H[LEU].push_back(-227.36409339012113);
    5049           6 :   parameter_mix_H[LEU].push_back(1389.2058254917304);
    5050           6 :   parameter_mix_H[LEU].push_back(-990.0033118748643);
    5051           6 :   parameter_mix_H[LEU].push_back(213.15736815883042);
    5052             : 
    5053           6 :   parameter_mix_H[MET].push_back(562.9855401192196);
    5054           6 :   parameter_mix_H[MET].push_back(-3.7994094933771643);
    5055           6 :   parameter_mix_H[MET].push_back(-1139.6331862451661);
    5056           6 :   parameter_mix_H[MET].push_back(-516.6313269725724);
    5057           6 :   parameter_mix_H[MET].push_back(3268.957245190869);
    5058           6 :   parameter_mix_H[MET].push_back(-2809.178864807947);
    5059           6 :   parameter_mix_H[MET].push_back(761.4832732100416);
    5060             : 
    5061           6 :   parameter_mix_H[ASN].push_back(828.7488001191887);
    5062           6 :   parameter_mix_H[ASN].push_back(-2.1275493073799625);
    5063           6 :   parameter_mix_H[ASN].push_back(-1222.248291388804);
    5064           6 :   parameter_mix_H[ASN].push_back(-238.94210659613537);
    5065           6 :   parameter_mix_H[ASN].push_back(1660.8322402171973);
    5066           6 :   parameter_mix_H[ASN].push_back(-1008.7934996077323);
    5067           6 :   parameter_mix_H[ASN].push_back(173.6082238625797);
    5068             : 
    5069           6 :   parameter_mix_H[PRO].push_back(578.4409801192146);
    5070           6 :   parameter_mix_H[PRO].push_back(-0.5379505780909722);
    5071           6 :   parameter_mix_H[PRO].push_back(-648.146493857212);
    5072           6 :   parameter_mix_H[PRO].push_back(-56.67223895342921);
    5073           6 :   parameter_mix_H[PRO].push_back(509.88860586987437);
    5074           6 :   parameter_mix_H[PRO].push_back(-214.57871784725265);
    5075           6 :   parameter_mix_H[PRO].push_back(11.99659463759968);
    5076             : 
    5077           6 :   parameter_mix_H[GLN].push_back(989.2334401191976);
    5078           6 :   parameter_mix_H[GLN].push_back(-6.307760694331967);
    5079           6 :   parameter_mix_H[GLN].push_back(-1971.7067150503622);
    5080           6 :   parameter_mix_H[GLN].push_back(-791.333088386235);
    5081           6 :   parameter_mix_H[GLN].push_back(4900.009768434847);
    5082           6 :   parameter_mix_H[GLN].push_back(-3909.7740976374153);
    5083           6 :   parameter_mix_H[GLN].push_back(975.4952613244343);
    5084             : 
    5085           6 :   parameter_mix_H[SER].push_back(426.39900011920196);
    5086           6 :   parameter_mix_H[SER].push_back(-0.42304498358319664);
    5087           6 :   parameter_mix_H[SER].push_back(-484.2066027682147);
    5088           6 :   parameter_mix_H[SER].push_back(-45.38968988754228);
    5089           6 :   parameter_mix_H[SER].push_back(401.3420977115044);
    5090           6 :   parameter_mix_H[SER].push_back(-178.0861461692512);
    5091           6 :   parameter_mix_H[SER].push_back(13.540349238730284);
    5092             : 
    5093           6 :   parameter_mix_H[THR].push_back(525.0470401191992);
    5094           6 :   parameter_mix_H[THR].push_back(-0.7419102811534484);
    5095           6 :   parameter_mix_H[THR].push_back(-652.7134808154495);
    5096           6 :   parameter_mix_H[THR].push_back(-80.39481224407903);
    5097           6 :   parameter_mix_H[THR].push_back(641.5487902728123);
    5098           6 :   parameter_mix_H[THR].push_back(-320.4227667104819);
    5099           6 :   parameter_mix_H[THR].push_back(36.03558531183942);
    5100             : 
    5101           6 :   parameter_mix_H[VAL].push_back(414.6228601192123);
    5102           6 :   parameter_mix_H[VAL].push_back(-0.35889335250521337);
    5103           6 :   parameter_mix_H[VAL].push_back(-453.11631644097474);
    5104           6 :   parameter_mix_H[VAL].push_back(-36.402101097644284);
    5105           6 :   parameter_mix_H[VAL].push_back(336.24049431626804);
    5106           6 :   parameter_mix_H[VAL].push_back(-127.42235327515239);
    5107           6 :   parameter_mix_H[VAL].push_back(0.8013280923923705);
    5108             : 
    5109           6 :   parameter_mix_H[ALA].push_back(285.21010011920816);
    5110           6 :   parameter_mix_H[ALA].push_back(-0.1573012439142169);
    5111           6 :   parameter_mix_H[ALA].push_back(-282.8945838800694);
    5112           6 :   parameter_mix_H[ALA].push_back(-16.32030056827785);
    5113           6 :   parameter_mix_H[ALA].push_back(178.065895049598);
    5114           6 :   parameter_mix_H[ALA].push_back(-60.27423229179658);
    5115           6 :   parameter_mix_H[ALA].push_back(-1.4695219304131588);
    5116             : 
    5117           6 :   parameter_mix_H[GLY].push_back(207.18720011920414);
    5118           6 :   parameter_mix_H[GLY].push_back(-0.1036587134183235);
    5119           6 :   parameter_mix_H[GLY].push_back(-185.70794948240638);
    5120           6 :   parameter_mix_H[GLY].push_back(-11.008101039836257);
    5121           6 :   parameter_mix_H[GLY].push_back(115.30600405624061);
    5122           6 :   parameter_mix_H[GLY].push_back(-42.46629718037158);
    5123           6 :   parameter_mix_H[GLY].push_back(0.9238928987070913);
    5124             : 
    5125           6 :   parameter_mix_H[HIS].push_back(1443.9117601192354);
    5126           6 :   parameter_mix_H[HIS].push_back(-7.478618745973115);
    5127           6 :   parameter_mix_H[HIS].push_back(-2715.0835155803215);
    5128           6 :   parameter_mix_H[HIS].push_back(-918.5243015382779);
    5129           6 :   parameter_mix_H[HIS].push_back(5821.6258431396);
    5130           6 :   parameter_mix_H[HIS].push_back(-4415.32722209556);
    5131           6 :   parameter_mix_H[HIS].push_back(1044.7044029209756);
    5132             : 
    5133           6 :   parameter_vac_H[TRP].push_back(36.42122511920832);
    5134           6 :   parameter_vac_H[TRP].push_back(-0.36925500341767903);
    5135           6 :   parameter_vac_H[TRP].push_back(-51.34228792835503);
    5136           6 :   parameter_vac_H[TRP].push_back(-34.10021080004831);
    5137           6 :   parameter_vac_H[TRP].push_back(132.647034983933);
    5138           6 :   parameter_vac_H[TRP].push_back(-82.89152328934257);
    5139           6 :   parameter_vac_H[TRP].push_back(13.029994092013231);
    5140             : 
    5141           6 :   parameter_vac_H[TYR].push_back(22.268961119209557);
    5142           6 :   parameter_vac_H[TYR].push_back(-0.1995573892347673);
    5143           6 :   parameter_vac_H[TYR].push_back(-36.54202179838511);
    5144           6 :   parameter_vac_H[TYR].push_back(-23.820801043096694);
    5145           6 :   parameter_vac_H[TYR].push_back(127.46799692275353);
    5146           6 :   parameter_vac_H[TYR].push_back(-107.63783234245744);
    5147           6 :   parameter_vac_H[TYR].push_back(28.180858902960775);
    5148             : 
    5149           6 :   parameter_vac_H[PHE].push_back(17.131321119209627);
    5150           6 :   parameter_vac_H[PHE].push_back(-0.15766725674246446);
    5151           6 :   parameter_vac_H[PHE].push_back(-19.19964432024534);
    5152           6 :   parameter_vac_H[PHE].push_back(-12.34326882843138);
    5153           6 :   parameter_vac_H[PHE].push_back(38.17216645824474);
    5154           6 :   parameter_vac_H[PHE].push_back(-11.245288857407298);
    5155           6 :   parameter_vac_H[PHE].push_back(-3.8114731300899343);
    5156             : 
    5157           6 :   parameter_vac_H[HIP].push_back(19.34240411920875);
    5158           6 :   parameter_vac_H[HIP].push_back(-0.13533410292592593);
    5159           6 :   parameter_vac_H[HIP].push_back(-25.924121027387276);
    5160           6 :   parameter_vac_H[HIP].push_back(-12.36586927492752);
    5161           6 :   parameter_vac_H[HIP].push_back(56.75268702111191);
    5162           6 :   parameter_vac_H[HIP].push_back(-31.126240293638094);
    5163           6 :   parameter_vac_H[HIP].push_back(2.749811579250848);
    5164             : 
    5165           6 :   parameter_vac_H[ARG].push_back(12.027024119209557);
    5166           6 :   parameter_vac_H[ARG].push_back(-0.41927538341868287);
    5167           6 :   parameter_vac_H[ARG].push_back(-22.137566939867042);
    5168           6 :   parameter_vac_H[ARG].push_back(-43.22615008762667);
    5169           6 :   parameter_vac_H[ARG].push_back(165.77466655520323);
    5170           6 :   parameter_vac_H[ARG].push_back(-140.68664871425898);
    5171           6 :   parameter_vac_H[ARG].push_back(36.67401195170306);
    5172             : 
    5173           6 :   parameter_vac_H[LYS].push_back(2.5217441192093717);
    5174           6 :   parameter_vac_H[LYS].push_back(-0.0032825476242835413);
    5175           6 :   parameter_vac_H[LYS].push_back(14.019071697737793);
    5176           6 :   parameter_vac_H[LYS].push_back(7.8634074595069245);
    5177           6 :   parameter_vac_H[LYS].push_back(-82.44639716451474);
    5178           6 :   parameter_vac_H[LYS].push_back(94.32937851921197);
    5179           6 :   parameter_vac_H[LYS].push_back(-32.324473823417);
    5180             : 
    5181           6 :   parameter_vac_H[CYS].push_back(3.705624880856525);
    5182           6 :   parameter_vac_H[CYS].push_back(0.005214780840206113);
    5183           6 :   parameter_vac_H[CYS].push_back(1.25680902661715);
    5184           6 :   parameter_vac_H[CYS].push_back(0.5779209425501814);
    5185           6 :   parameter_vac_H[CYS].push_back(-3.716408071089366);
    5186           6 :   parameter_vac_H[CYS].push_back(2.3947518943233117);
    5187           6 :   parameter_vac_H[CYS].push_back(-0.40204949737133333);
    5188             : 
    5189           6 :   parameter_vac_H[CYX].push_back(5.285401118868);
    5190           6 :   parameter_vac_H[CYX].push_back(-0.006119528779);
    5191           6 :   parameter_vac_H[CYX].push_back(-3.091212256902);
    5192           6 :   parameter_vac_H[CYX].push_back(-0.679948780910);
    5193           6 :   parameter_vac_H[CYX].push_back(4.495837313271);
    5194           6 :   parameter_vac_H[CYX].push_back(-2.827133444940);
    5195           6 :   parameter_vac_H[CYX].push_back(0.494583310914);
    5196             : 
    5197           6 :   parameter_vac_H[ASP].push_back(14.776336119209605);
    5198           6 :   parameter_vac_H[ASP].push_back(-0.037351220316916435);
    5199           6 :   parameter_vac_H[ASP].push_back(-18.556358387626286);
    5200           6 :   parameter_vac_H[ASP].push_back(-4.1737354794552886);
    5201           6 :   parameter_vac_H[ASP].push_back(28.424721213037405);
    5202           6 :   parameter_vac_H[ASP].push_back(-17.51389895324883);
    5203           6 :   parameter_vac_H[ASP].push_back(2.9729111724708597);
    5204             : 
    5205           6 :   parameter_vac_H[GLU].push_back(14.145121119208973);
    5206           6 :   parameter_vac_H[GLU].push_back(-0.11468766098213011);
    5207           6 :   parameter_vac_H[GLU].push_back(-26.272637652294613);
    5208           6 :   parameter_vac_H[GLU].push_back(-13.769758826440151);
    5209           6 :   parameter_vac_H[GLU].push_back(80.4575683578491);
    5210           6 :   parameter_vac_H[GLU].push_back(-64.19346347075);
    5211           6 :   parameter_vac_H[GLU].push_back(15.545440117656236);
    5212             : 
    5213           6 :   parameter_vac_H[ILE].push_back(1.9488158808808775);
    5214           6 :   parameter_vac_H[ILE].push_back(0.05873132133874459);
    5215           6 :   parameter_vac_H[ILE].push_back(12.032778845884135);
    5216           6 :   parameter_vac_H[ILE].push_back(7.148416980612881);
    5217           6 :   parameter_vac_H[ILE].push_back(-41.87377843832961);
    5218           6 :   parameter_vac_H[ILE].push_back(33.96120749582283);
    5219           6 :   parameter_vac_H[ILE].push_back(-8.362535852631256);
    5220             : 
    5221           6 :   parameter_vac_H[LEU].push_back(1.9488158808977816);
    5222           6 :   parameter_vac_H[LEU].push_back(0.0778305500414777);
    5223           6 :   parameter_vac_H[LEU].push_back(12.333370614594);
    5224           6 :   parameter_vac_H[LEU].push_back(9.449427967560764);
    5225           6 :   parameter_vac_H[LEU].push_back(-52.65457680603262);
    5226           6 :   parameter_vac_H[LEU].push_back(44.681877289399615);
    5227           6 :   parameter_vac_H[LEU].push_back(-11.460498338671227);
    5228             : 
    5229           6 :   parameter_vac_H[MET].push_back(3.0940808808117652);
    5230           6 :   parameter_vac_H[MET].push_back(0.04903755678213222);
    5231           6 :   parameter_vac_H[MET].push_back(8.981927022922049);
    5232           6 :   parameter_vac_H[MET].push_back(8.654862771879014);
    5233           6 :   parameter_vac_H[MET].push_back(-57.09889409156816);
    5234           6 :   parameter_vac_H[MET].push_back(58.87704775164829);
    5235           6 :   parameter_vac_H[MET].push_back(-18.60431990258862);
    5236             : 
    5237           6 :   parameter_vac_H[ASN].push_back(11.943936119209074);
    5238           6 :   parameter_vac_H[ASN].push_back(-0.0005000836239497835);
    5239           6 :   parameter_vac_H[ASN].push_back(-9.581236453763157);
    5240           6 :   parameter_vac_H[ASN].push_back(0.16244025786232308);
    5241           6 :   parameter_vac_H[ASN].push_back(2.9276580099749574);
    5242           6 :   parameter_vac_H[ASN].push_back(2.133535783835143);
    5243           6 :   parameter_vac_H[ASN].push_back(-1.5709968820975018);
    5244             : 
    5245           6 :   parameter_vac_H[PRO].push_back(4.9595288808229245);
    5246           6 :   parameter_vac_H[PRO].push_back(0.017853932680793515);
    5247           6 :   parameter_vac_H[PRO].push_back(4.5421559293101605);
    5248           6 :   parameter_vac_H[PRO].push_back(2.008455612787203);
    5249           6 :   parameter_vac_H[PRO].push_back(-12.444117841318494);
    5250           6 :   parameter_vac_H[PRO].push_back(8.511723688836447);
    5251           6 :   parameter_vac_H[PRO].push_back(-1.6337543903496765);
    5252             : 
    5253           6 :   parameter_vac_H[GLN].push_back(11.377129119208574);
    5254           6 :   parameter_vac_H[GLN].push_back(-0.0674805307761209);
    5255           6 :   parameter_vac_H[GLN].push_back(-16.56692720411458);
    5256           6 :   parameter_vac_H[GLN].push_back(-6.477707440126834);
    5257           6 :   parameter_vac_H[GLN].push_back(34.78232259512621);
    5258           6 :   parameter_vac_H[GLN].push_back(-19.450886909938312);
    5259           6 :   parameter_vac_H[GLN].push_back(1.944286925108988);
    5260             : 
    5261           6 :   parameter_vac_H[SER].push_back(4.95062488096605);
    5262           6 :   parameter_vac_H[SER].push_back(0.004676435440506079);
    5263           6 :   parameter_vac_H[SER].push_back(-0.1896653085608564);
    5264           6 :   parameter_vac_H[SER].push_back(0.5142284931977218);
    5265           6 :   parameter_vac_H[SER].push_back(-2.8946087252759893);
    5266           6 :   parameter_vac_H[SER].push_back(2.1031239401634836);
    5267           6 :   parameter_vac_H[SER].push_back(-0.38226443516361713);
    5268             : 
    5269           6 :   parameter_vac_H[THR].push_back(4.588163880808971);
    5270           6 :   parameter_vac_H[THR].push_back(0.018587905993982613);
    5271           6 :   parameter_vac_H[THR].push_back(3.5289861308270214);
    5272           6 :   parameter_vac_H[THR].push_back(2.0780583604591567);
    5273           6 :   parameter_vac_H[THR].push_back(-12.3802007068414);
    5274           6 :   parameter_vac_H[THR].push_back(8.720986674116094);
    5275           6 :   parameter_vac_H[THR].push_back(-1.683256475122275);
    5276             : 
    5277           6 :   parameter_vac_H[VAL].push_back(2.187440880853519);
    5278           6 :   parameter_vac_H[VAL].push_back(0.028351524826584255);
    5279           6 :   parameter_vac_H[VAL].push_back(8.36584512491955);
    5280           6 :   parameter_vac_H[VAL].push_back(3.1686206615123926);
    5281           6 :   parameter_vac_H[VAL].push_back(-19.81959917770108);
    5282           6 :   parameter_vac_H[VAL].push_back(13.293003038570571);
    5283           6 :   parameter_vac_H[VAL].push_back(-2.4595257726774125);
    5284             : 
    5285           6 :   parameter_vac_H[ALA].push_back(2.7060248808167935);
    5286           6 :   parameter_vac_H[ALA].push_back(0.004618897267213416);
    5287           6 :   parameter_vac_H[ALA].push_back(2.4990261487383947);
    5288           6 :   parameter_vac_H[ALA].push_back(0.49579332664340864);
    5289           6 :   parameter_vac_H[ALA].push_back(-3.850400071630347);
    5290           6 :   parameter_vac_H[ALA].push_back(1.9501161562030942);
    5291           6 :   parameter_vac_H[ALA].push_back(-0.18332582719788362);
    5292             : 
    5293           6 :   parameter_vac_H[GLY].push_back(2.985983880876256);
    5294           6 :   parameter_vac_H[GLY].push_back(0.0005033131808079042);
    5295           6 :   parameter_vac_H[GLY].push_back(-0.42250170279962684);
    5296           6 :   parameter_vac_H[GLY].push_back(0.05620517453257455);
    5297           6 :   parameter_vac_H[GLY].push_back(-0.16801962822020733);
    5298           6 :   parameter_vac_H[GLY].push_back(0.23635459648780555);
    5299           6 :   parameter_vac_H[GLY].push_back(-0.06585244715658795);
    5300             : 
    5301           6 :   parameter_vac_H[HIS].push_back(22.77198411920933);
    5302           6 :   parameter_vac_H[HIS].push_back(-0.06607491006655417);
    5303           6 :   parameter_vac_H[HIS].push_back(-27.277710268717247);
    5304           6 :   parameter_vac_H[HIS].push_back(-5.674444390934355);
    5305           6 :   parameter_vac_H[HIS].push_back(33.4059567406171);
    5306           6 :   parameter_vac_H[HIS].push_back(-11.60826210271092);
    5307           6 :   parameter_vac_H[HIS].push_back(-1.7359607560773076);
    5308             : 
    5309             :   // NUCLEIC ACIDS
    5310             : 
    5311             :   // BB_PO2-BB_PO3 H and D parameters are identical as there is no H or D in the bead.
    5312           6 :   parameter_solv_H[BB_PO3].push_back(1464.5929001192262);
    5313           6 :   parameter_solv_H[BB_PO3].push_back(-2.316908934494931);
    5314           6 :   parameter_solv_H[BB_PO3].push_back(-1882.4844584696532);
    5315           6 :   parameter_solv_H[BB_PO3].push_back(-258.8660305554736);
    5316           6 :   parameter_solv_H[BB_PO3].push_back(2007.5216385943972);
    5317           6 :   parameter_solv_H[BB_PO3].push_back(-1087.6423562424877);
    5318           6 :   parameter_solv_H[BB_PO3].push_back(154.89236486681165);
    5319             : 
    5320           6 :   parameter_solv_H[BB_PO2].push_back(575.5201001192197);
    5321           6 :   parameter_solv_H[BB_PO2].push_back(-0.6126595489733864);
    5322           6 :   parameter_solv_H[BB_PO2].push_back(-623.3371092254899);
    5323           6 :   parameter_solv_H[BB_PO2].push_back(-68.05795957022144);
    5324           6 :   parameter_solv_H[BB_PO2].push_back(561.8052621243661);
    5325           6 :   parameter_solv_H[BB_PO2].push_back(-283.39573309540276);
    5326           6 :   parameter_solv_H[BB_PO2].push_back(35.550016980100295);
    5327             : 
    5328           6 :   parameter_solv_H[BB_DNA].push_back(21211.009600118316);
    5329           6 :   parameter_solv_H[BB_DNA].push_back(-90.18805990529991);
    5330           6 :   parameter_solv_H[BB_DNA].push_back(-39731.13373512149);
    5331           6 :   parameter_solv_H[BB_DNA].push_back(-10920.373563712872);
    5332           6 :   parameter_solv_H[BB_DNA].push_back(72882.21702424981);
    5333           6 :   parameter_solv_H[BB_DNA].push_back(-51747.487078112776);
    5334           6 :   parameter_solv_H[BB_DNA].push_back(11308.678429018755);
    5335             : 
    5336           6 :   parameter_solv_H[BB_DNA_5].push_back(22737.624100119025);
    5337           6 :   parameter_solv_H[BB_DNA_5].push_back(-102.72714886664161);
    5338           6 :   parameter_solv_H[BB_DNA_5].push_back(-43685.329677789734);
    5339           6 :   parameter_solv_H[BB_DNA_5].push_back(-12564.25937409345);
    5340           6 :   parameter_solv_H[BB_DNA_5].push_back(83454.87540484878);
    5341           6 :   parameter_solv_H[BB_DNA_5].push_back(-60367.15652138887);
    5342           6 :   parameter_solv_H[BB_DNA_5].push_back(13507.333729868991);
    5343             : 
    5344           6 :   parameter_solv_H[BB_DNA_3].push_back(22737.62410011902);
    5345           6 :   parameter_solv_H[BB_DNA_3].push_back(-101.57816684452251);
    5346           6 :   parameter_solv_H[BB_DNA_3].push_back(-43488.536705576145);
    5347           6 :   parameter_solv_H[BB_DNA_3].push_back(-12345.056184958425);
    5348           6 :   parameter_solv_H[BB_DNA_3].push_back(81963.52364114887);
    5349           6 :   parameter_solv_H[BB_DNA_3].push_back(-58791.59443618196);
    5350           6 :   parameter_solv_H[BB_DNA_3].push_back(13003.199362335583);
    5351             : 
    5352           6 :   parameter_solv_H[BB_RNA].push_back(23953.752900120977);
    5353           6 :   parameter_solv_H[BB_RNA].push_back(-117.35779348824417);
    5354           6 :   parameter_solv_H[BB_RNA].push_back(-47644.41735332843);
    5355           6 :   parameter_solv_H[BB_RNA].push_back(-14641.556643789861);
    5356           6 :   parameter_solv_H[BB_RNA].push_back(96893.48627050371);
    5357           6 :   parameter_solv_H[BB_RNA].push_back(-72249.62534169303);
    5358           6 :   parameter_solv_H[BB_RNA].push_back(16792.055521055358);
    5359             : 
    5360           6 :   parameter_solv_H[BB_RNA_5].push_back(25574.406400119024);
    5361           6 :   parameter_solv_H[BB_RNA_5].push_back(-131.99642772933734);
    5362           6 :   parameter_solv_H[BB_RNA_5].push_back(-52136.51404531251);
    5363           6 :   parameter_solv_H[BB_RNA_5].push_back(-16682.14273917604);
    5364           6 :   parameter_solv_H[BB_RNA_5].push_back(110278.01921639398);
    5365           6 :   parameter_solv_H[BB_RNA_5].push_back(-83715.92027818544);
    5366           6 :   parameter_solv_H[BB_RNA_5].push_back(19875.89133770605);
    5367             : 
    5368           6 :   parameter_solv_H[BB_RNA_3].push_back(25574.406400119027);
    5369           6 :   parameter_solv_H[BB_RNA_3].push_back(-127.96875237036166);
    5370           6 :   parameter_solv_H[BB_RNA_3].push_back(-51407.18391758439);
    5371           6 :   parameter_solv_H[BB_RNA_3].push_back(-15922.900669975606);
    5372           6 :   parameter_solv_H[BB_RNA_3].push_back(105078.5888910626);
    5373           6 :   parameter_solv_H[BB_RNA_3].push_back(-78289.16276190645);
    5374           6 :   parameter_solv_H[BB_RNA_3].push_back(18156.832143441192);
    5375             : 
    5376           6 :   parameter_solv_H[BASE_A].push_back(13282.562500119211);
    5377           6 :   parameter_solv_H[BASE_A].push_back(-76.45124168404048);
    5378           6 :   parameter_solv_H[BASE_A].push_back(-28376.06994108963);
    5379           6 :   parameter_solv_H[BASE_A].push_back(-9972.910773722022);
    5380           6 :   parameter_solv_H[BASE_A].push_back(65873.86341939073);
    5381           6 :   parameter_solv_H[BASE_A].push_back(-52064.33492910885);
    5382           6 :   parameter_solv_H[BASE_A].push_back(12931.608989412513);
    5383             : 
    5384           6 :   parameter_solv_H[BASE_C].push_back(10600.76160011891);
    5385           6 :   parameter_solv_H[BASE_C].push_back(-49.1670871249108);
    5386           6 :   parameter_solv_H[BASE_C].push_back(-20239.818742072875);
    5387           6 :   parameter_solv_H[BASE_C].push_back(-6020.278780090207);
    5388           6 :   parameter_solv_H[BASE_C].push_back(39632.13288981881);
    5389           6 :   parameter_solv_H[BASE_C].push_back(-28954.779736165576);
    5390           6 :   parameter_solv_H[BASE_C].push_back(6551.541109526305);
    5391             : 
    5392           6 :   parameter_solv_H[BASE_G].push_back(15470.384400119934);
    5393           6 :   parameter_solv_H[BASE_G].push_back(-93.8013620200972);
    5394           6 :   parameter_solv_H[BASE_G].push_back(-36188.29687013545);
    5395           6 :   parameter_solv_H[BASE_G].push_back(-13717.685098209471);
    5396           6 :   parameter_solv_H[BASE_G].push_back(95658.18473657136);
    5397           6 :   parameter_solv_H[BASE_G].push_back(-81262.37811451119);
    5398           6 :   parameter_solv_H[BASE_G].push_back(21841.903930943085);
    5399             : 
    5400           6 :   parameter_solv_H[BASE_T].push_back(17210.81610011936);
    5401           6 :   parameter_solv_H[BASE_T].push_back(-93.10189802920208);
    5402           6 :   parameter_solv_H[BASE_T].push_back(-36466.51927689957);
    5403           6 :   parameter_solv_H[BASE_T].push_back(-12425.55615716932);
    5404           6 :   parameter_solv_H[BASE_T].push_back(83847.427808925);
    5405           6 :   parameter_solv_H[BASE_T].push_back(-66735.64997846584);
    5406           6 :   parameter_solv_H[BASE_T].push_back(16757.3463987507);
    5407             : 
    5408           6 :   parameter_solv_H[BASE_U].push_back(10909.802500119395);
    5409           6 :   parameter_solv_H[BASE_U].push_back(-46.17712672768298);
    5410           6 :   parameter_solv_H[BASE_U].push_back(-20149.67695512526);
    5411           6 :   parameter_solv_H[BASE_U].push_back(-5590.242961204435);
    5412           6 :   parameter_solv_H[BASE_U].push_back(37169.2740983132);
    5413           6 :   parameter_solv_H[BASE_U].push_back(-26475.631627167604);
    5414           6 :   parameter_solv_H[BASE_U].push_back(5808.201015156168);
    5415             : 
    5416           6 :   parameter_mix_H[BB_PO3].push_back(143.5890401192106);
    5417           6 :   parameter_mix_H[BB_PO3].push_back(-0.0679405156108208);
    5418           6 :   parameter_mix_H[BB_PO3].push_back(-131.78648321068806);
    5419           6 :   parameter_mix_H[BB_PO3].push_back(-7.222980065241985);
    5420           6 :   parameter_mix_H[BB_PO3].push_back(79.67309464590994);
    5421           6 :   parameter_mix_H[BB_PO3].push_back(-27.950095608460042);
    5422           6 :   parameter_mix_H[BB_PO3].push_back(0.12790403369995257);
    5423             : 
    5424           6 :   parameter_mix_H[BB_PO2].push_back(80.12660011920252);
    5425           6 :   parameter_mix_H[BB_PO2].push_back(-0.0278885551982023);
    5426           6 :   parameter_mix_H[BB_PO2].push_back(-60.532194918222984);
    5427           6 :   parameter_mix_H[BB_PO2].push_back(-2.976882903409687);
    5428           6 :   parameter_mix_H[BB_PO2].push_back(33.30645116638125);
    5429           6 :   parameter_mix_H[BB_PO2].push_back(-11.601573219761374);
    5430           6 :   parameter_mix_H[BB_PO2].push_back(0.12551046492022422);
    5431             : 
    5432           6 :   parameter_mix_H[BB_DNA].push_back(712.7621601191935);
    5433           6 :   parameter_mix_H[BB_DNA].push_back(-0.3228709821198571);
    5434           6 :   parameter_mix_H[BB_DNA].push_back(-784.5118228559945);
    5435           6 :   parameter_mix_H[BB_DNA].push_back(-27.196125702249613);
    5436           6 :   parameter_mix_H[BB_DNA].push_back(410.0185035102729);
    5437           6 :   parameter_mix_H[BB_DNA].push_back(-54.453513369320355);
    5438           6 :   parameter_mix_H[BB_DNA].push_back(-44.85506789237683);
    5439             : 
    5440           6 :   parameter_mix_H[BB_DNA_5].push_back(625.175339965785);
    5441           6 :   parameter_mix_H[BB_DNA_5].push_back(0.2691706617748245);
    5442           6 :   parameter_mix_H[BB_DNA_5].push_back(-582.8721350420001);
    5443           6 :   parameter_mix_H[BB_DNA_5].push_back(46.512408351374326);
    5444           6 :   parameter_mix_H[BB_DNA_5].push_back(-58.93886949899108);
    5445           6 :   parameter_mix_H[BB_DNA_5].push_back(307.29720336085046);
    5446           6 :   parameter_mix_H[BB_DNA_5].push_back(-131.71996309259953);
    5447             : 
    5448           6 :   parameter_mix_H[BB_DNA_3].push_back(625.1753399401266);
    5449           6 :   parameter_mix_H[BB_DNA_3].push_back(0.08763234414546289);
    5450           6 :   parameter_mix_H[BB_DNA_3].push_back(-606.8067575087485);
    5451           6 :   parameter_mix_H[BB_DNA_3].push_back(20.84427254872218);
    5452           6 :   parameter_mix_H[BB_DNA_3].push_back(92.53523123608991);
    5453           6 :   parameter_mix_H[BB_DNA_3].push_back(162.04688035654937);
    5454           6 :   parameter_mix_H[BB_DNA_3].push_back(-89.13571774638052);
    5455             : 
    5456           6 :   parameter_mix_H[BB_RNA].push_back(936.9775801191857);
    5457           6 :   parameter_mix_H[BB_RNA].push_back(-1.3233686929680253);
    5458           6 :   parameter_mix_H[BB_RNA].push_back(-1212.1627155263773);
    5459           6 :   parameter_mix_H[BB_RNA].push_back(-141.35324744384351);
    5460           6 :   parameter_mix_H[BB_RNA].push_back(1155.8281658363026);
    5461           6 :   parameter_mix_H[BB_RNA].push_back(-548.9340055857343);
    5462           6 :   parameter_mix_H[BB_RNA].push_back(50.81734777881503);
    5463             : 
    5464           6 :   parameter_mix_H[BB_RNA_5].push_back(848.5355201165631);
    5465           6 :   parameter_mix_H[BB_RNA_5].push_back(-0.49570338490120175);
    5466           6 :   parameter_mix_H[BB_RNA_5].push_back(-976.1033073783973);
    5467           6 :   parameter_mix_H[BB_RNA_5].push_back(-32.943532187986605);
    5468           6 :   parameter_mix_H[BB_RNA_5].push_back(475.66177061923884);
    5469           6 :   parameter_mix_H[BB_RNA_5].push_back(17.51955845824258);
    5470           6 :   parameter_mix_H[BB_RNA_5].push_back(-96.74451972314769);
    5471             : 
    5472           6 :   parameter_mix_H[BB_RNA_3].push_back(848.5355201192122);
    5473           6 :   parameter_mix_H[BB_RNA_3].push_back(-0.8301109354355396);
    5474           6 :   parameter_mix_H[BB_RNA_3].push_back(-1019.9524389785406);
    5475           6 :   parameter_mix_H[BB_RNA_3].push_back(-84.1388451424885);
    5476           6 :   parameter_mix_H[BB_RNA_3].push_back(787.1277245040931);
    5477           6 :   parameter_mix_H[BB_RNA_3].push_back(-294.67807432795627);
    5478           6 :   parameter_mix_H[BB_RNA_3].push_back(-1.3214626461251089);
    5479             : 
    5480           6 :   parameter_mix_H[BASE_A].push_back(1504.9345001191857);
    5481           6 :   parameter_mix_H[BASE_A].push_back(-3.5306888452552663);
    5482           6 :   parameter_mix_H[BASE_A].push_back(-2234.3933572775572);
    5483           6 :   parameter_mix_H[BASE_A].push_back(-380.0255208494757);
    5484           6 :   parameter_mix_H[BASE_A].push_back(2726.27802432048);
    5485           6 :   parameter_mix_H[BASE_A].push_back(-1490.8825754968443);
    5486           6 :   parameter_mix_H[BASE_A].push_back(199.7501110740159);
    5487             : 
    5488           6 :   parameter_mix_H[BASE_C].push_back(939.8188801192172);
    5489           6 :   parameter_mix_H[BASE_C].push_back(-1.489638186262854);
    5490           6 :   parameter_mix_H[BASE_C].push_back(-1244.5515798554075);
    5491           6 :   parameter_mix_H[BASE_C].push_back(-161.3972705672055);
    5492           6 :   parameter_mix_H[BASE_C].push_back(1276.3568466722545);
    5493           6 :   parameter_mix_H[BASE_C].push_back(-643.3057776225742);
    5494           6 :   parameter_mix_H[BASE_C].push_back(72.75963113826273);
    5495             : 
    5496           6 :   parameter_mix_H[BASE_G].push_back(1768.434840119199);
    5497           6 :   parameter_mix_H[BASE_G].push_back(-6.505347007077434);
    5498           6 :   parameter_mix_H[BASE_G].push_back(-2919.3856777898427);
    5499           6 :   parameter_mix_H[BASE_G].push_back(-701.2456464463938);
    5500           6 :   parameter_mix_H[BASE_G].push_back(4464.594230284102);
    5501           6 :   parameter_mix_H[BASE_G].push_back(-2733.138521295608);
    5502           6 :   parameter_mix_H[BASE_G].push_back(458.1177706235891);
    5503             : 
    5504           6 :   parameter_mix_H[BASE_T].push_back(1179.3981001192033);
    5505           6 :   parameter_mix_H[BASE_T].push_back(-3.2037849252756527);
    5506           6 :   parameter_mix_H[BASE_T].push_back(-1821.255498763799);
    5507           6 :   parameter_mix_H[BASE_T].push_back(-371.01993266441303);
    5508           6 :   parameter_mix_H[BASE_T].push_back(2604.074226688971);
    5509           6 :   parameter_mix_H[BASE_T].push_back(-1648.1965787713084);
    5510           6 :   parameter_mix_H[BASE_T].push_back(307.2962186436368);
    5511             : 
    5512           6 :   parameter_mix_H[BASE_U].push_back(956.3442001192266);
    5513           6 :   parameter_mix_H[BASE_U].push_back(-1.724458000760567);
    5514           6 :   parameter_mix_H[BASE_U].push_back(-1287.9746970192687);
    5515           6 :   parameter_mix_H[BASE_U].push_back(-192.74748379510373);
    5516           6 :   parameter_mix_H[BASE_U].push_back(1459.0789258833893);
    5517           6 :   parameter_mix_H[BASE_U].push_back(-810.0763075080915);
    5518           6 :   parameter_mix_H[BASE_U].push_back(119.81810290248339);
    5519             : 
    5520           6 :   parameter_vac_H[BB_PO3].push_back(3.519375907888525);
    5521           6 :   parameter_vac_H[BB_PO3].push_back(7.742660056553524e-05);
    5522           6 :   parameter_vac_H[BB_PO3].push_back(-1.3856562746347367);
    5523           6 :   parameter_vac_H[BB_PO3].push_back(0.00821183249969174);
    5524           6 :   parameter_vac_H[BB_PO3].push_back(0.21213096729728745);
    5525           6 :   parameter_vac_H[BB_PO3].push_back(0.032592855104331325);
    5526           6 :   parameter_vac_H[BB_PO3].push_back(-0.02236149538438434);
    5527             : 
    5528           6 :   parameter_vac_H[BB_PO2].push_back(2.7889001116093275);
    5529           6 :   parameter_vac_H[BB_PO2].push_back(-0.00011178884266113128);
    5530           6 :   parameter_vac_H[BB_PO2].push_back(-1.1702605818380667);
    5531           6 :   parameter_vac_H[BB_PO2].push_back(-0.011278044036819933);
    5532           6 :   parameter_vac_H[BB_PO2].push_back(0.3214006584089025);
    5533           6 :   parameter_vac_H[BB_PO2].push_back(-0.04097165983591666);
    5534           6 :   parameter_vac_H[BB_PO2].push_back(-0.017525098100539722);
    5535             : 
    5536           6 :   parameter_vac_H[BB_DNA].push_back(5.987809026456476);
    5537           6 :   parameter_vac_H[BB_DNA].push_back(9.945454528827912e-05);
    5538           6 :   parameter_vac_H[BB_DNA].push_back(-1.1884708569330031);
    5539           6 :   parameter_vac_H[BB_DNA].push_back(-0.007457733256362841);
    5540           6 :   parameter_vac_H[BB_DNA].push_back(0.05666858781418339);
    5541           6 :   parameter_vac_H[BB_DNA].push_back(-0.15158797629971757);
    5542           6 :   parameter_vac_H[BB_DNA].push_back(0.11642340861329734);
    5543             : 
    5544           6 :   parameter_vac_H[BB_DNA_5].push_back(4.297328944539055);
    5545           6 :   parameter_vac_H[BB_DNA_5].push_back(0.0014793971885106831);
    5546           6 :   parameter_vac_H[BB_DNA_5].push_back(1.3961088365255605);
    5547           6 :   parameter_vac_H[BB_DNA_5].push_back(0.08974639858979384);
    5548           6 :   parameter_vac_H[BB_DNA_5].push_back(-1.5198099705167643);
    5549           6 :   parameter_vac_H[BB_DNA_5].push_back(-0.12127122359433733);
    5550           6 :   parameter_vac_H[BB_DNA_5].push_back(0.4134601046223601);
    5551             : 
    5552           6 :   parameter_vac_H[BB_DNA_3].push_back(4.297328886488132);
    5553           6 :   parameter_vac_H[BB_DNA_3].push_back(0.0041802954281271905);
    5554           6 :   parameter_vac_H[BB_DNA_3].push_back(1.6065462295705266);
    5555           6 :   parameter_vac_H[BB_DNA_3].push_back(0.4399805535688805);
    5556           6 :   parameter_vac_H[BB_DNA_3].push_back(-3.3806711791929804);
    5557           6 :   parameter_vac_H[BB_DNA_3].push_back(1.6729551563628675);
    5558           6 :   parameter_vac_H[BB_DNA_3].push_back(-0.10911063067909885);
    5559             : 
    5560           6 :   parameter_vac_H[BB_RNA].push_back(9.162728984394093);
    5561           6 :   parameter_vac_H[BB_RNA].push_back(0.00019952321584579868);
    5562           6 :   parameter_vac_H[BB_RNA].push_back(-4.744748946331966);
    5563           6 :   parameter_vac_H[BB_RNA].push_back(0.025106563403946364);
    5564           6 :   parameter_vac_H[BB_RNA].push_back(1.2302956694109803);
    5565           6 :   parameter_vac_H[BB_RNA].push_back(0.12359062278096915);
    5566           6 :   parameter_vac_H[BB_RNA].push_back(-0.1725633367685285);
    5567             : 
    5568           6 :   parameter_vac_H[BB_RNA_5].push_back(7.038408898671503);
    5569           6 :   parameter_vac_H[BB_RNA_5].push_back(0.005106788424920148);
    5570           6 :   parameter_vac_H[BB_RNA_5].push_back(-0.8981588221803118);
    5571           6 :   parameter_vac_H[BB_RNA_5].push_back(0.4922588155214312);
    5572           6 :   parameter_vac_H[BB_RNA_5].push_back(-2.6667853454023644);
    5573           6 :   parameter_vac_H[BB_RNA_5].push_back(1.533316567240718);
    5574           6 :   parameter_vac_H[BB_RNA_5].push_back(-0.07199604869737707);
    5575             : 
    5576           6 :   parameter_vac_H[BB_RNA_3].push_back(7.038408892621863);
    5577           6 :   parameter_vac_H[BB_RNA_3].push_back(0.002993083907266898);
    5578           6 :   parameter_vac_H[BB_RNA_3].push_back(-1.3626596831098492);
    5579           6 :   parameter_vac_H[BB_RNA_3].push_back(0.3138856961130113);
    5580           6 :   parameter_vac_H[BB_RNA_3].push_back(-1.684185014289391);
    5581           6 :   parameter_vac_H[BB_RNA_3].push_back(1.1862168720864616);
    5582           6 :   parameter_vac_H[BB_RNA_3].push_back(-0.1443894172417523);
    5583             : 
    5584           6 :   parameter_vac_H[BASE_A].push_back(42.62784088079008);
    5585           6 :   parameter_vac_H[BASE_A].push_back(0.02302908536431516);
    5586           6 :   parameter_vac_H[BASE_A].push_back(-33.22707177297222);
    5587           6 :   parameter_vac_H[BASE_A].push_back(2.6853748424439834);
    5588           6 :   parameter_vac_H[BASE_A].push_back(-1.6632902891624768);
    5589           6 :   parameter_vac_H[BASE_A].push_back(11.905766349515268);
    5590           6 :   parameter_vac_H[BASE_A].push_back(-4.547083454788805);
    5591             : 
    5592           6 :   parameter_vac_H[BASE_C].push_back(20.83009588079022);
    5593           6 :   parameter_vac_H[BASE_C].push_back(0.017055822321768378);
    5594           6 :   parameter_vac_H[BASE_C].push_back(-8.349634734370916);
    5595           6 :   parameter_vac_H[BASE_C].push_back(1.9324634367723073);
    5596           6 :   parameter_vac_H[BASE_C].push_back(-8.435199734060882);
    5597           6 :   parameter_vac_H[BASE_C].push_back(8.272798368731268);
    5598           6 :   parameter_vac_H[BASE_C].push_back(-1.986671440757263);
    5599             : 
    5600           6 :   parameter_vac_H[BASE_G].push_back(50.53788088079374);
    5601           6 :   parameter_vac_H[BASE_G].push_back(0.024035597617780367);
    5602           6 :   parameter_vac_H[BASE_G].push_back(-47.94916639302998);
    5603           6 :   parameter_vac_H[BASE_G].push_back(3.143375731466498);
    5604           6 :   parameter_vac_H[BASE_G].push_back(4.297009866708155);
    5605           6 :   parameter_vac_H[BASE_G].push_back(15.855448505050578);
    5606           6 :   parameter_vac_H[BASE_G].push_back(-7.827484135873966);
    5607             : 
    5608           6 :   parameter_vac_H[BASE_T].push_back(20.20502488079069);
    5609           6 :   parameter_vac_H[BASE_T].push_back(0.033659966153300002);
    5610           6 :   parameter_vac_H[BASE_T].push_back(-6.057999187718758);
    5611           6 :   parameter_vac_H[BASE_T].push_back(4.146969282504351);
    5612           6 :   parameter_vac_H[BASE_T].push_back(-20.664315319574357);
    5613           6 :   parameter_vac_H[BASE_T].push_back(19.982178623201648);
    5614           6 :   parameter_vac_H[BASE_T].push_back(-5.440921587349456);
    5615             : 
    5616           6 :   parameter_vac_H[BASE_U].push_back(20.958084119209754);
    5617           6 :   parameter_vac_H[BASE_U].push_back(-0.005164660707148803);
    5618           6 :   parameter_vac_H[BASE_U].push_back(-14.53831312442302);
    5619           6 :   parameter_vac_H[BASE_U].push_back(-0.5276995756310442);
    5620           6 :   parameter_vac_H[BASE_U].push_back(7.060900707522138);
    5621           6 :   parameter_vac_H[BASE_U].push_back(-1.8988408480951036);
    5622           6 :   parameter_vac_H[BASE_U].push_back(-0.215000567681094);
    5623             : 
    5624       21340 :   for(unsigned i=0; i<atoms.size(); ++i) {
    5625       21334 :     std::string Aname = pdb.getAtomName(atoms[i]);
    5626       21334 :     std::string Rname = pdb.getResidueName(atoms[i]);
    5627       21334 :     Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
    5628       21334 :     if(Rname=="ALA") {
    5629        1078 :       atoi[residue_atom[i]]=ALA;
    5630       20256 :     } else if(Rname=="ARG") {
    5631        1296 :       atoi[residue_atom[i]]=ARG;
    5632       18960 :     } else if(Rname=="ASN") {
    5633        1080 :       atoi[residue_atom[i]]=ASN;
    5634       17880 :     } else if(Rname=="ASP") {
    5635         936 :       atoi[residue_atom[i]]=ASP;
    5636       16944 :     } else if(Rname=="CYS") {
    5637          72 :       atoi[residue_atom[i]]=CYS;
    5638       16872 :     } else if(Rname=="CYX") {
    5639           0 :       atoi[residue_atom[i]]=CYX;
    5640       16872 :     } else if(Rname=="GLN") {
    5641        1558 :       atoi[residue_atom[i]]=GLN;
    5642       15314 :     } else if(Rname=="GLU") {
    5643         714 :       atoi[residue_atom[i]]=GLU;
    5644       14600 :     } else if(Rname=="GLY") {
    5645         936 :       atoi[residue_atom[i]]=GLY;
    5646       13664 :     } else if(Rname=="HIS") {
    5647           0 :       atoi[residue_atom[i]]=HIS;
    5648       13664 :     } else if(Rname=="HID") {
    5649           0 :       atoi[residue_atom[i]]=HIS;
    5650       13664 :     } else if(Rname=="HIE") {
    5651         216 :       atoi[residue_atom[i]]=HIS;
    5652       13448 :     } else if(Rname=="HIP") {
    5653           0 :       atoi[residue_atom[i]]=HIP;
    5654             :       // CHARMM NAMING FOR PROTONATION STATES OF HISTIDINE
    5655       13448 :     } else if(Rname=="HSD") {
    5656           0 :       atoi[residue_atom[i]]=HIS;
    5657       13448 :     } else if(Rname=="HSE") {
    5658           0 :       atoi[residue_atom[i]]=HIS;
    5659       13448 :     } else if(Rname=="HSP") {
    5660           0 :       atoi[residue_atom[i]]=HIP;
    5661       13448 :     } else if(Rname=="ILE") {
    5662        1296 :       atoi[residue_atom[i]]=ILE;
    5663       12152 :     } else if(Rname=="LEU") {
    5664        2280 :       atoi[residue_atom[i]]=LEU;
    5665        9872 :     } else if(Rname=="LYS") {
    5666        1560 :       atoi[residue_atom[i]]=LYS;
    5667        8312 :     } else if(Rname=="MET") {
    5668         836 :       atoi[residue_atom[i]]=MET;
    5669        7476 :     } else if(Rname=="PHE") {
    5670        1512 :       atoi[residue_atom[i]]=PHE;
    5671        5964 :     } else if(Rname=="PRO") {
    5672        1122 :       atoi[residue_atom[i]]=PRO;
    5673        4842 :     } else if(Rname=="SER") {
    5674         768 :       atoi[residue_atom[i]]=SER;
    5675        4074 :     } else if(Rname=="THR") {
    5676         728 :       atoi[residue_atom[i]]=THR;
    5677        3346 :     } else if(Rname=="TRP") {
    5678           0 :       atoi[residue_atom[i]]=TRP;
    5679        3346 :     } else if(Rname=="TYR") {
    5680         792 :       atoi[residue_atom[i]]=TYR;
    5681        2554 :     } else if(Rname=="VAL") {
    5682        1600 :       atoi[residue_atom[i]]=VAL;
    5683             :     }
    5684             :     // NUCLEIC ACIDS
    5685             :     // nucleobases are not automatically populated as an additional check on the health of the PDB.
    5686             :     // RNA - G
    5687         954 :     else if(Rname=="G") {
    5688           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    5689           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    5690           0 :         atoi [residue_atom[i]]=BB_PO2;
    5691           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5692           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5693           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5694           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5695           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5696           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5697           0 :         atoi[residue_atom[i]]=BB_RNA;
    5698           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5699           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5700           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5701           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5702           0 :         atoi[residue_atom[i]]=BASE_G;
    5703             :       } else {
    5704           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5705             :       }
    5706             :       // RNA - G3
    5707         954 :     } else if(Rname=="G3") {
    5708           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5709           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5710           0 :         atoi [residue_atom[i]]=BB_PO2;
    5711           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    5712           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    5713           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    5714           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    5715           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    5716           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    5717           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    5718           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5719           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5720           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5721           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5722           0 :         atoi[residue_atom[i]]=BASE_G;
    5723             :       } else {
    5724           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5725             :       }
    5726             :       // RNA - G5
    5727         954 :     } else if(Rname=="G5") {
    5728           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5729           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5730           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5731           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    5732           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    5733           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    5734           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    5735           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5736           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5737           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5738           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5739           0 :         atoi[residue_atom[i]]=BASE_G;
    5740             :       } else {
    5741           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5742             :       }
    5743             :       // RNA - GT
    5744         954 :     } else if(Rname=="GT") {
    5745           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    5746           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    5747           0 :         atoi [residue_atom[i]]=BB_PO3;
    5748           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5749           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5750           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5751           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5752           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5753           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5754           0 :         atoi[residue_atom[i]]=BB_RNA;
    5755           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5756           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5757           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5758           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5759           0 :         atoi[residue_atom[i]]=BASE_G;
    5760             :       } else {
    5761           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5762             :       }
    5763             :       // RNA - U
    5764         954 :     } else if(Rname=="U") {
    5765        2886 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    5766        1482 :           Aname=="O1P" || Aname=="O2P"  ) {
    5767          78 :         atoi [residue_atom[i]]=BB_PO2;
    5768        2548 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5769        2132 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5770        1716 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5771        1326 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5772        1196 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5773        1560 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5774         416 :         atoi[residue_atom[i]]=BB_RNA;
    5775         884 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    5776         468 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    5777         364 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    5778         286 :         atoi[residue_atom[i]]=BASE_U;
    5779             :       } else {
    5780           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5781             :       }
    5782             :       // RNA - U3
    5783         174 :     } else if(Rname=="U3") {
    5784         230 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5785         174 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5786           6 :         atoi [residue_atom[i]]=BB_PO2;
    5787         204 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    5788         172 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    5789         140 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    5790         110 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    5791          94 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    5792          78 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    5793          34 :         atoi[residue_atom[i]]=BB_RNA_3;
    5794          68 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    5795          36 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    5796          28 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    5797          22 :         atoi[residue_atom[i]]=BASE_U;
    5798             :       } else {
    5799           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5800             :       }
    5801             :       // RNA - U5
    5802         112 :     } else if(Rname=="U5") {
    5803         408 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5804         344 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5805         280 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5806         216 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    5807         176 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    5808         156 :           Aname=="H2'1" || Aname=="H5T" ) {
    5809          68 :         atoi[residue_atom[i]]=BB_RNA_5;
    5810         136 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    5811          72 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    5812          56 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    5813          44 :         atoi[residue_atom[i]]=BASE_U;
    5814             :       } else {
    5815           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5816             :       }
    5817             :       // RNA - UT
    5818           0 :     } else if(Rname=="UT") {
    5819           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    5820           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    5821           0 :         atoi [residue_atom[i]]=BB_PO3;
    5822           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5823           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5824           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5825           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5826           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5827           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5828           0 :         atoi[residue_atom[i]]=BB_RNA;
    5829           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    5830           0 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    5831           0 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    5832           0 :         atoi[residue_atom[i]]=BASE_U;
    5833             :       } else {
    5834           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5835             :       }
    5836             :       // RNA - A
    5837           0 :     } else if(Rname=="A") {
    5838           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    5839           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    5840           0 :         atoi [residue_atom[i]]=BB_PO2;
    5841           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5842           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5843           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5844           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5845           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5846           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5847           0 :         atoi[residue_atom[i]]=BB_RNA;
    5848           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5849           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5850           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5851           0 :                 Aname=="H61" || Aname=="H62" ) {
    5852           0 :         atoi[residue_atom[i]]=BASE_A;
    5853             :       } else {
    5854           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5855             :       }
    5856             :       // RNA - A3
    5857           0 :     } else if(Rname=="A3") {
    5858           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5859           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5860           0 :         atoi [residue_atom[i]]=BB_PO2;
    5861           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    5862           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    5863           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    5864           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    5865           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    5866           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    5867           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    5868           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5869           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5870           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5871           0 :                 Aname=="H61" || Aname=="H62" ) {
    5872           0 :         atoi[residue_atom[i]]=BASE_A;
    5873             :       } else {
    5874           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5875             :       }
    5876             :       // RNA - A5
    5877           0 :     } else if(Rname=="A5") {
    5878           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5879           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5880           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5881           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    5882           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    5883           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    5884           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    5885           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5886           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5887           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5888           0 :                 Aname=="H61" || Aname=="H62" ) {
    5889           0 :         atoi[residue_atom[i]]=BASE_A;
    5890             :       } else {
    5891           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5892             :       }
    5893             :       // RNA - AT
    5894           0 :     } else if(Rname=="AT") {
    5895           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    5896           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    5897           0 :         atoi [residue_atom[i]]=BB_PO3;
    5898           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5899           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5900           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5901           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5902           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5903           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5904           0 :         atoi[residue_atom[i]]=BB_RNA;
    5905           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5906           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5907           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5908           0 :                 Aname=="H61" || Aname=="H62" ) {
    5909           0 :         atoi[residue_atom[i]]=BASE_A;
    5910             :       } else {
    5911           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5912             :       }
    5913             :       // RNA - C
    5914           0 :     } else if(Rname=="C") {
    5915           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    5916           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    5917           0 :         atoi [residue_atom[i]]=BB_PO2;
    5918           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5919           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5920           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5921           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5922           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5923           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5924           0 :         atoi[residue_atom[i]]=BB_RNA;
    5925           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5926           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5927           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5928           0 :         atoi[residue_atom[i]]=BASE_C;
    5929             :       } else {
    5930           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5931             :       }
    5932             :       // RNA - C3
    5933           0 :     } else if(Rname=="C3") {
    5934           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5935           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5936           0 :         atoi [residue_atom[i]]=BB_PO2;
    5937           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    5938           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    5939           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    5940           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    5941           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    5942           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    5943           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    5944           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5945           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5946           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5947           0 :         atoi[residue_atom[i]]=BASE_C;
    5948             :       } else {
    5949           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5950             :       }
    5951             :       // RNA - C5
    5952           0 :     } else if(Rname=="C5") {
    5953           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5954           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5955           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5956           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    5957           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    5958           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    5959           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    5960           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5961           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5962           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5963           0 :         atoi[residue_atom[i]]=BASE_C;
    5964             :       } else {
    5965           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5966             :       }
    5967             :       // RNA - CT
    5968           0 :     } else if(Rname=="CT") {
    5969           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    5970           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    5971           0 :         atoi [residue_atom[i]]=BB_PO3;
    5972           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5973           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5974           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5975           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5976           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5977           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5978           0 :         atoi[residue_atom[i]]=BB_RNA;
    5979           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5980           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5981           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5982           0 :         atoi[residue_atom[i]]=BASE_C;
    5983             :       } else {
    5984           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5985             :       }
    5986             :       // DNA - G
    5987           0 :     } else if(Rname=="DG") {
    5988           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    5989           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    5990           0 :         atoi [residue_atom[i]]=BB_PO2;
    5991           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5992           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5993           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5994           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5995           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    5996           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    5997           0 :         atoi[residue_atom[i]]=BB_DNA;
    5998           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5999           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6000           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6001           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6002           0 :         atoi[residue_atom[i]]=BASE_G;
    6003             :       } else {
    6004           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6005             :       }
    6006             :       // DNA - G3
    6007           0 :     } else if(Rname=="DG3") {
    6008           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6009           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6010           0 :         atoi [residue_atom[i]]=BB_PO2;
    6011           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6012           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6013           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6014           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    6015           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6016             :                 Aname=="H3T" ) {
    6017           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    6018           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6019           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6020           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6021           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6022           0 :         atoi[residue_atom[i]]=BASE_G;
    6023             :       } else {
    6024           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6025             :       }
    6026             :       // DNA - G5
    6027           0 :     } else if(Rname=="DG5") {
    6028           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6029           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    6030           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6031           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6032           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6033             :           Aname=="H5T" ) {
    6034           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    6035           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6036           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6037           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6038           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6039           0 :         atoi[residue_atom[i]]=BASE_G;
    6040             :       } else {
    6041           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6042             :       }
    6043             :       // DNA - GT
    6044           0 :     } else if(Rname=="DGT") {
    6045           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    6046           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    6047           0 :         atoi [residue_atom[i]]=BB_PO3;
    6048           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6049           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6050           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6051           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6052           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6053           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6054           0 :         atoi[residue_atom[i]]=BB_DNA;
    6055           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6056           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6057           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6058           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6059           0 :         atoi[residue_atom[i]]=BASE_G;
    6060             :       } else {
    6061           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6062             :       }
    6063             :       // DNA - T
    6064           0 :     } else if(Rname=="DT") {
    6065           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    6066           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    6067           0 :         atoi [residue_atom[i]]=BB_PO2;
    6068           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6069           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6070           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6071           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6072           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6073           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6074           0 :         atoi[residue_atom[i]]=BB_DNA;
    6075           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    6076           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    6077           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    6078           0 :                 Aname=="H72" || Aname=="H73" ) {
    6079           0 :         atoi[residue_atom[i]]=BASE_T;
    6080             :       } else {
    6081           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6082             :       }
    6083             :       // DNA - T3
    6084           0 :     } else if(Rname=="DT3") {
    6085           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6086           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6087           0 :         atoi [residue_atom[i]]=BB_PO2;
    6088           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6089           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6090           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6091           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    6092           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6093             :                 Aname=="H3T" ) {
    6094           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    6095           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    6096           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    6097           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    6098           0 :                 Aname=="H72" || Aname=="H73" ) {
    6099           0 :         atoi[residue_atom[i]]=BASE_T;
    6100             :       } else {
    6101           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6102             :       }
    6103             :       // DNA - T5
    6104           0 :     } else if(Rname=="DT5") {
    6105           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6106           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    6107           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6108           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6109           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6110             :           Aname=="H5T" ) {
    6111           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    6112           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    6113           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    6114           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    6115           0 :                 Aname=="H72" || Aname=="H73" ) {
    6116           0 :         atoi[residue_atom[i]]=BASE_T;
    6117             :       } else {
    6118           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6119             :       }
    6120             :       // DNA - TT
    6121           0 :     } else if(Rname=="DTT") {
    6122           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    6123           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    6124           0 :         atoi [residue_atom[i]]=BB_PO3;
    6125           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6126           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6127           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6128           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6129           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6130           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6131           0 :         atoi[residue_atom[i]]=BB_DNA;
    6132           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    6133           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    6134           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    6135           0 :                 Aname=="H72" || Aname=="H73" ) {
    6136           0 :         atoi[residue_atom[i]]=BASE_T;
    6137             :       } else {
    6138           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6139             :       }
    6140             :       // DNA - A
    6141           0 :     } else if(Rname=="DA") {
    6142           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    6143           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    6144           0 :         atoi [residue_atom[i]]=BB_PO2;
    6145           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6146           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6147           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6148           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6149           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6150           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6151           0 :         atoi[residue_atom[i]]=BB_DNA;
    6152           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6153           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6154           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6155           0 :                 Aname=="H61" || Aname=="H62" ) {
    6156           0 :         atoi[residue_atom[i]]=BASE_A;
    6157             :       } else {
    6158           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6159             :       }
    6160             :       // DNA - A3
    6161           0 :     } else if(Rname=="DA3") {
    6162           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6163           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6164           0 :         atoi [residue_atom[i]]=BB_PO2;
    6165           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6166           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6167           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6168           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    6169           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6170             :                 Aname=="H3T" ) {
    6171           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    6172           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6173           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6174           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6175           0 :                 Aname=="H61" || Aname=="H62" ) {
    6176           0 :         atoi[residue_atom[i]]=BASE_A;
    6177             :       } else {
    6178           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6179             :       }
    6180             :       // DNA - A5
    6181           0 :     } else if(Rname=="DA5") {
    6182           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6183           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    6184           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6185           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6186           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6187             :           Aname=="H5T" ) {
    6188           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    6189           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6190           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6191           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6192           0 :                 Aname=="H61" || Aname=="H62" ) {
    6193           0 :         atoi[residue_atom[i]]=BASE_A;
    6194             :       } else {
    6195           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6196             :       }
    6197             :       // DNA - AT
    6198           0 :     } else if(Rname=="DAT") {
    6199           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    6200           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    6201           0 :         atoi [residue_atom[i]]=BB_PO3;
    6202           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6203           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6204           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6205           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6206           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6207           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6208           0 :         atoi[residue_atom[i]]=BB_DNA;
    6209           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6210           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6211           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6212           0 :                 Aname=="H61" || Aname=="H62" ) {
    6213           0 :         atoi[residue_atom[i]]=BASE_A;
    6214             :       } else {
    6215           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6216             :       }
    6217             :       // DNA - C
    6218           0 :     } else if(Rname=="DC") {
    6219           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    6220           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    6221           0 :         atoi [residue_atom[i]]=BB_PO2;
    6222           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6223           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6224           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6225           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6226           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6227           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6228           0 :         atoi[residue_atom[i]]=BB_DNA;
    6229           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6230           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6231           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6232           0 :         atoi[residue_atom[i]]=BASE_C;
    6233             :       } else {
    6234           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6235             :       }
    6236             :       // DNA - C3
    6237           0 :     } else if(Rname=="DC3") {
    6238           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6239           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6240           0 :         atoi [residue_atom[i]]=BB_PO2;
    6241           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6242           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6243           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6244           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    6245           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6246             :                 Aname=="H3T" ) {
    6247           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    6248           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6249           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6250           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6251           0 :         atoi[residue_atom[i]]=BASE_C;
    6252             :       } else {
    6253           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6254             :       }
    6255             :       // DNA - C5
    6256           0 :     } else if(Rname=="DC5") {
    6257           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6258           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    6259           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6260           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6261           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6262             :           Aname=="H5T" ) {
    6263           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    6264           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6265           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6266           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6267           0 :         atoi[residue_atom[i]]=BASE_C;
    6268             :       } else {
    6269           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6270             :       }
    6271             :       // DNA - CT
    6272           0 :     } else if(Rname=="DCT") {
    6273           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    6274           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    6275           0 :         atoi [residue_atom[i]]=BB_PO3;
    6276           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6277           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6278           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6279           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6280           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6281           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6282           0 :         atoi[residue_atom[i]]=BB_DNA;
    6283           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6284           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6285           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6286           0 :         atoi[residue_atom[i]]=BASE_C;
    6287             :       } else {
    6288           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6289             :       }
    6290             :     } else {
    6291           0 :       error("Residue not known: "+Rname);
    6292             :     }
    6293             :   }
    6294           6 : }
    6295             : 
    6296           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) {
    6297             :   // 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.
    6298           6 :   parameter_mix_D[TRP].push_back(8105.740500119327);
    6299           6 :   parameter_mix_D[TRP].push_back(-41.785616935469804);
    6300           6 :   parameter_mix_D[TRP].push_back(-25456.92790554363);
    6301           6 :   parameter_mix_D[TRP].push_back(-10058.20599969184);
    6302           6 :   parameter_mix_D[TRP].push_back(86171.76479108425);
    6303           6 :   parameter_mix_D[TRP].push_back(-83227.63139882773);
    6304           6 :   parameter_mix_D[TRP].push_back(25121.390436258724);
    6305             : 
    6306           6 :   parameter_mix_D[TYR].push_back(6059.530560118732);
    6307           6 :   parameter_mix_D[TYR].push_back(-24.522695525705736);
    6308           6 :   parameter_mix_D[TYR].push_back(-17180.858815360847);
    6309           6 :   parameter_mix_D[TYR].push_back(-5990.1358528219325);
    6310           6 :   parameter_mix_D[TYR].push_back(52936.46126637543);
    6311           6 :   parameter_mix_D[TYR].push_back(-50150.0042622683);
    6312           6 :   parameter_mix_D[TYR].push_back(14914.553672440441);
    6313             : 
    6314           6 :   parameter_mix_D[PHE].push_back(5563.404880119222);
    6315           6 :   parameter_mix_D[PHE].push_back(-33.609784645922794);
    6316           6 :   parameter_mix_D[PHE].push_back(-14576.935030777448);
    6317           6 :   parameter_mix_D[PHE].push_back(-5759.170105553782);
    6318           6 :   parameter_mix_D[PHE].push_back(43316.895956549866);
    6319           6 :   parameter_mix_D[PHE].push_back(-39106.58694570862);
    6320           6 :   parameter_mix_D[PHE].push_back(11143.375742877468);
    6321             : 
    6322           6 :   parameter_mix_D[HIP].push_back(3981.7108801192553);
    6323           6 :   parameter_mix_D[HIP].push_back(-23.788371565946427);
    6324           6 :   parameter_mix_D[HIP].push_back(-9471.73953776056);
    6325           6 :   parameter_mix_D[HIP].push_back(-3690.3981577198365);
    6326           6 :   parameter_mix_D[HIP].push_back(26365.958584217453);
    6327           6 :   parameter_mix_D[HIP].push_back(-23067.58974902849);
    6328           6 :   parameter_mix_D[HIP].push_back(6390.507451097114);
    6329             : 
    6330           6 :   parameter_mix_D[ARG].push_back(6279.489359881259);
    6331           6 :   parameter_mix_D[ARG].push_back(1.2061878338083583);
    6332           6 :   parameter_mix_D[ARG].push_back(-20305.413937989913);
    6333           6 :   parameter_mix_D[ARG].push_back(-5621.666335222669);
    6334           6 :   parameter_mix_D[ARG].push_back(67341.96785520067);
    6335           6 :   parameter_mix_D[ARG].push_back(-68849.15464591733);
    6336           6 :   parameter_mix_D[ARG].push_back(21773.0630363882);
    6337             : 
    6338           6 :   parameter_mix_D[LYS].push_back(5434.487400119193);
    6339           6 :   parameter_mix_D[LYS].push_back(-29.32356328987909);
    6340           6 :   parameter_mix_D[LYS].push_back(-14363.66155749977);
    6341           6 :   parameter_mix_D[LYS].push_back(-5650.383128516514);
    6342           6 :   parameter_mix_D[LYS].push_back(44573.73888236887);
    6343           6 :   parameter_mix_D[LYS].push_back(-41515.980945300485);
    6344           6 :   parameter_mix_D[LYS].push_back(12181.965046747513);
    6345             : 
    6346           6 :   parameter_mix_D[CYS].push_back(1519.4030001192032);
    6347           6 :   parameter_mix_D[CYS].push_back(-3.564386334921097);
    6348           6 :   parameter_mix_D[CYS].push_back(-2275.813167459516);
    6349           6 :   parameter_mix_D[CYS].push_back(-409.54431591328125);
    6350           6 :   parameter_mix_D[CYS].push_back(2969.5412742839258);
    6351           6 :   parameter_mix_D[CYS].push_back(-1798.3157146799638);
    6352           6 :   parameter_mix_D[CYS].push_back(314.568167888235);
    6353             : 
    6354           6 :   parameter_mix_D[CYX].push_back(1310.696400119220);
    6355           6 :   parameter_mix_D[CYX].push_back(-2.919852579787);
    6356           6 :   parameter_mix_D[CYX].push_back(-1902.283026713150);
    6357           6 :   parameter_mix_D[CYX].push_back(-340.431267947190);
    6358           6 :   parameter_mix_D[CYX].push_back(2480.025274590502);
    6359           6 :   parameter_mix_D[CYX].push_back(-1529.188197179144);
    6360           6 :   parameter_mix_D[CYX].push_back(278.926068515295);
    6361             : 
    6362           6 :   parameter_mix_D[ASP].push_back(1861.6998401191709);
    6363           6 :   parameter_mix_D[ASP].push_back(-5.349780637260551);
    6364           6 :   parameter_mix_D[ASP].push_back(-2960.36741510377);
    6365           6 :   parameter_mix_D[ASP].push_back(-621.8270745040523);
    6366           6 :   parameter_mix_D[ASP].push_back(4334.798300452934);
    6367           6 :   parameter_mix_D[ASP].push_back(-2776.8560521554878);
    6368           6 :   parameter_mix_D[ASP].push_back(527.9777182094936);
    6369             : 
    6370           6 :   parameter_mix_D[GLU].push_back(2861.6017201192253);
    6371           6 :   parameter_mix_D[GLU].push_back(-13.146456903921809);
    6372           6 :   parameter_mix_D[GLU].push_back(-5393.408563875243);
    6373           6 :   parameter_mix_D[GLU].push_back(-1646.460570818364);
    6374           6 :   parameter_mix_D[GLU].push_back(10884.544923253858);
    6375           6 :   parameter_mix_D[GLU].push_back(-8159.923373048856);
    6376           6 :   parameter_mix_D[GLU].push_back(1914.545660397314);
    6377             : 
    6378           6 :   parameter_mix_D[ILE].push_back(4288.585540119189);
    6379           6 :   parameter_mix_D[ILE].push_back(-19.937215352880365);
    6380           6 :   parameter_mix_D[ILE].push_back(-8324.540144463375);
    6381           6 :   parameter_mix_D[ILE].push_back(-2431.835931316717);
    6382           6 :   parameter_mix_D[ILE].push_back(16079.9912986194);
    6383           6 :   parameter_mix_D[ILE].push_back(-11637.693060394462);
    6384           6 :   parameter_mix_D[ILE].push_back(2600.8258068480495);
    6385             : 
    6386           6 :   parameter_mix_D[LEU].push_back(4288.585540119186);
    6387           6 :   parameter_mix_D[LEU].push_back(-21.50343599461759);
    6388           6 :   parameter_mix_D[LEU].push_back(-8479.703435720274);
    6389           6 :   parameter_mix_D[LEU].push_back(-2647.8693829269596);
    6390           6 :   parameter_mix_D[LEU].push_back(17297.18115838578);
    6391           6 :   parameter_mix_D[LEU].push_back(-12826.972408323161);
    6392           6 :   parameter_mix_D[LEU].push_back(2953.1262521615645);
    6393             : 
    6394           6 :   parameter_mix_D[MET].push_back(3561.6276801191552);
    6395           6 :   parameter_mix_D[MET].push_back(-22.19323392975885);
    6396           6 :   parameter_mix_D[MET].push_back(-8348.33907053846);
    6397           6 :   parameter_mix_D[MET].push_back(-3323.053272414289);
    6398           6 :   parameter_mix_D[MET].push_back(23153.238909304255);
    6399           6 :   parameter_mix_D[MET].push_back(-20091.960440908682);
    6400           6 :   parameter_mix_D[MET].push_back(5518.759669687693);
    6401             : 
    6402           6 :   parameter_mix_D[ASN].push_back(2326.5396001192003);
    6403           6 :   parameter_mix_D[ASN].push_back(-8.634908921289112);
    6404           6 :   parameter_mix_D[ASN].push_back(-4057.4552636749636);
    6405           6 :   parameter_mix_D[ASN].push_back(-1032.743130124821);
    6406           6 :   parameter_mix_D[ASN].push_back(6957.141592429445);
    6407           6 :   parameter_mix_D[ASN].push_back(-4808.265318722317);
    6408           6 :   parameter_mix_D[ASN].push_back(1016.3944815533755);
    6409             : 
    6410           6 :   parameter_mix_D[PRO].push_back(2471.1663601191985);
    6411           6 :   parameter_mix_D[PRO].push_back(-6.360795284260088);
    6412           6 :   parameter_mix_D[PRO].push_back(-3825.4533158429153);
    6413           6 :   parameter_mix_D[PRO].push_back(-728.7164844824666);
    6414           6 :   parameter_mix_D[PRO].push_back(5195.036303827973);
    6415           6 :   parameter_mix_D[PRO].push_back(-3183.733716480742);
    6416           6 :   parameter_mix_D[PRO].push_back(563.2376162754107);
    6417             : 
    6418           6 :   parameter_mix_D[GLN].push_back(3431.669280119236);
    6419           6 :   parameter_mix_D[GLN].push_back(-19.412747205646166);
    6420           6 :   parameter_mix_D[GLN].push_back(-7298.017973002134);
    6421           6 :   parameter_mix_D[GLN].push_back(-2659.3014182337706);
    6422           6 :   parameter_mix_D[GLN].push_back(17890.76595805173);
    6423           6 :   parameter_mix_D[GLN].push_back(-14684.603067192957);
    6424           6 :   parameter_mix_D[GLN].push_back(3814.338335151394);
    6425             : 
    6426           6 :   parameter_mix_D[SER].push_back(1423.885200119192);
    6427           6 :   parameter_mix_D[SER].push_back(-2.586428606204385);
    6428           6 :   parameter_mix_D[SER].push_back(-1966.7369507188134);
    6429           6 :   parameter_mix_D[SER].push_back(-289.17277383434106);
    6430           6 :   parameter_mix_D[SER].push_back(2209.478296043199);
    6431           6 :   parameter_mix_D[SER].push_back(-1216.1521614944);
    6432           6 :   parameter_mix_D[SER].push_back(177.0615931546754);
    6433             : 
    6434           6 :   parameter_mix_D[THR].push_back(2311.2364801191825);
    6435           6 :   parameter_mix_D[THR].push_back(-6.258071321531929);
    6436           6 :   parameter_mix_D[THR].push_back(-3656.295629081312);
    6437           6 :   parameter_mix_D[THR].push_back(-716.4013890357804);
    6438           6 :   parameter_mix_D[THR].push_back(5071.656317108832);
    6439           6 :   parameter_mix_D[THR].push_back(-3125.8076789667816);
    6440           6 :   parameter_mix_D[THR].push_back(555.9775741081131);
    6441             : 
    6442           6 :   parameter_mix_D[VAL].push_back(3041.128320119224);
    6443           6 :   parameter_mix_D[VAL].push_back(-9.314034190716423);
    6444           6 :   parameter_mix_D[VAL].push_back(-5075.684780220629);
    6445           6 :   parameter_mix_D[VAL].push_back(-1070.7083380665008);
    6446           6 :   parameter_mix_D[VAL].push_back(7455.654515006894);
    6447           6 :   parameter_mix_D[VAL].push_back(-4701.19187164774);
    6448           6 :   parameter_mix_D[VAL].push_back(863.4906179388547);
    6449             : 
    6450           6 :   parameter_mix_D[ALA].push_back(1187.65300011922);
    6451           6 :   parameter_mix_D[ALA].push_back(-1.7011187932116822);
    6452           6 :   parameter_mix_D[ALA].push_back(-1521.0113615359212);
    6453           6 :   parameter_mix_D[ALA].push_back(-187.93745840575576);
    6454           6 :   parameter_mix_D[ALA].push_back(1514.6745873304449);
    6455           6 :   parameter_mix_D[ALA].push_back(-775.3890045113897);
    6456           6 :   parameter_mix_D[ALA].push_back(96.41428177656567);
    6457             : 
    6458           6 :   parameter_mix_D[GLY].push_back(581.6349001192067);
    6459           6 :   parameter_mix_D[GLY].push_back(-0.5877833598361395);
    6460           6 :   parameter_mix_D[GLY].push_back(-640.0421286186524);
    6461           6 :   parameter_mix_D[GLY].push_back(-64.58515074152534);
    6462           6 :   parameter_mix_D[GLY].push_back(551.9509853583185);
    6463           6 :   parameter_mix_D[GLY].push_back(-264.1522021146006);
    6464           6 :   parameter_mix_D[GLY].push_back(28.36986478439301);
    6465             : 
    6466           6 :   parameter_mix_D[HIS].push_back(3648.812220119277);
    6467           6 :   parameter_mix_D[HIS].push_back(-22.703075403555548);
    6468           6 :   parameter_mix_D[HIS].push_back(-8260.235189881098);
    6469           6 :   parameter_mix_D[HIS].push_back(-3190.3176569039265);
    6470           6 :   parameter_mix_D[HIS].push_back(21589.074332364213);
    6471           6 :   parameter_mix_D[HIS].push_back(-18108.640157613925);
    6472           6 :   parameter_mix_D[HIS].push_back(4801.237639634437);
    6473             : 
    6474           6 :   parameter_vac_D[TRP].push_back(270.43802511921314);
    6475           6 :   parameter_vac_D[TRP].push_back(-2.196022464340772);
    6476           6 :   parameter_vac_D[TRP].push_back(-780.9546710244318);
    6477           6 :   parameter_vac_D[TRP].push_back(-371.1573508312626);
    6478           6 :   parameter_vac_D[TRP].push_back(2668.7678731652445);
    6479           6 :   parameter_vac_D[TRP].push_back(-2478.2920954223678);
    6480           6 :   parameter_vac_D[TRP].push_back(722.3731624901676);
    6481             : 
    6482           6 :   parameter_vac_D[TYR].push_back(198.471744119211);
    6483           6 :   parameter_vac_D[TYR].push_back(-1.236792846228289);
    6484           6 :   parameter_vac_D[TYR].push_back(-508.0448711054671);
    6485           6 :   parameter_vac_D[TYR].push_back(-210.55908129481216);
    6486           6 :   parameter_vac_D[TYR].push_back(1558.3884734212413);
    6487           6 :   parameter_vac_D[TYR].push_back(-1418.36319255665);
    6488           6 :   parameter_vac_D[TYR].push_back(407.21567613893296);
    6489             : 
    6490           6 :   parameter_vac_D[PHE].push_back(182.46606411921402);
    6491           6 :   parameter_vac_D[PHE].push_back(-1.2708008333861447);
    6492           6 :   parameter_vac_D[PHE].push_back(-424.50905926426054);
    6493           6 :   parameter_vac_D[PHE].push_back(-177.97207825696387);
    6494           6 :   parameter_vac_D[PHE].push_back(1180.839971941918);
    6495           6 :   parameter_vac_D[PHE].push_back(-1004.004765231886);
    6496           6 :   parameter_vac_D[PHE].push_back(269.34384064610344);
    6497             : 
    6498           6 :   parameter_vac_D[HIP].push_back(161.95107611920753);
    6499           6 :   parameter_vac_D[HIP].push_back(-0.9661246983835707);
    6500           6 :   parameter_vac_D[HIP].push_back(-332.04673226423995);
    6501           6 :   parameter_vac_D[HIP].push_back(-125.41755194926544);
    6502           6 :   parameter_vac_D[HIP].push_back(808.705672166199);
    6503           6 :   parameter_vac_D[HIP].push_back(-648.8340711218191);
    6504           6 :   parameter_vac_D[HIP].push_back(163.71251277400307);
    6505             : 
    6506           6 :   parameter_vac_D[ARG].push_back(289.0340011192071);
    6507           6 :   parameter_vac_D[ARG].push_back(-1.4195753436279361);
    6508           6 :   parameter_vac_D[ARG].push_back(-836.3864005546434);
    6509           6 :   parameter_vac_D[ARG].push_back(-346.7081039129904);
    6510           6 :   parameter_vac_D[ARG].push_back(2922.003491580559);
    6511           6 :   parameter_vac_D[ARG].push_back(-2864.816533173085);
    6512           6 :   parameter_vac_D[ARG].push_back(877.9525045072293);
    6513             : 
    6514           6 :   parameter_vac_D[LYS].push_back(228.64464111920753);
    6515           6 :   parameter_vac_D[LYS].push_back(-1.686580749083617);
    6516           6 :   parameter_vac_D[LYS].push_back(-544.8870548339771);
    6517           6 :   parameter_vac_D[LYS].push_back(-252.11087773186324);
    6518           6 :   parameter_vac_D[LYS].push_back(1693.784850493428);
    6519           6 :   parameter_vac_D[LYS].push_back(-1514.2375008160348);
    6520           6 :   parameter_vac_D[LYS].push_back(427.0713155512121);
    6521             : 
    6522           6 :   parameter_vac_D[CYS].push_back(50.836900116324315);
    6523           6 :   parameter_vac_D[CYS].push_back(-0.040204572899665315);
    6524           6 :   parameter_vac_D[CYS].push_back(-55.592868149339424);
    6525           6 :   parameter_vac_D[CYS].push_back(-4.341359624977117);
    6526           6 :   parameter_vac_D[CYS].push_back(41.55290573185214);
    6527           6 :   parameter_vac_D[CYS].push_back(-17.248208429078456);
    6528           6 :   parameter_vac_D[CYS].push_back(1.0736187172140528);
    6529             : 
    6530           6 :   parameter_vac_D[CYX].push_back(41.770369115535);
    6531           6 :   parameter_vac_D[CYX].push_back(-0.019277246931);
    6532           6 :   parameter_vac_D[CYX].push_back(-40.006821199463);
    6533           6 :   parameter_vac_D[CYX].push_back(-2.056736901533);
    6534           6 :   parameter_vac_D[CYX].push_back(23.707430747544);
    6535           6 :   parameter_vac_D[CYX].push_back(-8.010813092204);
    6536           6 :   parameter_vac_D[CYX].push_back(-0.023482540763);
    6537             : 
    6538           6 :   parameter_vac_D[ASP].push_back(64.12806411920792);
    6539           6 :   parameter_vac_D[ASP].push_back(-0.08245818875074411);
    6540           6 :   parameter_vac_D[ASP].push_back(-78.95500211069523);
    6541           6 :   parameter_vac_D[ASP].push_back(-9.030157332821238);
    6542           6 :   parameter_vac_D[ASP].push_back(74.72033164806712);
    6543           6 :   parameter_vac_D[ASP].push_back(-36.71042192737952);
    6544           6 :   parameter_vac_D[ASP].push_back(4.0989206257493676);
    6545             : 
    6546           6 :   parameter_vac_D[GLU].push_back(100.14004911920799);
    6547           6 :   parameter_vac_D[GLU].push_back(-0.28685123265362006);
    6548           6 :   parameter_vac_D[GLU].push_back(-152.44619103423773);
    6549           6 :   parameter_vac_D[GLU].push_back(-32.99432901288321);
    6550           6 :   parameter_vac_D[GLU].push_back(225.5853175183811);
    6551           6 :   parameter_vac_D[GLU].push_back(-144.8489352831419);
    6552           6 :   parameter_vac_D[GLU].push_back(27.49692658880534);
    6553             : 
    6554           6 :   parameter_vac_D[ILE].push_back(165.04540911921134);
    6555           6 :   parameter_vac_D[ILE].push_back(-0.5061553029227089);
    6556           6 :   parameter_vac_D[ILE].push_back(-275.1890586090823);
    6557           6 :   parameter_vac_D[ILE].push_back(-57.288063177375356);
    6558           6 :   parameter_vac_D[ILE].push_back(398.9780357099449);
    6559           6 :   parameter_vac_D[ILE].push_back(-245.42678814428692);
    6560           6 :   parameter_vac_D[ILE].push_back(42.72941025472001);
    6561             : 
    6562           6 :   parameter_vac_D[LEU].push_back(165.04540911921134);
    6563           6 :   parameter_vac_D[LEU].push_back(-0.580034983510499);
    6564           6 :   parameter_vac_D[LEU].push_back(-281.30910057877514);
    6565           6 :   parameter_vac_D[LEU].push_back(-66.19427345166183);
    6566           6 :   parameter_vac_D[LEU].push_back(445.19214155995115);
    6567           6 :   parameter_vac_D[LEU].push_back(-287.0653610399624);
    6568           6 :   parameter_vac_D[LEU].push_back(53.86626261066706);
    6569             : 
    6570           6 :   parameter_vac_D[MET].push_back(123.83238411920684);
    6571           6 :   parameter_vac_D[MET].push_back(-0.7698672022751385);
    6572           6 :   parameter_vac_D[MET].push_back(-251.2481622173618);
    6573           6 :   parameter_vac_D[MET].push_back(-100.67742019193848);
    6574           6 :   parameter_vac_D[MET].push_back(641.1563254731632);
    6575           6 :   parameter_vac_D[MET].push_back(-524.8742634212379);
    6576           6 :   parameter_vac_D[MET].push_back(135.36487813767542);
    6577             : 
    6578           6 :   parameter_vac_D[ASN].push_back(94.12880411921148);
    6579           6 :   parameter_vac_D[ASN].push_back(-0.22986194121078912);
    6580           6 :   parameter_vac_D[ASN].push_back(-138.78769705028003);
    6581           6 :   parameter_vac_D[ASN].push_back(-25.896846049402594);
    6582           6 :   parameter_vac_D[ASN].push_back(184.55609781654326);
    6583           6 :   parameter_vac_D[ASN].push_back(-110.14043851975404);
    6584           6 :   parameter_vac_D[ASN].push_back(18.388834098004153);
    6585             : 
    6586           6 :   parameter_vac_D[PRO].push_back(90.51619611920745);
    6587           6 :   parameter_vac_D[PRO].push_back(-0.0977238494110807);
    6588           6 :   parameter_vac_D[PRO].push_back(-109.43531311067846);
    6589           6 :   parameter_vac_D[PRO].push_back(-10.592981104983805);
    6590           6 :   parameter_vac_D[PRO].push_back(93.64863466237733);
    6591           6 :   parameter_vac_D[PRO].push_back(-42.348197720920865);
    6592           6 :   parameter_vac_D[PRO].push_back(3.5854078482704574);
    6593             : 
    6594           6 :   parameter_vac_D[GLN].push_back(136.91340111920806);
    6595           6 :   parameter_vac_D[GLN].push_back(-0.7259026842220699);
    6596           6 :   parameter_vac_D[GLN].push_back(-257.0347011897067);
    6597           6 :   parameter_vac_D[GLN].push_back(-89.99600255417684);
    6598           6 :   parameter_vac_D[GLN].push_back(570.3890595917421);
    6599           6 :   parameter_vac_D[GLN].push_back(-438.8977029769549);
    6600           6 :   parameter_vac_D[GLN].push_back(105.48846039376491);
    6601             : 
    6602           6 :   parameter_vac_D[SER].push_back(55.20490011583253);
    6603           6 :   parameter_vac_D[SER].push_back(-0.038078030710377984);
    6604           6 :   parameter_vac_D[SER].push_back(-58.79085960838952);
    6605           6 :   parameter_vac_D[SER].push_back(-4.067364063406562);
    6606           6 :   parameter_vac_D[SER].push_back(41.319899403658475);
    6607           6 :   parameter_vac_D[SER].push_back(-15.865682241288962);
    6608           6 :   parameter_vac_D[SER].push_back(0.5028409006168431);
    6609             : 
    6610           6 :   parameter_vac_D[THR].push_back(88.90604111920842);
    6611           6 :   parameter_vac_D[THR].push_back(-0.11566717587697625);
    6612           6 :   parameter_vac_D[THR].push_back(-114.4541243837681);
    6613           6 :   parameter_vac_D[THR].push_back(-12.541537413808342);
    6614           6 :   parameter_vac_D[THR].push_back(106.4974738790947);
    6615           6 :   parameter_vac_D[THR].push_back(-50.15009912825225);
    6616           6 :   parameter_vac_D[THR].push_back(4.719349514074467);
    6617             : 
    6618           6 :   parameter_vac_D[VAL].push_back(117.67910411920792);
    6619           6 :   parameter_vac_D[VAL].push_back(-0.18187311248567883);
    6620           6 :   parameter_vac_D[VAL].push_back(-162.8697844894754);
    6621           6 :   parameter_vac_D[VAL].push_back(-19.769248288711825);
    6622           6 :   parameter_vac_D[VAL].push_back(162.59270939168965);
    6623           6 :   parameter_vac_D[VAL].push_back(-79.37261506441627);
    6624           6 :   parameter_vac_D[VAL].push_back(8.230771959393175);
    6625             : 
    6626           6 :   parameter_vac_D[ALA].push_back(46.92250011448002);
    6627           6 :   parameter_vac_D[ALA].push_back(-0.020339064649444412);
    6628           6 :   parameter_vac_D[ALA].push_back(-44.41584945233503);
    6629           6 :   parameter_vac_D[ALA].push_back(-2.1483754537886113);
    6630           6 :   parameter_vac_D[ALA].push_back(25.713667829058785);
    6631           6 :   parameter_vac_D[ALA].push_back(-8.222782061575268);
    6632           6 :   parameter_vac_D[ALA].push_back(-0.2521732728817875);
    6633             : 
    6634           6 :   parameter_vac_D[GLY].push_back(23.532201119209795);
    6635           6 :   parameter_vac_D[GLY].push_back(-0.00628609590047614);
    6636           6 :   parameter_vac_D[GLY].push_back(-17.28421910139733);
    6637           6 :   parameter_vac_D[GLY].push_back(-0.6641226821159686);
    6638           6 :   parameter_vac_D[GLY].push_back(8.536119110048007);
    6639           6 :   parameter_vac_D[GLY].push_back(-2.5438638688361466);
    6640           6 :   parameter_vac_D[GLY].push_back(-0.11165675928832643);
    6641             : 
    6642           6 :   parameter_vac_D[HIS].push_back(145.41948111920982);
    6643           6 :   parameter_vac_D[HIS].push_back(-0.8548328183368781);
    6644           6 :   parameter_vac_D[HIS].push_back(-290.8653238004162);
    6645           6 :   parameter_vac_D[HIS].push_back(-107.85375269366395);
    6646           6 :   parameter_vac_D[HIS].push_back(685.7025818759361);
    6647           6 :   parameter_vac_D[HIS].push_back(-538.2592043545858);
    6648           6 :   parameter_vac_D[HIS].push_back(132.17357375729733);
    6649             : 
    6650             :   // NUCLEIC ACIDS
    6651           6 :   parameter_mix_D[BB_PO3].push_back(223.2671801192072);
    6652           6 :   parameter_mix_D[BB_PO3].push_back(-0.14452515213607267);
    6653           6 :   parameter_mix_D[BB_PO3].push_back(-219.64134852678032);
    6654           6 :   parameter_mix_D[BB_PO3].push_back(-15.527993497328728);
    6655           6 :   parameter_mix_D[BB_PO3].push_back(153.27197635784856);
    6656           6 :   parameter_mix_D[BB_PO3].push_back(-61.17793915482464);
    6657           6 :   parameter_mix_D[BB_PO3].push_back(2.92608540200577);
    6658             : 
    6659           6 :   parameter_mix_D[BB_PO2].push_back(80.12660011920252);
    6660           6 :   parameter_mix_D[BB_PO2].push_back(-0.02788855519820236);
    6661           6 :   parameter_mix_D[BB_PO2].push_back(-60.53219491822279);
    6662           6 :   parameter_mix_D[BB_PO2].push_back(-2.9768829034096806);
    6663           6 :   parameter_mix_D[BB_PO2].push_back(33.30645116638123);
    6664           6 :   parameter_mix_D[BB_PO2].push_back(-11.601573219761375);
    6665           6 :   parameter_mix_D[BB_PO2].push_back(0.12551046492022438);
    6666             : 
    6667           6 :   parameter_mix_D[BB_DNA].push_back(2835.3195201193003);
    6668           6 :   parameter_mix_D[BB_DNA].push_back(-7.954301723608173);
    6669           6 :   parameter_mix_D[BB_DNA].push_back(-4509.325563460958);
    6670           6 :   parameter_mix_D[BB_DNA].push_back(-909.1870692311344);
    6671           6 :   parameter_mix_D[BB_DNA].push_back(6375.156903893768);
    6672           6 :   parameter_mix_D[BB_DNA].push_back(-3956.4787847570715);
    6673           6 :   parameter_mix_D[BB_DNA].push_back(708.9872879613656);
    6674             : 
    6675           6 :   parameter_mix_D[BB_DNA_5].push_back(3136.73358011921);
    6676           6 :   parameter_mix_D[BB_DNA_5].push_back(-10.023435855160427);
    6677           6 :   parameter_mix_D[BB_DNA_5].push_back(-5208.921666368173);
    6678           6 :   parameter_mix_D[BB_DNA_5].push_back(-1160.4403539440214);
    6679           6 :   parameter_mix_D[BB_DNA_5].push_back(7962.598421448727);
    6680           6 :   parameter_mix_D[BB_DNA_5].push_back(-5149.059857691847);
    6681           6 :   parameter_mix_D[BB_DNA_5].push_back(984.5217027570121);
    6682             : 
    6683           6 :   parameter_mix_D[BB_DNA_3].push_back(3136.73358011921);
    6684           6 :   parameter_mix_D[BB_DNA_3].push_back(-9.618834865806274);
    6685           6 :   parameter_mix_D[BB_DNA_3].push_back(-5164.249220443828);
    6686           6 :   parameter_mix_D[BB_DNA_3].push_back(-1103.2721475326382);
    6687           6 :   parameter_mix_D[BB_DNA_3].push_back(7633.46089052312);
    6688           6 :   parameter_mix_D[BB_DNA_3].push_back(-4826.171688395644);
    6689           6 :   parameter_mix_D[BB_DNA_3].push_back(888.1820863683546);
    6690             : 
    6691           6 :   parameter_mix_D[BB_RNA].push_back(3192.5955601188807);
    6692           6 :   parameter_mix_D[BB_RNA].push_back(-11.475781582628308);
    6693           6 :   parameter_mix_D[BB_RNA].push_back(-5486.264576931735);
    6694           6 :   parameter_mix_D[BB_RNA].push_back(-1344.2878288415961);
    6695           6 :   parameter_mix_D[BB_RNA].push_back(9035.26109892441);
    6696           6 :   parameter_mix_D[BB_RNA].push_back(-6068.471909763036);
    6697           6 :   parameter_mix_D[BB_RNA].push_back(1226.3696076463866);
    6698             : 
    6699           6 :   parameter_mix_D[BB_RNA_5].push_back(3512.1630401192215);
    6700           6 :   parameter_mix_D[BB_RNA_5].push_back(-14.191020069433975);
    6701           6 :   parameter_mix_D[BB_RNA_5].push_back(-6293.687102187508);
    6702           6 :   parameter_mix_D[BB_RNA_5].push_back(-1689.3688494490984);
    6703           6 :   parameter_mix_D[BB_RNA_5].push_back(11193.448566821942);
    6704           6 :   parameter_mix_D[BB_RNA_5].push_back(-7806.9064399949375);
    6705           6 :   parameter_mix_D[BB_RNA_5].push_back(1662.4594983069844);
    6706             : 
    6707           6 :   parameter_mix_D[BB_RNA_3].push_back(3512.1630401192215);
    6708           6 :   parameter_mix_D[BB_RNA_3].push_back(-12.978118135595812);
    6709           6 :   parameter_mix_D[BB_RNA_3].push_back(-6149.290195451877);
    6710           6 :   parameter_mix_D[BB_RNA_3].push_back(-1515.8309761505627);
    6711           6 :   parameter_mix_D[BB_RNA_3].push_back(10176.605450440278);
    6712           6 :   parameter_mix_D[BB_RNA_3].push_back(-6813.250569884159);
    6713           6 :   parameter_mix_D[BB_RNA_3].push_back(1366.823518955858);
    6714             : 
    6715           6 :   parameter_mix_D[BASE_A].push_back(2464.736500119229);
    6716           6 :   parameter_mix_D[BASE_A].push_back(-12.127452038444783);
    6717           6 :   parameter_mix_D[BASE_A].push_back(-4710.661256689607);
    6718           6 :   parameter_mix_D[BASE_A].push_back(-1462.6964141954452);
    6719           6 :   parameter_mix_D[BASE_A].push_back(9451.725575888277);
    6720           6 :   parameter_mix_D[BASE_A].push_back(-6883.018479948857);
    6721           6 :   parameter_mix_D[BASE_A].push_back(1540.1526599737797);
    6722             : 
    6723           6 :   parameter_mix_D[BASE_C].push_back(1797.2697601191685);
    6724           6 :   parameter_mix_D[BASE_C].push_back(-5.963855532295215);
    6725           6 :   parameter_mix_D[BASE_C].push_back(-2955.077717756034);
    6726           6 :   parameter_mix_D[BASE_C].push_back(-689.4543508746372);
    6727           6 :   parameter_mix_D[BASE_C].push_back(4665.914740532565);
    6728           6 :   parameter_mix_D[BASE_C].push_back(-3051.4605913706982);
    6729           6 :   parameter_mix_D[BASE_C].push_back(590.2201952719585);
    6730             : 
    6731           6 :   parameter_mix_D[BASE_G].push_back(2804.271480119049);
    6732           6 :   parameter_mix_D[BASE_G].push_back(-16.928072935469974);
    6733           6 :   parameter_mix_D[BASE_G].push_back(-5989.82519987899);
    6734           6 :   parameter_mix_D[BASE_G].push_back(-2275.490326521775);
    6735           6 :   parameter_mix_D[BASE_G].push_back(15007.832401865428);
    6736           6 :   parameter_mix_D[BASE_G].push_back(-12287.520690325606);
    6737           6 :   parameter_mix_D[BASE_G].push_back(3172.98306575258);
    6738             : 
    6739           6 :   parameter_mix_D[BASE_T].push_back(2545.0860001192113);
    6740           6 :   parameter_mix_D[BASE_T].push_back(-10.975141620541738);
    6741           6 :   parameter_mix_D[BASE_T].push_back(-4636.058358764447);
    6742           6 :   parameter_mix_D[BASE_T].push_back(-1340.3746388296138);
    6743           6 :   parameter_mix_D[BASE_T].push_back(8850.604320505428);
    6744           6 :   parameter_mix_D[BASE_T].push_back(-6421.852532013674);
    6745           6 :   parameter_mix_D[BASE_T].push_back(1443.371517335904);
    6746             : 
    6747           6 :   parameter_mix_D[BASE_U].push_back(1608.7389001192062);
    6748           6 :   parameter_mix_D[BASE_U].push_back(-3.9816849036181434);
    6749           6 :   parameter_mix_D[BASE_U].push_back(-2411.056432130769);
    6750           6 :   parameter_mix_D[BASE_U].push_back(-451.8236361945487);
    6751           6 :   parameter_mix_D[BASE_U].push_back(3220.4418252803644);
    6752           6 :   parameter_mix_D[BASE_U].push_back(-1944.2515577994325);
    6753           6 :   parameter_mix_D[BASE_U].push_back(332.9259542628691);
    6754             : 
    6755           6 :   parameter_vac_D[BB_PO3].push_back(8.508889119209273);
    6756           6 :   parameter_vac_D[BB_PO3].push_back(-0.0010408625482164885);
    6757           6 :   parameter_vac_D[BB_PO3].push_back(-5.656130990440752);
    6758           6 :   parameter_vac_D[BB_PO3].push_back(-0.10748040057053611);
    6759           6 :   parameter_vac_D[BB_PO3].push_back(2.1441246977168227);
    6760           6 :   parameter_vac_D[BB_PO3].push_back(-0.3967083127147655);
    6761           6 :   parameter_vac_D[BB_PO3].push_back(-0.10110003105909898);
    6762             : 
    6763           6 :   parameter_vac_D[BB_PO2].push_back(2.7889001116093284);
    6764           6 :   parameter_vac_D[BB_PO2].push_back(-0.00011178884266113128);
    6765           6 :   parameter_vac_D[BB_PO2].push_back(-1.1702605818380654);
    6766           6 :   parameter_vac_D[BB_PO2].push_back(-0.011278044036819927);
    6767           6 :   parameter_vac_D[BB_PO2].push_back(0.3214006584089024);
    6768           6 :   parameter_vac_D[BB_PO2].push_back(-0.04097165983591666);
    6769           6 :   parameter_vac_D[BB_PO2].push_back(-0.017525098100539684);
    6770             : 
    6771           6 :   parameter_vac_D[BB_DNA].push_back(94.75075611920529);
    6772           6 :   parameter_vac_D[BB_DNA].push_back(-0.13973533952241124);
    6773           6 :   parameter_vac_D[BB_DNA].push_back(-123.45402430039046);
    6774           6 :   parameter_vac_D[BB_DNA].push_back(-15.19494522082691);
    6775           6 :   parameter_vac_D[BB_DNA].push_back(123.34749914811465);
    6776           6 :   parameter_vac_D[BB_DNA].push_back(-61.038507985345504);
    6777           6 :   parameter_vac_D[BB_DNA].push_back(6.601587478585944);
    6778             : 
    6779           6 :   parameter_vac_D[BB_DNA_5].push_back(108.18080111920679);
    6780           6 :   parameter_vac_D[BB_DNA_5].push_back(-0.2055953690887981);
    6781           6 :   parameter_vac_D[BB_DNA_5].push_back(-150.7924892157235);
    6782           6 :   parameter_vac_D[BB_DNA_5].push_back(-22.700459516383198);
    6783           6 :   parameter_vac_D[BB_DNA_5].push_back(172.2599851655527);
    6784           6 :   parameter_vac_D[BB_DNA_5].push_back(-93.4983124807692);
    6785           6 :   parameter_vac_D[BB_DNA_5].push_back(12.867661230942868);
    6786             : 
    6787           6 :   parameter_vac_D[BB_DNA_3].push_back(108.18080111920537);
    6788           6 :   parameter_vac_D[BB_DNA_3].push_back(-0.18263717534168372);
    6789           6 :   parameter_vac_D[BB_DNA_3].push_back(-148.5918817744255);
    6790           6 :   parameter_vac_D[BB_DNA_3].push_back(-19.90799847398835);
    6791           6 :   parameter_vac_D[BB_DNA_3].push_back(157.55184203379557);
    6792           6 :   parameter_vac_D[BB_DNA_3].push_back(-80.28471270058103);
    6793           6 :   parameter_vac_D[BB_DNA_3].push_back(9.313712500298278);
    6794             : 
    6795           6 :   parameter_vac_D[BB_RNA].push_back(106.37859611922117);
    6796           6 :   parameter_vac_D[BB_RNA].push_back(-0.2380766148121975);
    6797           6 :   parameter_vac_D[BB_RNA].push_back(-153.74131338570024);
    6798           6 :   parameter_vac_D[BB_RNA].push_back(-26.415436217574932);
    6799           6 :   parameter_vac_D[BB_RNA].push_back(191.90585451112776);
    6800           6 :   parameter_vac_D[BB_RNA].push_back(-109.61737794316868);
    6801           6 :   parameter_vac_D[BB_RNA].push_back(16.663804191332204);
    6802             : 
    6803           6 :   parameter_vac_D[BB_RNA_5].push_back(120.58236111920618);
    6804           6 :   parameter_vac_D[BB_RNA_5].push_back(-0.340258533619014);
    6805           6 :   parameter_vac_D[BB_RNA_5].push_back(-186.08333929996334);
    6806           6 :   parameter_vac_D[BB_RNA_5].push_back(-38.493337147644795);
    6807           6 :   parameter_vac_D[BB_RNA_5].push_back(266.2262415641144);
    6808           6 :   parameter_vac_D[BB_RNA_5].push_back(-164.73088478359585);
    6809           6 :   parameter_vac_D[BB_RNA_5].push_back(29.07014157680879);
    6810             : 
    6811           6 :   parameter_vac_D[BB_RNA_3].push_back(120.5823611192099);
    6812           6 :   parameter_vac_D[BB_RNA_3].push_back(-0.274146129206928);
    6813           6 :   parameter_vac_D[BB_RNA_3].push_back(-179.24499182395388);
    6814           6 :   parameter_vac_D[BB_RNA_3].push_back(-30.315729372259426);
    6815           6 :   parameter_vac_D[BB_RNA_3].push_back(222.2645581367648);
    6816           6 :   parameter_vac_D[BB_RNA_3].push_back(-125.13581171514033);
    6817           6 :   parameter_vac_D[BB_RNA_3].push_back(18.350308154920107);
    6818             : 
    6819           6 :   parameter_vac_D[BASE_A].push_back(114.34024911921);
    6820           6 :   parameter_vac_D[BASE_A].push_back(-0.4136665918383359);
    6821           6 :   parameter_vac_D[BASE_A].push_back(-192.33138384655922);
    6822           6 :   parameter_vac_D[BASE_A].push_back(-46.74428306691412);
    6823           6 :   parameter_vac_D[BASE_A].push_back(312.9511030981905);
    6824           6 :   parameter_vac_D[BASE_A].push_back(-199.6349962647333);
    6825           6 :   parameter_vac_D[BASE_A].push_back(36.15938693202153);
    6826             : 
    6827           6 :   parameter_vac_D[BASE_C].push_back(76.17798411921166);
    6828           6 :   parameter_vac_D[BASE_C].push_back(-0.1444475142707445);
    6829           6 :   parameter_vac_D[BASE_C].push_back(-102.66873668949485);
    6830           6 :   parameter_vac_D[BASE_C].push_back(-15.813768367725821);
    6831           6 :   parameter_vac_D[BASE_C].push_back(119.63436338715553);
    6832           6 :   parameter_vac_D[BASE_C].push_back(-64.22251971660583);
    6833           6 :   parameter_vac_D[BASE_C].push_back(8.351952332828862);
    6834             : 
    6835           6 :   parameter_vac_D[BASE_G].push_back(127.08052911921965);
    6836           6 :   parameter_vac_D[BASE_G].push_back(-0.7137457014712297);
    6837           6 :   parameter_vac_D[BASE_G].push_back(-239.67686838772786);
    6838           6 :   parameter_vac_D[BASE_G].push_back(-88.53661981200943);
    6839           6 :   parameter_vac_D[BASE_G].push_back(556.7254485453866);
    6840           6 :   parameter_vac_D[BASE_G].push_back(-432.0234649577737);
    6841           6 :   parameter_vac_D[BASE_G].push_back(104.407200463848);
    6842             : 
    6843           6 :   parameter_vac_D[BASE_T].push_back(94.09000011920868);
    6844           6 :   parameter_vac_D[BASE_T].push_back(-0.27147149980458524);
    6845           6 :   parameter_vac_D[BASE_T].push_back(-143.65649702254174);
    6846           6 :   parameter_vac_D[BASE_T].push_back(-30.861235738371892);
    6847           6 :   parameter_vac_D[BASE_T].push_back(212.3643014774958);
    6848           6 :   parameter_vac_D[BASE_T].push_back(-133.06675501066275);
    6849           6 :   parameter_vac_D[BASE_T].push_back(23.951588200687073);
    6850             : 
    6851           6 :   parameter_vac_D[BASE_U].push_back(59.30540111665979);
    6852           6 :   parameter_vac_D[BASE_U].push_back(-0.06146929846591808);
    6853           6 :   parameter_vac_D[BASE_U].push_back(-67.43680950211682);
    6854           6 :   parameter_vac_D[BASE_U].push_back(-6.625289749170134);
    6855           6 :   parameter_vac_D[BASE_U].push_back(58.37012229348065);
    6856           6 :   parameter_vac_D[BASE_U].push_back(-26.23044613101723);
    6857           6 :   parameter_vac_D[BASE_U].push_back(2.061238351422343);
    6858             : 
    6859       21340 :   for(unsigned i=0; i<atoms.size(); ++i) {
    6860       21334 :     std::string Aname = pdb.getAtomName(atoms[i]);
    6861       21334 :     std::string Rname = pdb.getResidueName(atoms[i]);
    6862       21334 :     Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
    6863       21334 :     if(Rname=="ALA") {
    6864        1078 :       atoi[residue_atom[i]]=ALA;
    6865       20256 :     } else if(Rname=="ARG") {
    6866        1296 :       atoi[residue_atom[i]]=ARG;
    6867       18960 :     } else if(Rname=="ASN") {
    6868        1080 :       atoi[residue_atom[i]]=ASN;
    6869       17880 :     } else if(Rname=="ASP") {
    6870         936 :       atoi[residue_atom[i]]=ASP;
    6871       16944 :     } else if(Rname=="CYS") {
    6872          72 :       atoi[residue_atom[i]]=CYS;
    6873       16872 :     } else if(Rname=="CYX") {
    6874           0 :       atoi[residue_atom[i]]=CYX;
    6875       16872 :     } else if(Rname=="GLN") {
    6876        1558 :       atoi[residue_atom[i]]=GLN;
    6877       15314 :     } else if(Rname=="GLU") {
    6878         714 :       atoi[residue_atom[i]]=GLU;
    6879       14600 :     } else if(Rname=="GLY") {
    6880         936 :       atoi[residue_atom[i]]=GLY;
    6881       13664 :     } else if(Rname=="HIS") {
    6882           0 :       atoi[residue_atom[i]]=HIS;
    6883       13664 :     } else if(Rname=="HID") {
    6884           0 :       atoi[residue_atom[i]]=HIS;
    6885       13664 :     } else if(Rname=="HIE") {
    6886         216 :       atoi[residue_atom[i]]=HIS;
    6887       13448 :     } else if(Rname=="HIP") {
    6888           0 :       atoi[residue_atom[i]]=HIP;
    6889             :       // CHARMM NAMING FOR PROTONATION STATES OF HISTIDINE
    6890       13448 :     } else if(Rname=="HSD") {
    6891           0 :       atoi[residue_atom[i]]=HIS;
    6892       13448 :     } else if(Rname=="HSE") {
    6893           0 :       atoi[residue_atom[i]]=HIS;
    6894       13448 :     } else if(Rname=="HSP") {
    6895           0 :       atoi[residue_atom[i]]=HIP;
    6896       13448 :     } else if(Rname=="ILE") {
    6897        1296 :       atoi[residue_atom[i]]=ILE;
    6898       12152 :     } else if(Rname=="LEU") {
    6899        2280 :       atoi[residue_atom[i]]=LEU;
    6900        9872 :     } else if(Rname=="LYS") {
    6901        1560 :       atoi[residue_atom[i]]=LYS;
    6902        8312 :     } else if(Rname=="MET") {
    6903         836 :       atoi[residue_atom[i]]=MET;
    6904        7476 :     } else if(Rname=="PHE") {
    6905        1512 :       atoi[residue_atom[i]]=PHE;
    6906        5964 :     } else if(Rname=="PRO") {
    6907        1122 :       atoi[residue_atom[i]]=PRO;
    6908        4842 :     } else if(Rname=="SER") {
    6909         768 :       atoi[residue_atom[i]]=SER;
    6910        4074 :     } else if(Rname=="THR") {
    6911         728 :       atoi[residue_atom[i]]=THR;
    6912        3346 :     } else if(Rname=="TRP") {
    6913           0 :       atoi[residue_atom[i]]=TRP;
    6914        3346 :     } else if(Rname=="TYR") {
    6915         792 :       atoi[residue_atom[i]]=TYR;
    6916        2554 :     } else if(Rname=="VAL") {
    6917        1600 :       atoi[residue_atom[i]]=VAL;
    6918             :     }
    6919             :     // NUCLEIC ACIDS
    6920             :     // nucleobases are not automatically populated as an additional check on the health of the PDB.
    6921             :     // RNA - G
    6922         954 :     else if(Rname=="G") {
    6923           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    6924           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    6925           0 :         atoi [residue_atom[i]]=BB_PO2;
    6926           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6927           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6928           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6929           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6930           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6931           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6932           0 :         atoi[residue_atom[i]]=BB_RNA;
    6933           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6934           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6935           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6936           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6937           0 :         atoi[residue_atom[i]]=BASE_G;
    6938             :       } else {
    6939           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6940             :       }
    6941             :       // RNA - G3
    6942         954 :     } else if(Rname=="G3") {
    6943           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6944           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6945           0 :         atoi [residue_atom[i]]=BB_PO2;
    6946           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    6947           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    6948           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    6949           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    6950           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    6951           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    6952           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    6953           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6954           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6955           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6956           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6957           0 :         atoi[residue_atom[i]]=BASE_G;
    6958             :       } else {
    6959           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6960             :       }
    6961             :       // RNA - G5
    6962         954 :     } else if(Rname=="G5") {
    6963           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6964           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6965           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6966           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    6967           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    6968           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    6969           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    6970           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6971           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6972           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6973           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6974           0 :         atoi[residue_atom[i]]=BASE_G;
    6975             :       } else {
    6976           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6977             :       }
    6978             :       // RNA - GT
    6979         954 :     } else if(Rname=="GT") {
    6980           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    6981           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    6982           0 :         atoi [residue_atom[i]]=BB_PO3;
    6983           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6984           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6985           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6986           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6987           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6988           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6989           0 :         atoi[residue_atom[i]]=BB_RNA;
    6990           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6991           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6992           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6993           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6994           0 :         atoi[residue_atom[i]]=BASE_G;
    6995             :       } else {
    6996           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6997             :       }
    6998             :       // RNA - U
    6999         954 :     } else if(Rname=="U") {
    7000        2886 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    7001        1482 :           Aname=="O1P" || Aname=="O2P"  ) {
    7002          78 :         atoi [residue_atom[i]]=BB_PO2;
    7003        2548 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7004        2132 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    7005        1716 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    7006        1326 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    7007        1196 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    7008        1560 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    7009         416 :         atoi[residue_atom[i]]=BB_RNA;
    7010         884 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    7011         468 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    7012         364 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    7013         286 :         atoi[residue_atom[i]]=BASE_U;
    7014             :       } else {
    7015           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7016             :       }
    7017             :       // RNA - U3
    7018         174 :     } else if(Rname=="U3") {
    7019         230 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    7020         174 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    7021           6 :         atoi [residue_atom[i]]=BB_PO2;
    7022         204 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    7023         172 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    7024         140 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    7025         110 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    7026          94 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    7027          78 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    7028          34 :         atoi[residue_atom[i]]=BB_RNA_3;
    7029          68 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    7030          36 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    7031          28 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    7032          22 :         atoi[residue_atom[i]]=BASE_U;
    7033             :       } else {
    7034           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7035             :       }
    7036             :       // RNA - U5
    7037         112 :     } else if(Rname=="U5") {
    7038         408 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7039         344 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    7040         280 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    7041         216 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    7042         176 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    7043         156 :           Aname=="H2'1" || Aname=="H5T" ) {
    7044          68 :         atoi[residue_atom[i]]=BB_RNA_5;
    7045         136 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    7046          72 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    7047          56 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    7048          44 :         atoi[residue_atom[i]]=BASE_U;
    7049             :       } else {
    7050           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7051             :       }
    7052             :       // RNA - UT
    7053           0 :     } else if(Rname=="UT") {
    7054           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    7055           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    7056           0 :         atoi [residue_atom[i]]=BB_PO3;
    7057           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7058           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    7059           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    7060           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    7061           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    7062           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    7063           0 :         atoi[residue_atom[i]]=BB_RNA;
    7064           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    7065           0 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    7066           0 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    7067           0 :         atoi[residue_atom[i]]=BASE_U;
    7068             :       } else {
    7069           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7070             :       }
    7071             :       // RNA - A
    7072           0 :     } else if(Rname=="A") {
    7073           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    7074           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    7075           0 :         atoi [residue_atom[i]]=BB_PO2;
    7076           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7077           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    7078           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    7079           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    7080           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    7081           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    7082           0 :         atoi[residue_atom[i]]=BB_RNA;
    7083           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    7084           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    7085           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    7086           0 :                 Aname=="H61" || Aname=="H62" ) {
    7087           0 :         atoi[residue_atom[i]]=BASE_A;
    7088             :       } else {
    7089           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7090             :       }
    7091             :       // RNA - A3
    7092           0 :     } else if(Rname=="A3") {
    7093           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    7094           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    7095           0 :         atoi [residue_atom[i]]=BB_PO2;
    7096           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    7097           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    7098           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    7099           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    7100           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    7101           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    7102           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    7103           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    7104           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    7105           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    7106           0 :                 Aname=="H61" || Aname=="H62" ) {
    7107           0 :         atoi[residue_atom[i]]=BASE_A;
    7108             :       } else {
    7109           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7110             :       }
    7111             :       // RNA - A5
    7112           0 :     } else if(Rname=="A5") {
    7113           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7114           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    7115           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    7116           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    7117           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    7118           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    7119           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    7120           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    7121           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    7122           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    7123           0 :                 Aname=="H61" || Aname=="H62" ) {
    7124           0 :         atoi[residue_atom[i]]=BASE_A;
    7125             :       } else {
    7126           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7127             :       }
    7128             :       // RNA - AT
    7129           0 :     } else if(Rname=="AT") {
    7130           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    7131           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    7132           0 :         atoi [residue_atom[i]]=BB_PO3;
    7133           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7134           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    7135           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    7136           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    7137           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    7138           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    7139           0 :         atoi[residue_atom[i]]=BB_RNA;
    7140           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    7141           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    7142           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    7143           0 :                 Aname=="H61" || Aname=="H62" ) {
    7144           0 :         atoi[residue_atom[i]]=BASE_A;
    7145             :       } else {
    7146           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7147             :       }
    7148             :       // RNA - C
    7149           0 :     } else if(Rname=="C") {
    7150           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    7151           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    7152           0 :         atoi [residue_atom[i]]=BB_PO2;
    7153           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7154           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    7155           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    7156           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    7157           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    7158           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    7159           0 :         atoi[residue_atom[i]]=BB_RNA;
    7160           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    7161           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    7162           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    7163           0 :         atoi[residue_atom[i]]=BASE_C;
    7164             :       } else {
    7165           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7166             :       }
    7167             :       // RNA - C3
    7168           0 :     } else if(Rname=="C3") {
    7169           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    7170           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    7171           0 :         atoi [residue_atom[i]]=BB_PO2;
    7172           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    7173           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    7174           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    7175           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    7176           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    7177           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    7178           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    7179           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    7180           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    7181           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    7182           0 :         atoi[residue_atom[i]]=BASE_C;
    7183             :       } else {
    7184           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7185             :       }
    7186             :       // RNA - C5
    7187           0 :     } else if(Rname=="C5") {
    7188           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7189           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    7190           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    7191           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    7192           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    7193           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    7194           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    7195           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    7196           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    7197           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    7198           0 :         atoi[residue_atom[i]]=BASE_C;
    7199             :       } else {
    7200           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7201             :       }
    7202             :       // RNA - CT
    7203           0 :     } else if(Rname=="CT") {
    7204           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    7205           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    7206           0 :         atoi [residue_atom[i]]=BB_PO3;
    7207           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7208           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    7209           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    7210           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    7211           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    7212           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    7213           0 :         atoi[residue_atom[i]]=BB_RNA;
    7214           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    7215           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    7216           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    7217           0 :         atoi[residue_atom[i]]=BASE_C;
    7218             :       } else {
    7219           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7220             :       }
    7221             :       // DNA - G
    7222           0 :     } else if(Rname=="DG") {
    7223           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    7224           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    7225           0 :         atoi [residue_atom[i]]=BB_PO2;
    7226           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7227           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7228           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7229           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7230           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    7231           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    7232           0 :         atoi[residue_atom[i]]=BB_DNA;
    7233           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    7234           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    7235           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    7236           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    7237           0 :         atoi[residue_atom[i]]=BASE_G;
    7238             :       } else {
    7239           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7240             :       }
    7241             :       // DNA - G3
    7242           0 :     } else if(Rname=="DG3") {
    7243           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    7244           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    7245           0 :         atoi [residue_atom[i]]=BB_PO2;
    7246           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7247           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7248           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7249           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    7250           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    7251             :                 Aname=="H3T" ) {
    7252           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    7253           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    7254           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    7255           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    7256           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    7257           0 :         atoi[residue_atom[i]]=BASE_G;
    7258             :       } else {
    7259           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7260             :       }
    7261             :       // DNA - G5
    7262           0 :     } else if(Rname=="DG5") {
    7263           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7264           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    7265           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7266           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7267           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    7268             :           Aname=="H5T" ) {
    7269           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    7270           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    7271           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    7272           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    7273           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    7274           0 :         atoi[residue_atom[i]]=BASE_G;
    7275             :       } else {
    7276           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7277             :       }
    7278             :       // DNA - GT
    7279           0 :     } else if(Rname=="DGT") {
    7280           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    7281           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    7282           0 :         atoi [residue_atom[i]]=BB_PO3;
    7283           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7284           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7285           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7286           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7287           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    7288           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    7289           0 :         atoi[residue_atom[i]]=BB_DNA;
    7290           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    7291           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    7292           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    7293           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    7294           0 :         atoi[residue_atom[i]]=BASE_G;
    7295             :       } else {
    7296           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7297             :       }
    7298             :       // DNA - T
    7299           0 :     } else if(Rname=="DT") {
    7300           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    7301           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    7302           0 :         atoi [residue_atom[i]]=BB_PO2;
    7303           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7304           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7305           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7306           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7307           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    7308           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    7309           0 :         atoi[residue_atom[i]]=BB_DNA;
    7310           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    7311           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    7312           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    7313           0 :                 Aname=="H72" || Aname=="H73" ) {
    7314           0 :         atoi[residue_atom[i]]=BASE_T;
    7315             :       } else {
    7316           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7317             :       }
    7318             :       // DNA - T3
    7319           0 :     } else if(Rname=="DT3") {
    7320           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    7321           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    7322           0 :         atoi [residue_atom[i]]=BB_PO2;
    7323           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7324           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7325           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7326           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    7327           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    7328             :                 Aname=="H3T" ) {
    7329           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    7330           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    7331           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    7332           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    7333           0 :                 Aname=="H72" || Aname=="H73" ) {
    7334           0 :         atoi[residue_atom[i]]=BASE_T;
    7335             :       } else {
    7336           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7337             :       }
    7338             :       // DNA - T5
    7339           0 :     } else if(Rname=="DT5") {
    7340           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7341           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    7342           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7343           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7344           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    7345             :           Aname=="H5T" ) {
    7346           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    7347           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    7348           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    7349           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    7350           0 :                 Aname=="H72" || Aname=="H73" ) {
    7351           0 :         atoi[residue_atom[i]]=BASE_T;
    7352             :       } else {
    7353           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7354             :       }
    7355             :       // DNA - TT
    7356           0 :     } else if(Rname=="DTT") {
    7357           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    7358           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    7359           0 :         atoi [residue_atom[i]]=BB_PO3;
    7360           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7361           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7362           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7363           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7364           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    7365           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    7366           0 :         atoi[residue_atom[i]]=BB_DNA;
    7367           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    7368           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    7369           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    7370           0 :                 Aname=="H72" || Aname=="H73" ) {
    7371           0 :         atoi[residue_atom[i]]=BASE_T;
    7372             :       } else {
    7373           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7374             :       }
    7375             :       // DNA - A
    7376           0 :     } else if(Rname=="DA") {
    7377           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    7378           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    7379           0 :         atoi [residue_atom[i]]=BB_PO2;
    7380           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7381           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7382           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7383           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7384           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    7385           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    7386           0 :         atoi[residue_atom[i]]=BB_DNA;
    7387           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    7388           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    7389           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    7390           0 :                 Aname=="H61" || Aname=="H62" ) {
    7391           0 :         atoi[residue_atom[i]]=BASE_A;
    7392             :       } else {
    7393           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7394             :       }
    7395             :       // DNA - A3
    7396           0 :     } else if(Rname=="DA3") {
    7397           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    7398           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    7399           0 :         atoi [residue_atom[i]]=BB_PO2;
    7400           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7401           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7402           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7403           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    7404           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    7405             :                 Aname=="H3T" ) {
    7406           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    7407           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    7408           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    7409           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    7410           0 :                 Aname=="H61" || Aname=="H62" ) {
    7411           0 :         atoi[residue_atom[i]]=BASE_A;
    7412             :       } else {
    7413           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7414             :       }
    7415             :       // DNA - A5
    7416           0 :     } else if(Rname=="DA5") {
    7417           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7418           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    7419           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7420           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7421           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    7422             :           Aname=="H5T" ) {
    7423           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    7424           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    7425           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    7426           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    7427           0 :                 Aname=="H61" || Aname=="H62" ) {
    7428           0 :         atoi[residue_atom[i]]=BASE_A;
    7429             :       } else {
    7430           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7431             :       }
    7432             :       // DNA - AT
    7433           0 :     } else if(Rname=="DAT") {
    7434           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    7435           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    7436           0 :         atoi [residue_atom[i]]=BB_PO3;
    7437           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7438           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7439           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7440           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7441           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    7442           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    7443           0 :         atoi[residue_atom[i]]=BB_DNA;
    7444           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    7445           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    7446           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    7447           0 :                 Aname=="H61" || Aname=="H62" ) {
    7448           0 :         atoi[residue_atom[i]]=BASE_A;
    7449             :       } else {
    7450           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7451             :       }
    7452             :       // DNA - C
    7453           0 :     } else if(Rname=="DC") {
    7454           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="HP" ||
    7455           0 :           Aname=="O1P" || Aname=="O2P"  ) {
    7456           0 :         atoi [residue_atom[i]]=BB_PO2;
    7457           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7458           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7459           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7460           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7461           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    7462           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    7463           0 :         atoi[residue_atom[i]]=BB_DNA;
    7464           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    7465           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    7466           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    7467           0 :         atoi[residue_atom[i]]=BASE_C;
    7468             :       } else {
    7469           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7470             :       }
    7471             :       // DNA - C3
    7472           0 :     } else if(Rname=="DC3") {
    7473           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    7474           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    7475           0 :         atoi [residue_atom[i]]=BB_PO2;
    7476           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7477           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7478           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7479           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    7480           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    7481             :                 Aname=="H3T" ) {
    7482           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    7483           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    7484           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    7485           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    7486           0 :         atoi[residue_atom[i]]=BASE_C;
    7487             :       } else {
    7488           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7489             :       }
    7490             :       // DNA - C5
    7491           0 :     } else if(Rname=="DC5") {
    7492           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7493           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    7494           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7495           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7496           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    7497             :           Aname=="H5T" ) {
    7498           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    7499           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    7500           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    7501           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    7502           0 :         atoi[residue_atom[i]]=BASE_C;
    7503             :       } else {
    7504           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7505             :       }
    7506             :       // DNA - CT
    7507           0 :     } else if(Rname=="DCT") {
    7508           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3"  ||
    7509           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" || Aname=="HOP3" ) {
    7510           0 :         atoi [residue_atom[i]]=BB_PO3;
    7511           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    7512           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    7513           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    7514           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    7515           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    7516           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    7517           0 :         atoi[residue_atom[i]]=BB_DNA;
    7518           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    7519           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    7520           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    7521           0 :         atoi[residue_atom[i]]=BASE_C;
    7522             :       } else {
    7523           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    7524             :       }
    7525             :     } else {
    7526           0 :       error("Residue not known: "+Rname);
    7527             :     }
    7528             :   }
    7529           6 : }
    7530             : 
    7531           8 : double SAXS::calculateAFF(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double rho) {
    7532             :   std::map<std::string, unsigned> AA_map;
    7533           8 :   AA_map["H"] = H;
    7534           8 :   AA_map["C"] = C;
    7535           8 :   AA_map["N"] = N;
    7536           8 :   AA_map["O"] = O;
    7537           8 :   AA_map["P"] = P;
    7538           8 :   AA_map["S"] = S;
    7539             : 
    7540             :   std::vector<std::vector<double> > param_a;
    7541             :   std::vector<std::vector<double> > param_b;
    7542             :   std::vector<double> param_c;
    7543             :   std::vector<double> param_v;
    7544             : 
    7545           8 :   param_a.resize(NTT, std::vector<double>(5));
    7546           8 :   param_b.resize(NTT, std::vector<double>(5));
    7547           8 :   param_c.resize(NTT);
    7548           8 :   param_v.resize(NTT);
    7549             : 
    7550           8 :   param_a[H][0] = 0.493002;
    7551           8 :   param_b[H][0] = 10.5109;
    7552           8 :   param_c[H] = 0.003038;
    7553           8 :   param_a[H][1] = 0.322912;
    7554           8 :   param_b[H][1] = 26.1257;
    7555           8 :   param_v[H] = 5.15;
    7556           8 :   param_a[H][2] = 0.140191;
    7557           8 :   param_b[H][2] = 3.14236;
    7558           8 :   param_a[H][3] = 0.040810;
    7559           8 :   param_b[H][3] = 57.7997;
    7560           8 :   param_a[H][4] = 0.0;
    7561           8 :   param_b[H][4] = 1.0;
    7562             : 
    7563           8 :   param_a[C][0] = 2.31000;
    7564           8 :   param_b[C][0] = 20.8439;
    7565           8 :   param_c[C] = 0.215600;
    7566           8 :   param_a[C][1] = 1.02000;
    7567           8 :   param_b[C][1] = 10.2075;
    7568           8 :   param_v[C] = 16.44;
    7569           8 :   param_a[C][2] = 1.58860;
    7570           8 :   param_b[C][2] = 0.56870;
    7571           8 :   param_a[C][3] = 0.86500;
    7572           8 :   param_b[C][3] = 51.6512;
    7573           8 :   param_a[C][4] = 0.0;
    7574           8 :   param_b[C][4] = 1.0;
    7575             : 
    7576           8 :   param_a[N][0] = 12.2126;
    7577           8 :   param_b[N][0] = 0.00570;
    7578           8 :   param_c[N] = -11.529;
    7579           8 :   param_a[N][1] = 3.13220;
    7580           8 :   param_b[N][1] = 9.89330;
    7581           8 :   param_v[N] = 2.49;
    7582           8 :   param_a[N][2] = 2.01250;
    7583           8 :   param_b[N][2] = 28.9975;
    7584           8 :   param_a[N][3] = 1.16630;
    7585           8 :   param_b[N][3] = 0.58260;
    7586           8 :   param_a[N][4] = 0.0;
    7587           8 :   param_b[N][4] = 1.0;
    7588             : 
    7589           8 :   param_a[O][0] = 3.04850;
    7590           8 :   param_b[O][0] = 13.2771;
    7591           8 :   param_c[O] = 0.250800 ;
    7592           8 :   param_a[O][1] = 2.28680;
    7593           8 :   param_b[O][1] = 5.70110;
    7594           8 :   param_v[O] = 9.13;
    7595           8 :   param_a[O][2] = 1.54630;
    7596           8 :   param_b[O][2] = 0.32390;
    7597           8 :   param_a[O][3] = 0.86700;
    7598           8 :   param_b[O][3] = 32.9089;
    7599           8 :   param_a[O][4] = 0.0;
    7600           8 :   param_b[O][4] = 1.0;
    7601             : 
    7602           8 :   param_a[P][0] = 6.43450;
    7603           8 :   param_b[P][0] = 1.90670;
    7604           8 :   param_c[P] = 1.11490;
    7605           8 :   param_a[P][1] = 4.17910;
    7606           8 :   param_b[P][1] = 27.1570;
    7607           8 :   param_v[P] = 5.73;
    7608           8 :   param_a[P][2] = 1.78000;
    7609           8 :   param_b[P][2] = 0.52600;
    7610           8 :   param_a[P][3] = 1.49080;
    7611           8 :   param_b[P][3] = 68.1645;
    7612           8 :   param_a[P][4] = 0.0;
    7613           8 :   param_b[P][4] = 1.0;
    7614             : 
    7615           8 :   param_a[S][0] = 6.90530;
    7616           8 :   param_b[S][0] = 1.46790;
    7617           8 :   param_c[S] = 0.866900;
    7618           8 :   param_a[S][1] = 5.20340;
    7619           8 :   param_b[S][1] = 22.2151;
    7620           8 :   param_v[S] = 19.86;
    7621           8 :   param_a[S][2] = 1.43790;
    7622           8 :   param_b[S][2] = 0.25360;
    7623           8 :   param_a[S][3] = 1.58630;
    7624           8 :   param_b[S][3] = 56.1720;
    7625           8 :   param_a[S][4] = 0.0;
    7626           8 :   param_b[S][4] = 1.0;
    7627             : 
    7628           8 :   auto* moldat=plumed.getActionSet().selectLatest<GenericMolInfo*>(this);
    7629             : 
    7630             :   double Iq0=0.;
    7631           8 :   if( moldat ) {
    7632             :     // cycle over the atom types
    7633          56 :     for(unsigned i=0; i<NTT; ++i) {
    7634          48 :       const double volr = std::pow(param_v[i], (2.0/3.0)) /(4. * M_PI);
    7635             :       // cycle over q
    7636         480 :       for(unsigned k=0; k<q_list.size(); ++k) {
    7637         432 :         const double q = q_list[k];
    7638         432 :         const double s = q / (4. * M_PI);
    7639         432 :         FF_tmp[k][i] = param_c[i];
    7640             :         // SUM [a_i * EXP( - b_i * (q/4pi)^2 )] Waasmaier and Kirfel (1995)
    7641        2160 :         for(unsigned j=0; j<4; ++j) {
    7642        1728 :           FF_tmp[k][i] += param_a[i][j]*std::exp(-param_b[i][j]*s*s);
    7643             :         }
    7644             :         // subtract solvation: rho * v_i * EXP( (- v_i^(2/3) / (4pi)) * q^2  ) // since  D in Fraser 1978 is 2*s
    7645         432 :         FF_tmp[k][i] -= rho*param_v[i]*std::exp(-volr*q*q);
    7646             :       }
    7647             :     }
    7648             :     // cycle over the atoms to assign the atom type and calculate I0
    7649       28382 :     for(unsigned i=0; i<atoms.size(); ++i) {
    7650             :       // get atom name
    7651       28374 :       std::string name = moldat->getAtomName(atoms[i]);
    7652             :       char type;
    7653             :       // get atom type
    7654       28374 :       char first = name.at(0);
    7655             :       // GOLDEN RULE: type is first letter, if not a number
    7656       28374 :       if (!isdigit(first)) {
    7657             :         type = first;
    7658             :         // otherwise is the second
    7659             :       } else {
    7660           0 :         type = name.at(1);
    7661             :       }
    7662       28374 :       std::string type_s = std::string(1,type);
    7663       28374 :       if(AA_map.find(type_s) != AA_map.end()) {
    7664       28374 :         const unsigned index=AA_map[type_s];
    7665       28374 :         atoi[i] = AA_map[type_s];
    7666      141870 :         for(unsigned j=0; j<4; ++j) {
    7667      113496 :           Iq0 += param_a[index][j];
    7668             :         }
    7669       28374 :         Iq0 = Iq0 -rho*param_v[index] + param_c[index];
    7670             :       } else {
    7671           0 :         error("Wrong atom type "+type_s+" from atom name "+name+"\n");
    7672             :       }
    7673             :     }
    7674             :   } else {
    7675           0 :     error("MOLINFO DATA not found\n");
    7676             :   }
    7677           8 :   if(absolute) {
    7678             :     Iq0 = 1;
    7679             :   }
    7680             : 
    7681           8 :   return Iq0;
    7682           8 : }
    7683             : 
    7684           4 : double SAXS::calculateAFFsans(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double deuter_conc) {
    7685             :   std::map<std::string, unsigned> AA_map;
    7686           4 :   AA_map["H"] = H;
    7687           4 :   AA_map["C"] = C;
    7688           4 :   AA_map["N"] = N;
    7689           4 :   AA_map["O"] = O;
    7690           4 :   AA_map["P"] = P;
    7691           4 :   AA_map["S"] = S;
    7692             : 
    7693             :   std::vector<double> param_b;
    7694             :   std::vector<double> param_v;
    7695             : 
    7696           4 :   param_b.resize(NTT);
    7697           4 :   param_v.resize(NTT);
    7698             : 
    7699           4 :   param_b[H] = -0.374;
    7700           4 :   param_v[H] = 5.15;
    7701             :   // param_b[D] = 0.667;
    7702           4 :   param_b[C] =  0.665;
    7703           4 :   param_v[C] = 16.44;
    7704           4 :   param_b[N] =  0.94;
    7705           4 :   param_v[N] = 2.49;
    7706           4 :   param_b[O] =  0.580;
    7707           4 :   param_v[O] = 9.13;
    7708           4 :   param_b[P] =  0.51;
    7709           4 :   param_v[P] = 5.73;
    7710           4 :   param_b[S] =  0.28;
    7711           4 :   param_v[S] = 19.86;
    7712             : 
    7713           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)
    7714             : 
    7715           4 :   auto* moldat=plumed.getActionSet().selectLatest<GenericMolInfo*>(this);
    7716             : 
    7717             :   double Iq0=0.;
    7718           4 :   if( moldat ) {
    7719             :     // cycle over the atom types
    7720          28 :     for(unsigned i=0; i<NTT; ++i) {
    7721          24 :       double volr = std::pow(param_v[i], (2.0/3.0)) /(4. * M_PI);
    7722             :       // cycle over q
    7723         240 :       for(unsigned k=0; k<q_list.size(); ++k) {
    7724         216 :         const double q = q_list[k];
    7725         216 :         FF_tmp[k][i] = param_b[i];
    7726             :         // subtract solvation: rho * v_i * EXP( (- v_i^(2/3) / (4pi)) * q^2  ) // since  D in Fraser 1978 is 2*s
    7727         216 :         FF_tmp[k][i] -= solv_sc_length*rho*param_v[i]*std::exp(-volr*q*q);
    7728             :       }
    7729             :     }
    7730             :     // cycle over the atoms to assign the atom type and calculate I0
    7731       13922 :     for(unsigned i=0; i<atoms.size(); ++i) {
    7732             :       // get atom name
    7733       13918 :       std::string name = moldat->getAtomName(atoms[i]);
    7734             :       char type;
    7735             :       // get atom type
    7736       13918 :       char first = name.at(0);
    7737             :       // GOLDEN RULE: type is first letter, if not a number
    7738       13918 :       if (!isdigit(first)) {
    7739             :         type = first;
    7740             :         // otherwise is the second
    7741             :       } else {
    7742           0 :         type = name.at(1);
    7743             :       }
    7744       13918 :       std::string type_s = std::string(1,type);
    7745       13918 :       if(AA_map.find(type_s) != AA_map.end()) {
    7746       13918 :         const unsigned index=AA_map[type_s];
    7747       13918 :         atoi[i] = AA_map[type_s];
    7748       13918 :         Iq0 += param_b[index]-solv_sc_length*rho*param_v[index];
    7749             :       } else {
    7750           0 :         error("Wrong atom type "+type_s+" from atom name "+name+"\n");
    7751             :       }
    7752             :     }
    7753             :   } else {
    7754           0 :     error("MOLINFO DATA not found\n");
    7755             :   }
    7756           4 :   if(absolute) {
    7757             :     Iq0 = 1;
    7758             :   }
    7759             : 
    7760           4 :   return Iq0;
    7761             : }
    7762             : 
    7763          16 : std::map<std::string, std::vector<double> > SAXS::setupLCPOparam() {
    7764             :   std::map<std::string, std::vector<double> > lcpomap;
    7765             : 
    7766             :   // We arbitrarily set OC1/OT1 as the charged oxygen.
    7767             : 
    7768          16 :   lcpomap["ALA_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7769          16 :   lcpomap["ALA_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7770          16 :   lcpomap["ALA_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7771          16 :   lcpomap["ALA_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7772          16 :   lcpomap["ALA_CB"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7773          16 :   lcpomap["ALA_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7774          16 :   lcpomap["ALA_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7775          16 :   lcpomap["ALA_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7776          16 :   lcpomap["ALA_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7777          16 :   lcpomap["ALA_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7778             : 
    7779          16 :   lcpomap["ASP_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7780          16 :   lcpomap["ASP_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7781          16 :   lcpomap["ASP_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7782          16 :   lcpomap["ASP_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7783          16 :   lcpomap["ASP_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7784          16 :   lcpomap["ASP_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7785          16 :   lcpomap["ASP_OD1"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7786          16 :   lcpomap["ASP_OD2"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7787          16 :   lcpomap["ASP_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7788          16 :   lcpomap["ASP_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7789          16 :   lcpomap["ASP_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7790          16 :   lcpomap["ASP_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7791          16 :   lcpomap["ASP_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7792             : 
    7793          16 :   lcpomap["ASN_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7794          16 :   lcpomap["ASN_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7795          16 :   lcpomap["ASN_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7796          16 :   lcpomap["ASN_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7797          16 :   lcpomap["ASN_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7798          16 :   lcpomap["ASN_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7799          16 :   lcpomap["ASN_OD1"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7800          16 :   lcpomap["ASN_ND2"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    7801          16 :   lcpomap["ASN_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7802          16 :   lcpomap["ASN_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7803          16 :   lcpomap["ASN_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7804          16 :   lcpomap["ASN_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7805          16 :   lcpomap["ASN_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7806             : 
    7807          16 :   lcpomap["ARG_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7808          16 :   lcpomap["ARG_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7809          16 :   lcpomap["ARG_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7810          16 :   lcpomap["ARG_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7811          16 :   lcpomap["ARG_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7812          16 :   lcpomap["ARG_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7813          16 :   lcpomap["ARG_CD"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7814          16 :   lcpomap["ARG_NE"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7815          16 :   lcpomap["ARG_NH1"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    7816          16 :   lcpomap["ARG_NH2"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    7817          16 :   lcpomap["ARG_CZ"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7818          16 :   lcpomap["ARG_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7819          16 :   lcpomap["ARG_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7820          16 :   lcpomap["ARG_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7821          16 :   lcpomap["ARG_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7822          16 :   lcpomap["ARG_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7823             : 
    7824          16 :   lcpomap["CYS_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7825          16 :   lcpomap["CYS_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7826          16 :   lcpomap["CYS_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7827          16 :   lcpomap["CYS_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7828          16 :   lcpomap["CYS_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7829          16 :   lcpomap["CYS_SG"] = { 1.9,  0.54581,  -0.19477,  -0.0012873,  0.00029247};
    7830          16 :   lcpomap["CYS_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7831          16 :   lcpomap["CYS_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7832          16 :   lcpomap["CYS_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7833          16 :   lcpomap["CYS_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7834          16 :   lcpomap["CYS_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7835             : 
    7836          16 :   lcpomap["CYX_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7837          16 :   lcpomap["CYX_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7838          16 :   lcpomap["CYX_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7839          16 :   lcpomap["CYX_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7840          16 :   lcpomap["CYX_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7841          16 :   lcpomap["CYX_SG"] = { 1.9,  0.54581,  -0.19477,  -0.0012873,  0.00029247};
    7842          16 :   lcpomap["CYX_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7843          16 :   lcpomap["CYX_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7844          16 :   lcpomap["CYX_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7845          16 :   lcpomap["CYX_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7846          16 :   lcpomap["CYX_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7847             : 
    7848          16 :   lcpomap["GLU_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7849          16 :   lcpomap["GLU_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7850          16 :   lcpomap["GLU_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7851          16 :   lcpomap["GLU_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7852          16 :   lcpomap["GLU_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7853          16 :   lcpomap["GLU_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7854          16 :   lcpomap["GLU_CD"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7855          16 :   lcpomap["GLU_OE1"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7856          16 :   lcpomap["GLU_OE2"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7857          16 :   lcpomap["GLU_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7858          16 :   lcpomap["GLU_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7859          16 :   lcpomap["GLU_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7860          16 :   lcpomap["GLU_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7861          16 :   lcpomap["GLU_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7862             : 
    7863          16 :   lcpomap["GLN_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7864          16 :   lcpomap["GLN_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7865          16 :   lcpomap["GLN_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7866          16 :   lcpomap["GLN_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7867          16 :   lcpomap["GLN_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7868          16 :   lcpomap["GLN_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7869          16 :   lcpomap["GLN_CD"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7870          16 :   lcpomap["GLN_OE1"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7871          16 :   lcpomap["GLN_NE2"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    7872          16 :   lcpomap["GLN_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7873          16 :   lcpomap["GLN_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7874          16 :   lcpomap["GLN_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7875          16 :   lcpomap["GLN_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7876          16 :   lcpomap["GLN_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7877             : 
    7878          16 :   lcpomap["GLY_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7879          16 :   lcpomap["GLY_CA"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7880          16 :   lcpomap["GLY_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7881          16 :   lcpomap["GLY_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7882          16 :   lcpomap["GLY_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7883          16 :   lcpomap["GLY_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7884          16 :   lcpomap["GLY_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7885          16 :   lcpomap["GLY_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7886          16 :   lcpomap["GLY_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7887             : 
    7888          16 :   lcpomap["HIS_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7889          16 :   lcpomap["HIS_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7890          16 :   lcpomap["HIS_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7891          16 :   lcpomap["HIS_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7892          16 :   lcpomap["HIS_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7893          16 :   lcpomap["HIS_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7894          16 :   lcpomap["HIS_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7895          16 :   lcpomap["HIS_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7896          16 :   lcpomap["HIS_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7897          16 :   lcpomap["HIS_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7898          16 :   lcpomap["HIS_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7899          16 :   lcpomap["HIS_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7900          16 :   lcpomap["HIS_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7901             : 
    7902          16 :   lcpomap["HIE_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7903          16 :   lcpomap["HIE_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7904          16 :   lcpomap["HIE_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7905          16 :   lcpomap["HIE_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7906          16 :   lcpomap["HIE_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7907          16 :   lcpomap["HIE_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7908          16 :   lcpomap["HIE_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7909          16 :   lcpomap["HIE_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7910          16 :   lcpomap["HIE_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7911          16 :   lcpomap["HIE_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7912          16 :   lcpomap["HIE_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7913          16 :   lcpomap["HIE_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7914          16 :   lcpomap["HIE_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7915             : 
    7916          16 :   lcpomap["HSE_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7917          16 :   lcpomap["HSE_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7918          16 :   lcpomap["HSE_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7919          16 :   lcpomap["HSE_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7920          16 :   lcpomap["HSE_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7921          16 :   lcpomap["HSE_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7922          16 :   lcpomap["HSE_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7923          16 :   lcpomap["HSE_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7924          16 :   lcpomap["HSE_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7925          16 :   lcpomap["HSE_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7926          16 :   lcpomap["HSE_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7927          16 :   lcpomap["HSE_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7928          16 :   lcpomap["HSE_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7929             : 
    7930          16 :   lcpomap["HID_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7931          16 :   lcpomap["HID_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7932          16 :   lcpomap["HID_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7933          16 :   lcpomap["HID_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7934          16 :   lcpomap["HID_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7935          16 :   lcpomap["HID_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7936          16 :   lcpomap["HID_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7937          16 :   lcpomap["HID_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7938          16 :   lcpomap["HID_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7939          16 :   lcpomap["HID_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7940          16 :   lcpomap["HID_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7941          16 :   lcpomap["HID_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7942          16 :   lcpomap["HID_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7943             : 
    7944          16 :   lcpomap["HSD_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7945          16 :   lcpomap["HSD_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7946          16 :   lcpomap["HSD_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7947          16 :   lcpomap["HSD_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7948          16 :   lcpomap["HSD_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7949          16 :   lcpomap["HSD_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7950          16 :   lcpomap["HSD_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7951          16 :   lcpomap["HSD_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7952          16 :   lcpomap["HSD_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7953          16 :   lcpomap["HSD_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7954          16 :   lcpomap["HSD_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7955          16 :   lcpomap["HSD_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7956          16 :   lcpomap["HSD_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7957             : 
    7958          16 :   lcpomap["HIP_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7959          16 :   lcpomap["HIP_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7960          16 :   lcpomap["HIP_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7961          16 :   lcpomap["HIP_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7962          16 :   lcpomap["HIP_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7963          16 :   lcpomap["HIP_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7964          16 :   lcpomap["HIP_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7965          16 :   lcpomap["HIP_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7966          16 :   lcpomap["HIP_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7967          16 :   lcpomap["HIP_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7968          16 :   lcpomap["HIP_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7969          16 :   lcpomap["HIP_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7970          16 :   lcpomap["HIP_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7971             : 
    7972          16 :   lcpomap["HSP_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7973          16 :   lcpomap["HSP_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7974          16 :   lcpomap["HSP_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7975          16 :   lcpomap["HSP_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7976          16 :   lcpomap["HSP_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7977          16 :   lcpomap["HSP_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7978          16 :   lcpomap["HSP_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7979          16 :   lcpomap["HSP_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7980          16 :   lcpomap["HSP_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7981          16 :   lcpomap["HSP_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7982          16 :   lcpomap["HSP_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7983          16 :   lcpomap["HSP_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7984          16 :   lcpomap["HSP_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7985             : 
    7986          16 :   lcpomap["ILE_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7987          16 :   lcpomap["ILE_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7988          16 :   lcpomap["ILE_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7989          16 :   lcpomap["ILE_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7990          16 :   lcpomap["ILE_CB"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7991          16 :   lcpomap["ILE_CG2"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7992          16 :   lcpomap["ILE_CG1"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7993          16 :   lcpomap["ILE_CD1"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7994          16 :   lcpomap["ILE_CD"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7995          16 :   lcpomap["ILE_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7996          16 :   lcpomap["ILE_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7997          16 :   lcpomap["ILE_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7998          16 :   lcpomap["ILE_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7999          16 :   lcpomap["ILE_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8000             : 
    8001          16 :   lcpomap["LEU_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    8002          16 :   lcpomap["LEU_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    8003          16 :   lcpomap["LEU_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8004          16 :   lcpomap["LEU_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8005          16 :   lcpomap["LEU_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8006          16 :   lcpomap["LEU_CG"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    8007          16 :   lcpomap["LEU_CD1"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    8008          16 :   lcpomap["LEU_CD2"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    8009          16 :   lcpomap["LEU_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8010          16 :   lcpomap["LEU_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8011          16 :   lcpomap["LEU_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8012          16 :   lcpomap["LEU_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8013          16 :   lcpomap["LEU_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8014             : 
    8015          16 :   lcpomap["LYS_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    8016          16 :   lcpomap["LYS_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    8017          16 :   lcpomap["LYS_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8018          16 :   lcpomap["LYS_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8019          16 :   lcpomap["LYS_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8020          16 :   lcpomap["LYS_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8021          16 :   lcpomap["LYS_CD"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8022          16 :   lcpomap["LYS_CE"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8023          16 :   lcpomap["LYS_NZ"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    8024          16 :   lcpomap["LYS_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8025          16 :   lcpomap["LYS_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8026          16 :   lcpomap["LYS_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8027          16 :   lcpomap["LYS_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8028          16 :   lcpomap["LYS_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8029             : 
    8030          16 :   lcpomap["MET_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    8031          16 :   lcpomap["MET_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    8032          16 :   lcpomap["MET_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8033          16 :   lcpomap["MET_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8034          16 :   lcpomap["MET_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8035          16 :   lcpomap["MET_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8036          16 :   lcpomap["MET_SD"] = { 1.9,  0.54581,  -0.19477,  -0.0012873,  0.00029247};
    8037          16 :   lcpomap["MET_CE"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    8038          16 :   lcpomap["MET_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8039          16 :   lcpomap["MET_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8040          16 :   lcpomap["MET_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8041          16 :   lcpomap["MET_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8042          16 :   lcpomap["MET_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8043             : 
    8044          16 :   lcpomap["PHE_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    8045          16 :   lcpomap["PHE_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    8046          16 :   lcpomap["PHE_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8047          16 :   lcpomap["PHE_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8048          16 :   lcpomap["PHE_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8049          16 :   lcpomap["PHE_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8050          16 :   lcpomap["PHE_CD1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8051          16 :   lcpomap["PHE_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8052          16 :   lcpomap["PHE_CZ"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8053          16 :   lcpomap["PHE_CE2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8054          16 :   lcpomap["PHE_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8055          16 :   lcpomap["PHE_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8056          16 :   lcpomap["PHE_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8057          16 :   lcpomap["PHE_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8058          16 :   lcpomap["PHE_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8059          16 :   lcpomap["PHE_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8060             : 
    8061          16 :   lcpomap["PRO_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    8062          16 :   lcpomap["PRO_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    8063          16 :   lcpomap["PRO_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8064          16 :   lcpomap["PRO_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8065          16 :   lcpomap["PRO_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8066          16 :   lcpomap["PRO_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8067          16 :   lcpomap["PRO_CD"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8068          16 :   lcpomap["PRO_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8069          16 :   lcpomap["PRO_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8070          16 :   lcpomap["PRO_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8071          16 :   lcpomap["PRO_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8072          16 :   lcpomap["PRO_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8073             : 
    8074          16 :   lcpomap["SER_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    8075          16 :   lcpomap["SER_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    8076          16 :   lcpomap["SER_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8077          16 :   lcpomap["SER_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8078          16 :   lcpomap["SER_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8079          16 :   lcpomap["SER_OG"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    8080          16 :   lcpomap["SER_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8081          16 :   lcpomap["SER_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8082          16 :   lcpomap["SER_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8083          16 :   lcpomap["SER_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8084          16 :   lcpomap["SER_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8085             : 
    8086          16 :   lcpomap["THR_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    8087          16 :   lcpomap["THR_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    8088          16 :   lcpomap["THR_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8089          16 :   lcpomap["THR_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8090          16 :   lcpomap["THR_CB"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    8091          16 :   lcpomap["THR_CG2"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    8092          16 :   lcpomap["THR_OG1"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    8093          16 :   lcpomap["THR_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8094          16 :   lcpomap["THR_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8095          16 :   lcpomap["THR_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8096          16 :   lcpomap["THR_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8097          16 :   lcpomap["THR_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8098             : 
    8099          16 :   lcpomap["TRP_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    8100          16 :   lcpomap["TRP_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    8101          16 :   lcpomap["TRP_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8102          16 :   lcpomap["TRP_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8103          16 :   lcpomap["TRP_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8104          16 :   lcpomap["TRP_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8105          16 :   lcpomap["TRP_CD1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8106          16 :   lcpomap["TRP_NE1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    8107          16 :   lcpomap["TRP_CE2"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8108          16 :   lcpomap["TRP_CZ2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8109          16 :   lcpomap["TRP_CH2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8110          16 :   lcpomap["TRP_CZ3"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8111          16 :   lcpomap["TRP_CE3"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8112          16 :   lcpomap["TRP_CD2"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8113          16 :   lcpomap["TRP_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8114          16 :   lcpomap["TRP_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8115          16 :   lcpomap["TRP_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8116          16 :   lcpomap["TRP_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8117          16 :   lcpomap["TRP_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8118             : 
    8119          16 :   lcpomap["TYR_N"] = { 1.65,  0.062577,  -0.017874,  -8.312e-05,  1.9849e-05};
    8120          16 :   lcpomap["TYR_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    8121          16 :   lcpomap["TYR_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8122          16 :   lcpomap["TYR_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8123          16 :   lcpomap["TYR_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    8124          16 :   lcpomap["TYR_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8125          16 :   lcpomap["TYR_CD1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8126          16 :   lcpomap["TYR_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8127          16 :   lcpomap["TYR_CZ"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8128          16 :   lcpomap["TYR_OH"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    8129          16 :   lcpomap["TYR_CE2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8130          16 :   lcpomap["TYR_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    8131          16 :   lcpomap["TYR_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8132          16 :   lcpomap["TYR_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8133          16 :   lcpomap["TYR_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8134          16 :   lcpomap["TYR_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8135          16 :   lcpomap["TYR_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8136             : 
    8137          16 :   lcpomap["VAL_N"] = { 1.65,  0.062577,  -0.017874,  -8.312e-05,  1.9849e-05};
    8138          16 :   lcpomap["VAL_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    8139          16 :   lcpomap["VAL_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    8140          16 :   lcpomap["VAL_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8141          16 :   lcpomap["VAL_CB"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    8142          16 :   lcpomap["VAL_CG1"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    8143          16 :   lcpomap["VAL_CG2"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    8144          16 :   lcpomap["VAL_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8145          16 :   lcpomap["VAL_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8146          16 :   lcpomap["VAL_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8147          16 :   lcpomap["VAL_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    8148          16 :   lcpomap["VAL_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    8149             : 
    8150             :   // nucleic acids - WARNING: ONLY AMBER (OL3-rna/OL15-dna) FORMAT
    8151             : 
    8152          16 :   lcpomap["A3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8153          16 :   lcpomap["A3_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8154          16 :   lcpomap["A3_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8155          16 :   lcpomap["A3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8156          16 :   lcpomap["A3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8157          16 :   lcpomap["A3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8158          16 :   lcpomap["A3_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8159          16 :   lcpomap["A3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8160          16 :   lcpomap["A3_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8161          16 :   lcpomap["A3_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8162          16 :   lcpomap["A3_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8163          16 :   lcpomap["A3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8164          16 :   lcpomap["A3_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8165          16 :   lcpomap["A3_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8166          16 :   lcpomap["A3_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8167          16 :   lcpomap["A3_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8168          16 :   lcpomap["A3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8169          16 :   lcpomap["A3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8170          16 :   lcpomap["A3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8171          16 :   lcpomap["A3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8172          16 :   lcpomap["A3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8173          16 :   lcpomap["A3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8174          16 :   lcpomap["A3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8175          16 :   lcpomap["A3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8176          16 :   lcpomap["A3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8177          16 :   lcpomap["A3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8178             : 
    8179          16 :   lcpomap["A5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8180          16 :   lcpomap["A5_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8181          16 :   lcpomap["A5_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8182          16 :   lcpomap["A5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8183          16 :   lcpomap["A5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8184          16 :   lcpomap["A5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8185          16 :   lcpomap["A5_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8186          16 :   lcpomap["A5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8187          16 :   lcpomap["A5_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8188          16 :   lcpomap["A5_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8189          16 :   lcpomap["A5_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8190          16 :   lcpomap["A5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8191          16 :   lcpomap["A5_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8192          16 :   lcpomap["A5_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8193          16 :   lcpomap["A5_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8194          16 :   lcpomap["A5_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8195          16 :   lcpomap["A5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8196          16 :   lcpomap["A5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8197          16 :   lcpomap["A5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8198          16 :   lcpomap["A5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8199          16 :   lcpomap["A5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8200          16 :   lcpomap["A5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8201          16 :   lcpomap["A5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8202          16 :   lcpomap["A5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8203             : 
    8204          16 :   lcpomap["AT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8205          16 :   lcpomap["AT_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8206          16 :   lcpomap["AT_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8207          16 :   lcpomap["AT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8208          16 :   lcpomap["AT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8209          16 :   lcpomap["AT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8210          16 :   lcpomap["AT_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8211          16 :   lcpomap["AT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8212          16 :   lcpomap["AT_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8213          16 :   lcpomap["AT_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8214          16 :   lcpomap["AT_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8215          16 :   lcpomap["AT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8216          16 :   lcpomap["AT_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8217          16 :   lcpomap["AT_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8218          16 :   lcpomap["AT_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8219          16 :   lcpomap["AT_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8220          16 :   lcpomap["AT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8221          16 :   lcpomap["AT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8222          16 :   lcpomap["AT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8223          16 :   lcpomap["AT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8224          16 :   lcpomap["AT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8225          16 :   lcpomap["AT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8226          16 :   lcpomap["AT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8227          16 :   lcpomap["AT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8228          16 :   lcpomap["AT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8229          16 :   lcpomap["AT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8230             : 
    8231          16 :   lcpomap["A_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8232          16 :   lcpomap["A_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8233          16 :   lcpomap["A_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8234          16 :   lcpomap["A_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8235          16 :   lcpomap["A_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8236          16 :   lcpomap["A_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8237          16 :   lcpomap["A_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8238          16 :   lcpomap["A_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8239          16 :   lcpomap["A_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8240          16 :   lcpomap["A_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8241          16 :   lcpomap["A_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8242          16 :   lcpomap["A_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8243          16 :   lcpomap["A_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8244          16 :   lcpomap["A_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8245          16 :   lcpomap["A_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8246          16 :   lcpomap["A_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8247          16 :   lcpomap["A_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8248          16 :   lcpomap["A_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8249          16 :   lcpomap["A_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8250          16 :   lcpomap["A_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8251          16 :   lcpomap["A_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8252          16 :   lcpomap["A_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8253          16 :   lcpomap["A_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8254          16 :   lcpomap["A_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8255          16 :   lcpomap["A_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8256          16 :   lcpomap["A_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8257             : 
    8258          16 :   lcpomap["C3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8259          16 :   lcpomap["C3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8260          16 :   lcpomap["C3_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8261          16 :   lcpomap["C3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8262          16 :   lcpomap["C3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8263          16 :   lcpomap["C3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8264          16 :   lcpomap["C3_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8265          16 :   lcpomap["C3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8266          16 :   lcpomap["C3_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8267          16 :   lcpomap["C3_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8268          16 :   lcpomap["C3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8269          16 :   lcpomap["C3_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8270          16 :   lcpomap["C3_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8271          16 :   lcpomap["C3_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8272          16 :   lcpomap["C3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8273          16 :   lcpomap["C3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8274          16 :   lcpomap["C3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8275          16 :   lcpomap["C3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8276          16 :   lcpomap["C3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8277          16 :   lcpomap["C3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8278          16 :   lcpomap["C3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8279          16 :   lcpomap["C3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8280          16 :   lcpomap["C3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8281          16 :   lcpomap["C3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8282             : 
    8283          16 :   lcpomap["C5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8284          16 :   lcpomap["C5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8285          16 :   lcpomap["C5_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8286          16 :   lcpomap["C5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8287          16 :   lcpomap["C5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8288          16 :   lcpomap["C5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8289          16 :   lcpomap["C5_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8290          16 :   lcpomap["C5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8291          16 :   lcpomap["C5_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8292          16 :   lcpomap["C5_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8293          16 :   lcpomap["C5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8294          16 :   lcpomap["C5_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8295          16 :   lcpomap["C5_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8296          16 :   lcpomap["C5_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8297          16 :   lcpomap["C5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8298          16 :   lcpomap["C5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8299          16 :   lcpomap["C5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8300          16 :   lcpomap["C5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8301          16 :   lcpomap["C5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8302          16 :   lcpomap["C5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8303          16 :   lcpomap["C5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8304          16 :   lcpomap["C5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8305             : 
    8306          16 :   lcpomap["CT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8307          16 :   lcpomap["CT_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8308          16 :   lcpomap["CT_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8309          16 :   lcpomap["CT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8310          16 :   lcpomap["CT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8311          16 :   lcpomap["CT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8312          16 :   lcpomap["CT_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8313          16 :   lcpomap["CT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8314          16 :   lcpomap["CT_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8315          16 :   lcpomap["CT_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8316          16 :   lcpomap["CT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8317          16 :   lcpomap["CT_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8318          16 :   lcpomap["CT_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8319          16 :   lcpomap["CT_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8320          16 :   lcpomap["CT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8321          16 :   lcpomap["CT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8322          16 :   lcpomap["CT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8323          16 :   lcpomap["CT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8324          16 :   lcpomap["CT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8325          16 :   lcpomap["CT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8326          16 :   lcpomap["CT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8327          16 :   lcpomap["CT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8328          16 :   lcpomap["CT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8329          16 :   lcpomap["CT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8330             : 
    8331          16 :   lcpomap["C_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8332          16 :   lcpomap["C_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8333          16 :   lcpomap["C_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8334          16 :   lcpomap["C_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8335          16 :   lcpomap["C_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8336          16 :   lcpomap["C_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8337          16 :   lcpomap["C_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8338          16 :   lcpomap["C_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8339          16 :   lcpomap["C_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8340          16 :   lcpomap["C_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8341          16 :   lcpomap["C_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8342          16 :   lcpomap["C_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8343          16 :   lcpomap["C_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8344          16 :   lcpomap["C_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8345          16 :   lcpomap["C_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8346          16 :   lcpomap["C_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8347          16 :   lcpomap["C_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8348          16 :   lcpomap["C_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8349          16 :   lcpomap["C_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8350          16 :   lcpomap["C_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8351          16 :   lcpomap["C_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8352          16 :   lcpomap["C_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8353          16 :   lcpomap["C_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8354          16 :   lcpomap["C_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8355             : 
    8356          16 :   lcpomap["DA3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8357          16 :   lcpomap["DA3_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8358          16 :   lcpomap["DA3_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8359          16 :   lcpomap["DA3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8360          16 :   lcpomap["DA3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8361          16 :   lcpomap["DA3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8362          16 :   lcpomap["DA3_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8363          16 :   lcpomap["DA3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8364          16 :   lcpomap["DA3_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8365          16 :   lcpomap["DA3_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8366          16 :   lcpomap["DA3_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8367          16 :   lcpomap["DA3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8368          16 :   lcpomap["DA3_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8369          16 :   lcpomap["DA3_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8370          16 :   lcpomap["DA3_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8371          16 :   lcpomap["DA3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8372          16 :   lcpomap["DA3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8373          16 :   lcpomap["DA3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8374          16 :   lcpomap["DA3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8375          16 :   lcpomap["DA3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8376          16 :   lcpomap["DA3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8377          16 :   lcpomap["DA3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8378          16 :   lcpomap["DA3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8379          16 :   lcpomap["DA3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8380          16 :   lcpomap["DA3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8381             : 
    8382          16 :   lcpomap["DA5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8383          16 :   lcpomap["DA5_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8384          16 :   lcpomap["DA5_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8385          16 :   lcpomap["DA5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8386          16 :   lcpomap["DA5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8387          16 :   lcpomap["DA5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8388          16 :   lcpomap["DA5_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8389          16 :   lcpomap["DA5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8390          16 :   lcpomap["DA5_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8391          16 :   lcpomap["DA5_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8392          16 :   lcpomap["DA5_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8393          16 :   lcpomap["DA5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8394          16 :   lcpomap["DA5_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8395          16 :   lcpomap["DA5_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8396          16 :   lcpomap["DA5_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8397          16 :   lcpomap["DA5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8398          16 :   lcpomap["DA5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8399          16 :   lcpomap["DA5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8400          16 :   lcpomap["DA5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8401          16 :   lcpomap["DA5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8402          16 :   lcpomap["DA5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8403          16 :   lcpomap["DA5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8404          16 :   lcpomap["DA5_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8405             : 
    8406          16 :   lcpomap["DAT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8407          16 :   lcpomap["DAT_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8408          16 :   lcpomap["DAT_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8409          16 :   lcpomap["DAT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8410          16 :   lcpomap["DAT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8411          16 :   lcpomap["DAT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8412          16 :   lcpomap["DAT_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8413          16 :   lcpomap["DAT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8414          16 :   lcpomap["DAT_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8415          16 :   lcpomap["DAT_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8416          16 :   lcpomap["DAT_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8417          16 :   lcpomap["DAT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8418          16 :   lcpomap["DAT_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8419          16 :   lcpomap["DAT_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8420          16 :   lcpomap["DAT_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8421          16 :   lcpomap["DAT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8422          16 :   lcpomap["DAT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8423          16 :   lcpomap["DAT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8424          16 :   lcpomap["DAT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8425          16 :   lcpomap["DAT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8426          16 :   lcpomap["DAT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8427          16 :   lcpomap["DAT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8428          16 :   lcpomap["DAT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8429          16 :   lcpomap["DAT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8430          16 :   lcpomap["DAT_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8431             : 
    8432          16 :   lcpomap["DA_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8433          16 :   lcpomap["DA_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8434          16 :   lcpomap["DA_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8435          16 :   lcpomap["DA_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8436          16 :   lcpomap["DA_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8437          16 :   lcpomap["DA_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8438          16 :   lcpomap["DA_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8439          16 :   lcpomap["DA_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8440          16 :   lcpomap["DA_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8441          16 :   lcpomap["DA_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8442          16 :   lcpomap["DA_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8443          16 :   lcpomap["DA_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8444          16 :   lcpomap["DA_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8445          16 :   lcpomap["DA_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8446          16 :   lcpomap["DA_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8447          16 :   lcpomap["DA_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8448          16 :   lcpomap["DA_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8449          16 :   lcpomap["DA_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8450          16 :   lcpomap["DA_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8451          16 :   lcpomap["DA_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8452          16 :   lcpomap["DA_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8453          16 :   lcpomap["DA_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8454          16 :   lcpomap["DA_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8455          16 :   lcpomap["DA_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8456          16 :   lcpomap["DA_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8457             : 
    8458          16 :   lcpomap["DC3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8459          16 :   lcpomap["DC3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8460          16 :   lcpomap["DC3_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8461          16 :   lcpomap["DC3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8462          16 :   lcpomap["DC3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8463          16 :   lcpomap["DC3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8464          16 :   lcpomap["DC3_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8465          16 :   lcpomap["DC3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8466          16 :   lcpomap["DC3_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8467          16 :   lcpomap["DC3_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8468          16 :   lcpomap["DC3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8469          16 :   lcpomap["DC3_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8470          16 :   lcpomap["DC3_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8471          16 :   lcpomap["DC3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8472          16 :   lcpomap["DC3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8473          16 :   lcpomap["DC3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8474          16 :   lcpomap["DC3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8475          16 :   lcpomap["DC3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8476          16 :   lcpomap["DC3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8477          16 :   lcpomap["DC3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8478          16 :   lcpomap["DC3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8479          16 :   lcpomap["DC3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8480          16 :   lcpomap["DC3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8481             : 
    8482          16 :   lcpomap["DC5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8483          16 :   lcpomap["DC5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8484          16 :   lcpomap["DC5_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8485          16 :   lcpomap["DC5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8486          16 :   lcpomap["DC5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8487          16 :   lcpomap["DC5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8488          16 :   lcpomap["DC5_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8489          16 :   lcpomap["DC5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8490          16 :   lcpomap["DC5_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8491          16 :   lcpomap["DC5_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8492          16 :   lcpomap["DC5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8493          16 :   lcpomap["DC5_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8494          16 :   lcpomap["DC5_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8495          16 :   lcpomap["DC5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8496          16 :   lcpomap["DC5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8497          16 :   lcpomap["DC5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8498          16 :   lcpomap["DC5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8499          16 :   lcpomap["DC5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8500          16 :   lcpomap["DC5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8501          16 :   lcpomap["DC5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8502          16 :   lcpomap["DC5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8503             : 
    8504          16 :   lcpomap["DCT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8505          16 :   lcpomap["DCT_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
    8506          16 :   lcpomap["DCT_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8507          16 :   lcpomap["DCT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8508          16 :   lcpomap["DCT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05};
    8509          16 :   lcpomap["DCT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8510          16 :   lcpomap["DCT_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8511          16 :   lcpomap["DCT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8512          16 :   lcpomap["DCT_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8513          16 :   lcpomap["DCT_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05};
    8514          16 :   lcpomap["DCT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8515          16 :   lcpomap["DCT_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8516          16 :   lcpomap["DCT_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8517          16 :   lcpomap["DCT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8518          16 :   lcpomap["DCT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8519          16 :   lcpomap["DCT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8520          16 :   lcpomap["DCT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8521          16 :   lcpomap["DCT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8522          16 :   lcpomap["DCT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8523          16 :   lcpomap["DCT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8524          16 :   lcpomap["DCT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8525          16 :   lcpomap["DCT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8526          16 :   lcpomap["DCT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8527             : 
    8528          16 :   lcpomap["DC_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8529          16 :   lcpomap["DC_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8530          16 :   lcpomap["DC_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8531          16 :   lcpomap["DC_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8532          16 :   lcpomap["DC_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8533          16 :   lcpomap["DC_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8534          16 :   lcpomap["DC_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8535          16 :   lcpomap["DC_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8536          16 :   lcpomap["DC_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8537          16 :   lcpomap["DC_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8538          16 :   lcpomap["DC_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8539          16 :   lcpomap["DC_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8540          16 :   lcpomap["DC_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8541          16 :   lcpomap["DC_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8542          16 :   lcpomap["DC_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8543          16 :   lcpomap["DC_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8544          16 :   lcpomap["DC_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8545          16 :   lcpomap["DC_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8546          16 :   lcpomap["DC_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8547          16 :   lcpomap["DC_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8548          16 :   lcpomap["DC_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8549          16 :   lcpomap["DC_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8550          16 :   lcpomap["DC_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8551             : 
    8552          16 :   lcpomap["DG3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8553          16 :   lcpomap["DG3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8554          16 :   lcpomap["DG3_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8555          16 :   lcpomap["DG3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8556          16 :   lcpomap["DG3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8557          16 :   lcpomap["DG3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8558          16 :   lcpomap["DG3_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8559          16 :   lcpomap["DG3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8560          16 :   lcpomap["DG3_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8561          16 :   lcpomap["DG3_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8562          16 :   lcpomap["DG3_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8563          16 :   lcpomap["DG3_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8564          16 :   lcpomap["DG3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8565          16 :   lcpomap["DG3_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8566          16 :   lcpomap["DG3_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8567          16 :   lcpomap["DG3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8568          16 :   lcpomap["DG3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8569          16 :   lcpomap["DG3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8570          16 :   lcpomap["DG3_O6"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8571          16 :   lcpomap["DG3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8572          16 :   lcpomap["DG3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8573          16 :   lcpomap["DG3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8574          16 :   lcpomap["DG3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8575          16 :   lcpomap["DG3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8576          16 :   lcpomap["DG3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8577          16 :   lcpomap["DG3_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8578             : 
    8579          16 :   lcpomap["DG5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8580          16 :   lcpomap["DG5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8581          16 :   lcpomap["DG5_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8582          16 :   lcpomap["DG5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8583          16 :   lcpomap["DG5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8584          16 :   lcpomap["DG5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8585          16 :   lcpomap["DG5_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8586          16 :   lcpomap["DG5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8587          16 :   lcpomap["DG5_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8588          16 :   lcpomap["DG5_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8589          16 :   lcpomap["DG5_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8590          16 :   lcpomap["DG5_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8591          16 :   lcpomap["DG5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8592          16 :   lcpomap["DG5_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8593          16 :   lcpomap["DG5_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8594          16 :   lcpomap["DG5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8595          16 :   lcpomap["DG5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8596          16 :   lcpomap["DG5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8597          16 :   lcpomap["DG5_O6"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8598          16 :   lcpomap["DG5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8599          16 :   lcpomap["DG5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8600          16 :   lcpomap["DG5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8601          16 :   lcpomap["DG5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8602          16 :   lcpomap["DG5_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8603             : 
    8604          16 :   lcpomap["DGT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8605          16 :   lcpomap["DGT_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8606          16 :   lcpomap["DGT_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8607          16 :   lcpomap["DGT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8608          16 :   lcpomap["DGT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8609          16 :   lcpomap["DGT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8610          16 :   lcpomap["DGT_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8611          16 :   lcpomap["DGT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8612          16 :   lcpomap["DGT_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8613          16 :   lcpomap["DGT_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8614          16 :   lcpomap["DGT_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8615          16 :   lcpomap["DGT_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8616          16 :   lcpomap["DGT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8617          16 :   lcpomap["DGT_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8618          16 :   lcpomap["DGT_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8619          16 :   lcpomap["DGT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8620          16 :   lcpomap["DGT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8621          16 :   lcpomap["DGT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8622          16 :   lcpomap["DGT_O6"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8623          16 :   lcpomap["DGT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8624          16 :   lcpomap["DGT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8625          16 :   lcpomap["DGT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8626          16 :   lcpomap["DGT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8627          16 :   lcpomap["DGT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8628          16 :   lcpomap["DGT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8629          16 :   lcpomap["DGT_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8630             : 
    8631          16 :   lcpomap["DG_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8632          16 :   lcpomap["DG_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8633          16 :   lcpomap["DG_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8634          16 :   lcpomap["DG_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8635          16 :   lcpomap["DG_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8636          16 :   lcpomap["DG_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8637          16 :   lcpomap["DG_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8638          16 :   lcpomap["DG_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8639          16 :   lcpomap["DG_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8640          16 :   lcpomap["DG_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8641          16 :   lcpomap["DG_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8642          16 :   lcpomap["DG_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8643          16 :   lcpomap["DG_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8644          16 :   lcpomap["DG_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8645          16 :   lcpomap["DG_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8646          16 :   lcpomap["DG_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8647          16 :   lcpomap["DG_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8648          16 :   lcpomap["DG_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8649          16 :   lcpomap["DG_O6"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8650          16 :   lcpomap["DG_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8651          16 :   lcpomap["DG_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8652          16 :   lcpomap["DG_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8653          16 :   lcpomap["DG_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8654          16 :   lcpomap["DG_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8655          16 :   lcpomap["DG_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8656          16 :   lcpomap["DG_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8657             : 
    8658          16 :   lcpomap["DT3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8659          16 :   lcpomap["DT3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8660          16 :   lcpomap["DT3_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8661          16 :   lcpomap["DT3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8662          16 :   lcpomap["DT3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8663          16 :   lcpomap["DT3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8664          16 :   lcpomap["DT3_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8665          16 :   lcpomap["DT3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8666          16 :   lcpomap["DT3_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8667          16 :   lcpomap["DT3_C7"]  = { 1.7,  0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
    8668          16 :   lcpomap["DT3_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8669          16 :   lcpomap["DT3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8670          16 :   lcpomap["DT3_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8671          16 :   lcpomap["DT3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8672          16 :   lcpomap["DT3_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8673          16 :   lcpomap["DT3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8674          16 :   lcpomap["DT3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8675          16 :   lcpomap["DT3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8676          16 :   lcpomap["DT3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8677          16 :   lcpomap["DT3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8678          16 :   lcpomap["DT3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8679          16 :   lcpomap["DT3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8680          16 :   lcpomap["DT3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8681          16 :   lcpomap["DT3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8682             : 
    8683          16 :   lcpomap["DT5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8684          16 :   lcpomap["DT5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8685          16 :   lcpomap["DT5_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8686          16 :   lcpomap["DT5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8687          16 :   lcpomap["DT5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8688          16 :   lcpomap["DT5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8689          16 :   lcpomap["DT5_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8690          16 :   lcpomap["DT5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8691          16 :   lcpomap["DT5_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8692          16 :   lcpomap["DT5_C7"]  = { 1.7,  0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
    8693          16 :   lcpomap["DT5_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8694          16 :   lcpomap["DT5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8695          16 :   lcpomap["DT5_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8696          16 :   lcpomap["DT5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8697          16 :   lcpomap["DT5_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8698          16 :   lcpomap["DT5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8699          16 :   lcpomap["DT5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8700          16 :   lcpomap["DT5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8701          16 :   lcpomap["DT5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8702          16 :   lcpomap["DT5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8703          16 :   lcpomap["DT5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8704          16 :   lcpomap["DT5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8705             : 
    8706          16 :   lcpomap["DTT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8707          16 :   lcpomap["DTT_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8708          16 :   lcpomap["DTT_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8709          16 :   lcpomap["DTT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8710          16 :   lcpomap["DTT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8711          16 :   lcpomap["DTT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8712          16 :   lcpomap["DTT_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8713          16 :   lcpomap["DTT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8714          16 :   lcpomap["DTT_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8715          16 :   lcpomap["DTT_C7"]  = { 1.7,  0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
    8716          16 :   lcpomap["DTT_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8717          16 :   lcpomap["DTT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8718          16 :   lcpomap["DTT_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8719          16 :   lcpomap["DTT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8720          16 :   lcpomap["DTT_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8721          16 :   lcpomap["DTT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8722          16 :   lcpomap["DTT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8723          16 :   lcpomap["DTT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8724          16 :   lcpomap["DTT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8725          16 :   lcpomap["DTT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8726          16 :   lcpomap["DTT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8727          16 :   lcpomap["DTT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8728          16 :   lcpomap["DTT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8729          16 :   lcpomap["DTT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8730             : 
    8731          16 :   lcpomap["DT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8732          16 :   lcpomap["DT_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8733          16 :   lcpomap["DT_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8734          16 :   lcpomap["DT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8735          16 :   lcpomap["DT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8736          16 :   lcpomap["DT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8737          16 :   lcpomap["DT_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8738          16 :   lcpomap["DT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8739          16 :   lcpomap["DT_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8740          16 :   lcpomap["DT_C7"]  = { 1.7,  0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
    8741          16 :   lcpomap["DT_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8742          16 :   lcpomap["DT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8743          16 :   lcpomap["DT_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8744          16 :   lcpomap["DT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8745          16 :   lcpomap["DT_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8746          16 :   lcpomap["DT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8747          16 :   lcpomap["DT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8748          16 :   lcpomap["DT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8749          16 :   lcpomap["DT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8750          16 :   lcpomap["DT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8751          16 :   lcpomap["DT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8752          16 :   lcpomap["DT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8753          16 :   lcpomap["DT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8754          16 :   lcpomap["DT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8755             : 
    8756          16 :   lcpomap["G3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8757          16 :   lcpomap["G3_C2"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8758          16 :   lcpomap["G3_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8759          16 :   lcpomap["G3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8760          16 :   lcpomap["G3_C4"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8761          16 :   lcpomap["G3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8762          16 :   lcpomap["G3_C5"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8763          16 :   lcpomap["G3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8764          16 :   lcpomap["G3_C6"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8765          16 :   lcpomap["G3_C8"] = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8766          16 :   lcpomap["G3_N1"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8767          16 :   lcpomap["G3_N2"] = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8768          16 :   lcpomap["G3_N3"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8769          16 :   lcpomap["G3_N7"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8770          16 :   lcpomap["G3_N9"] = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8771          16 :   lcpomap["G3_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8772          16 :   lcpomap["G3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8773          16 :   lcpomap["G3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8774          16 :   lcpomap["G3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8775          16 :   lcpomap["G3_O6"] = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8776          16 :   lcpomap["G3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8777          16 :   lcpomap["G3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8778          16 :   lcpomap["G3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8779          16 :   lcpomap["G3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8780          16 :   lcpomap["G3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8781          16 :   lcpomap["G3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8782          16 :   lcpomap["G3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8783             : 
    8784          16 :   lcpomap["G5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8785          16 :   lcpomap["G5_C2"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8786          16 :   lcpomap["G5_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8787          16 :   lcpomap["G5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8788          16 :   lcpomap["G5_C4"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8789          16 :   lcpomap["G5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8790          16 :   lcpomap["G5_C5"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8791          16 :   lcpomap["G5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8792          16 :   lcpomap["G5_C6"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8793          16 :   lcpomap["G5_C8"] = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8794          16 :   lcpomap["G5_N1"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8795          16 :   lcpomap["G5_N2"] = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8796          16 :   lcpomap["G5_N3"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8797          16 :   lcpomap["G5_N7"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8798          16 :   lcpomap["G5_N9"] = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8799          16 :   lcpomap["G5_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8800          16 :   lcpomap["G5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8801          16 :   lcpomap["G5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8802          16 :   lcpomap["G5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8803          16 :   lcpomap["G5_O6"] = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8804          16 :   lcpomap["G5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8805          16 :   lcpomap["G5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8806          16 :   lcpomap["G5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8807          16 :   lcpomap["G5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8808          16 :   lcpomap["G5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8809             : 
    8810          16 :   lcpomap["GT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8811          16 :   lcpomap["GT_C2"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8812          16 :   lcpomap["GT_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8813          16 :   lcpomap["GT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8814          16 :   lcpomap["GT_C4"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8815          16 :   lcpomap["GT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8816          16 :   lcpomap["GT_C5"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8817          16 :   lcpomap["GT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8818          16 :   lcpomap["GT_C6"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8819          16 :   lcpomap["GT_C8"] = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8820          16 :   lcpomap["GT_N1"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8821          16 :   lcpomap["GT_N2"] = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8822          16 :   lcpomap["GT_N3"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8823          16 :   lcpomap["GT_N7"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8824          16 :   lcpomap["GT_N9"] = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8825          16 :   lcpomap["GT_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8826          16 :   lcpomap["GT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8827          16 :   lcpomap["GT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8828          16 :   lcpomap["GT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8829          16 :   lcpomap["GT_O6"] = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8830          16 :   lcpomap["GT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8831          16 :   lcpomap["GT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8832          16 :   lcpomap["GT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8833          16 :   lcpomap["GT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8834          16 :   lcpomap["GT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8835          16 :   lcpomap["GT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8836          16 :   lcpomap["GT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8837             : 
    8838          16 :   lcpomap["G_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8839          16 :   lcpomap["G_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8840          16 :   lcpomap["G_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8841          16 :   lcpomap["G_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8842          16 :   lcpomap["G_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8843          16 :   lcpomap["G_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8844          16 :   lcpomap["G_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8845          16 :   lcpomap["G_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8846          16 :   lcpomap["G_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8847          16 :   lcpomap["G_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8848          16 :   lcpomap["G_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8849          16 :   lcpomap["G_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    8850          16 :   lcpomap["G_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8851          16 :   lcpomap["G_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8852          16 :   lcpomap["G_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8853          16 :   lcpomap["G_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8854          16 :   lcpomap["G_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8855          16 :   lcpomap["G_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8856          16 :   lcpomap["G_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8857          16 :   lcpomap["G_O6"] = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8858          16 :   lcpomap["G_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8859          16 :   lcpomap["G_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8860          16 :   lcpomap["G_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8861          16 :   lcpomap["G_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8862          16 :   lcpomap["G_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8863          16 :   lcpomap["G_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8864          16 :   lcpomap["G_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8865             : 
    8866          16 :   lcpomap["U3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8867          16 :   lcpomap["U3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8868          16 :   lcpomap["U3_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8869          16 :   lcpomap["U3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8870          16 :   lcpomap["U3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8871          16 :   lcpomap["U3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8872          16 :   lcpomap["U3_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8873          16 :   lcpomap["U3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8874          16 :   lcpomap["U3_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8875          16 :   lcpomap["U3_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8876          16 :   lcpomap["U3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8877          16 :   lcpomap["U3_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8878          16 :   lcpomap["U3_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8879          16 :   lcpomap["U3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8880          16 :   lcpomap["U3_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8881          16 :   lcpomap["U3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8882          16 :   lcpomap["U3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8883          16 :   lcpomap["U3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8884          16 :   lcpomap["U3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8885          16 :   lcpomap["U3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8886          16 :   lcpomap["U3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8887          16 :   lcpomap["U3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8888          16 :   lcpomap["U3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8889          16 :   lcpomap["U3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8890             : 
    8891          16 :   lcpomap["U5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8892          16 :   lcpomap["U5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8893          16 :   lcpomap["U5_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8894          16 :   lcpomap["U5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8895          16 :   lcpomap["U5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8896          16 :   lcpomap["U5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8897          16 :   lcpomap["U5_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8898          16 :   lcpomap["U5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8899          16 :   lcpomap["U5_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8900          16 :   lcpomap["U5_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8901          16 :   lcpomap["U5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8902          16 :   lcpomap["U5_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8903          16 :   lcpomap["U5_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8904          16 :   lcpomap["U5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8905          16 :   lcpomap["U5_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8906          16 :   lcpomap["U5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8907          16 :   lcpomap["U5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8908          16 :   lcpomap["U5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8909          16 :   lcpomap["U5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8910          16 :   lcpomap["U5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8911          16 :   lcpomap["U5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8912          16 :   lcpomap["U5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8913             : 
    8914          16 :   lcpomap["UT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8915          16 :   lcpomap["UT_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8916          16 :   lcpomap["UT_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8917          16 :   lcpomap["UT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8918          16 :   lcpomap["UT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8919          16 :   lcpomap["UT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8920          16 :   lcpomap["UT_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8921          16 :   lcpomap["UT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8922          16 :   lcpomap["UT_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8923          16 :   lcpomap["UT_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8924          16 :   lcpomap["UT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8925          16 :   lcpomap["UT_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8926          16 :   lcpomap["UT_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8927          16 :   lcpomap["UT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8928          16 :   lcpomap["UT_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8929          16 :   lcpomap["UT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8930          16 :   lcpomap["UT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8931          16 :   lcpomap["UT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8932          16 :   lcpomap["UT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8933          16 :   lcpomap["UT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8934          16 :   lcpomap["UT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8935          16 :   lcpomap["UT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8936          16 :   lcpomap["UT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8937          16 :   lcpomap["UT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8938             : 
    8939          16 :   lcpomap["U_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8940          16 :   lcpomap["U_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8941          16 :   lcpomap["U_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8942          16 :   lcpomap["U_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8943          16 :   lcpomap["U_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    8944          16 :   lcpomap["U_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    8945          16 :   lcpomap["U_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8946          16 :   lcpomap["U_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    8947          16 :   lcpomap["U_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    8948          16 :   lcpomap["U_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    8949          16 :   lcpomap["U_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    8950          16 :   lcpomap["U_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8951          16 :   lcpomap["U_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8952          16 :   lcpomap["U_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8953          16 :   lcpomap["U_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    8954          16 :   lcpomap["U_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8955          16 :   lcpomap["U_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    8956          16 :   lcpomap["U_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8957          16 :   lcpomap["U_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8958          16 :   lcpomap["U_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8959          16 :   lcpomap["U_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    8960          16 :   lcpomap["U_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8961          16 :   lcpomap["U_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    8962          16 :   lcpomap["U_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    8963             : 
    8964          16 :   return lcpomap;
    8965             : }
    8966             : 
    8967             : // assigns LCPO parameters to each atom reading from database
    8968          16 : void SAXS::readLCPOparam(const std::vector<std::vector<std::string> > &AtomResidueName, unsigned natoms) {
    8969          16 :   std::map<std::string, std::vector<double> > lcpomap = setupLCPOparam();
    8970             : 
    8971       56602 :   for(unsigned i=0; i<natoms; ++i) {
    8972       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'))) {
    8973       26526 :       std::string identifier = AtomResidueName[1][i]+"_"+AtomResidueName[0][i];
    8974       26526 :       std::vector<double> LCPOparamVector = lcpomap.at(identifier);
    8975             :       double rs = 0.14;
    8976       26526 :       LCPOparam[i].push_back(LCPOparamVector[0]+rs*10.);
    8977       26526 :       LCPOparam[i].push_back(LCPOparamVector[1]);
    8978       26526 :       LCPOparam[i].push_back(LCPOparamVector[2]);
    8979       26526 :       LCPOparam[i].push_back(LCPOparamVector[3]);
    8980       26526 :       LCPOparam[i].push_back(LCPOparamVector[4]);
    8981             :     }
    8982             :   }
    8983             : 
    8984       56602 :   for(unsigned i=0; i<natoms; ++i) {
    8985       56586 :     if (LCPOparam[i].size()==0 ) {
    8986       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')) {
    8987           0 :         std::cout << "Could not find LCPO paramaters for atom " << AtomResidueName[0][i] << " of residue " << AtomResidueName[1][i] << std::endl;
    8988           0 :         error ("missing LCPO parameters\n");
    8989             :       }
    8990             :     }
    8991             :   }
    8992             : 
    8993          16 :   if (AtomResidueName[0][0] == "N") {
    8994          16 :     LCPOparam[0][1] = 7.3511e-01;
    8995          16 :     LCPOparam[0][2] = -2.2116e-01;
    8996          16 :     LCPOparam[0][3] = -8.9148e-04;
    8997          16 :     LCPOparam[0][4] = 2.5230e-04;
    8998             :   }
    8999             : 
    9000          16 :   if (AtomResidueName[0][natoms-1] == "O") {
    9001           0 :     LCPOparam[natoms-1][1] = 8.8857e-01;
    9002           0 :     LCPOparam[natoms-1][2] = -3.3421e-01;
    9003           0 :     LCPOparam[natoms-1][3] = -1.8683e-03;
    9004           0 :     LCPOparam[natoms-1][4] = 4.9372e-04;
    9005             :   }
    9006          16 : }
    9007             : 
    9008           4 : void SAXS::resolution_function() {
    9009           4 :   const unsigned numq = q_list.size();
    9010             : 
    9011             :   // only OpenMP because numq might be smaller than the number of ranks
    9012           4 :   #pragma omp parallel for num_threads(OpenMP::getNumThreads())
    9013             :   for (unsigned i=0; i<numq; i++) {
    9014             :     double qi = q_list[i];
    9015             :     double dq = 6*sigma_res[i]/(Nj-1);
    9016             :     double sigma_sq = sigma_res[i]*sigma_res[i];
    9017             :     double qstart = qi - 3*sigma_res[i];
    9018             :     for (unsigned j=0; j<Nj; j++) {
    9019             :       double qj = qstart + j*dq;
    9020             :       double I0exp = i0e(qj*qi/sigma_sq);
    9021             : 
    9022             :       qj_list[i][j] = qj;
    9023             :       Rij[i][j] = (qj/sigma_sq)*std::exp(-0.5*(qj - qi)*(qj - qi)/sigma_sq)*I0exp;
    9024             :     }
    9025             :   }
    9026           4 : }
    9027             : 
    9028             : // i0e function from cephes
    9029             : // compute I0(x) * exp (-x), with I0 being the modified Bessel function
    9030             : // of first kind and zeroth order.
    9031         660 : inline double SAXS::i0e(double x) {
    9032             :   double y = 0.0;
    9033             : 
    9034         660 :   if (x < 0) {
    9035           0 :     x = -x;
    9036             :   }
    9037         660 :   if (x <= 8.0) {
    9038           0 :     y = (x/2.0) - 2.0;
    9039           0 :     return chbevl(y, A);
    9040             :   }
    9041             : 
    9042         660 :   return chbevl(32.0/x - 2.0, B) / sqrt(x);
    9043             : }
    9044             : 
    9045         660 : double SAXS::chbevl(double x, const std::vector<double> &coeffs) {
    9046             :   double b0, b1, b2;
    9047         660 :   unsigned n = coeffs.size();
    9048             : 
    9049         660 :   b0 = coeffs[0];
    9050             :   b1 = 0.0;
    9051             :   b2 = 0.0;
    9052             : 
    9053       16500 :   for (unsigned i = 1; i < n; i++) {
    9054             :     b2 = b1;
    9055             :     b1 = b0;
    9056       15840 :     b0 = x * b1 - b2 + coeffs[i];
    9057             :   }
    9058         660 :   return 0.5 * (b0 - b2);
    9059             : }
    9060             : 
    9061      134310 : inline double SAXS::interpolation(std::vector<SplineCoeffs> &coeffs, double x) {
    9062             :   unsigned s = 0;
    9063     1002034 :   while ((x >= q_list[s+1]) && (s+1 < q_list.size()-1)) {
    9064             :     s++;
    9065             :   }
    9066             : 
    9067      134310 :   double dx = x - coeffs[s].x;
    9068      134310 :   return coeffs[s].a + coeffs[s].b*dx + coeffs[s].c*dx*dx + coeffs[s].d*dx*dx*dx;
    9069             : }
    9070             : 
    9071             : // natural bc cubic spline implementation from the Wikipedia algorithm
    9072             : // modified from https://stackoverflow.com/a/19216702/3254658
    9073         814 : std::vector<SAXS::SplineCoeffs> SAXS::spline_coeffs(std::vector<double> &x, std::vector<double> &y) {
    9074         814 :   unsigned n = x.size()-1;
    9075             :   std::vector<double> a;
    9076         814 :   a.insert(a.begin(), y.begin(), y.end());
    9077         814 :   std::vector<double> b(n);
    9078         814 :   std::vector<double> d(n);
    9079             :   std::vector<double> h;
    9080             : 
    9081       12210 :   for(unsigned i=0; i<n; i++) {
    9082       11396 :     h.push_back(x[i+1]-x[i]);
    9083             :   }
    9084             : 
    9085             :   std::vector<double> alpha;
    9086         814 :   alpha.push_back(0);
    9087       11396 :   for(unsigned i=1; i<n; i++) {
    9088       10582 :     alpha.push_back( 3*(a[i+1]-a[i])/h[i] - 3*(a[i]-a[i-1])/h[i-1]  );
    9089             :   }
    9090             : 
    9091         814 :   std::vector<double> c(n+1);
    9092         814 :   std::vector<double> l(n+1);
    9093         814 :   std::vector<double> mu(n+1);
    9094         814 :   std::vector<double> z(n+1);
    9095         814 :   l[0] = 1;
    9096         814 :   mu[0] = 0;
    9097         814 :   z[0] = 0;
    9098             : 
    9099       11396 :   for(unsigned i=1; i<n; i++) {
    9100       10582 :     l[i] = 2 *(x[i+1]-x[i-1])-h[i-1]*mu[i-1];
    9101       10582 :     mu[i] = h[i]/l[i];
    9102       10582 :     z[i] = (alpha[i]-h[i-1]*z[i-1])/l[i];
    9103             :   }
    9104             : 
    9105         814 :   l[n] = 1;
    9106         814 :   z[n] = 0;
    9107         814 :   c[n] = 0;
    9108             : 
    9109       12210 :   for(int j=n-1; j>=0; j--) {
    9110       11396 :     c[j] = z[j] - mu[j] * c[j+1];
    9111       11396 :     b[j] = (a[j+1]-a[j])/h[j]-h[j]*(c[j+1]+2*c[j])/3;
    9112       11396 :     d[j] = (c[j+1]-c[j])/3/h[j];
    9113             :   }
    9114             : 
    9115         814 :   std::vector<SplineCoeffs> output_set(n);
    9116       12210 :   for(unsigned i=0; i<n; i++) {
    9117       11396 :     output_set[i].a = a[i];
    9118       11396 :     output_set[i].b = b[i];
    9119       11396 :     output_set[i].c = c[i];
    9120       11396 :     output_set[i].d = d[i];
    9121       11396 :     output_set[i].x = x[i];
    9122             :   }
    9123             : 
    9124         814 :   return output_set;
    9125             : }
    9126             : 
    9127             : 
    9128             : }//namespace isdb
    9129             : }//namespace PLMD

Generated by: LCOV version 1.16