LCOV - code coverage report
Current view: top level - isdb - SAXS.cpp (source / functions) Hit Total Coverage
Test: plumed test coverage Lines: 4883 6099 80.1 %
Date: 2026-03-30 13:16:06 Functions: 22 24 91.7 %

          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             : */
      29             : 
      30             : #include "MetainferenceBase.h"
      31             : #include "core/ActionRegister.h"
      32             : #include "core/ActionSet.h"
      33             : #include "core/GenericMolInfo.h"
      34             : #include "tools/MolDataClass.h"
      35             : #include "tools/Communicator.h"
      36             : #include "tools/Pbc.h"
      37             : #include "tools/PDB.h"
      38             : 
      39             : #include <map>
      40             : #include <iterator>
      41             : #include <iostream>
      42             : #include <algorithm>
      43             : #include <cctype>
      44             : 
      45             : #ifdef __PLUMED_HAS_ARRAYFIRE
      46             : #include <arrayfire.h>
      47             : #include <af/util.h>
      48             : #ifdef __PLUMED_HAS_ARRAYFIRE_CUDA
      49             : #include <cuda_runtime.h>
      50             : #include <cublas_v2.h>
      51             : #include <af/cuda.h>
      52             : #elif __PLUMED_HAS_ARRAYFIRE_OCL
      53             : #include <af/opencl.h>
      54             : #endif
      55             : #endif
      56             : 
      57             : #ifndef M_PI
      58             : #define M_PI           3.14159265358979323846
      59             : #endif
      60             : 
      61             : namespace PLMD {
      62             : namespace isdb {
      63             : 
      64             : //+PLUMEDOC ISDB_COLVAR SAXS
      65             : /*
      66             : Calculates SAXS intensity.
      67             : 
      68             : SAXS intensities are calculated for a set of scattering vectors using QVALUE keywords numbered from 1.
      69             : Form factors can be assigned either by polynomial expansion of any order by using the PARAMETERS keywords, or
      70             : automatically matched to atoms using the ATOMISTIC flag by reading a PDB file. Alternatively to the atomistic
      71             : representation, two types of coarse-grained mapping are available:
      72             : - MARTINI.
      73             : - ONEBEAD.
      74             : 
      75             : Whether for PARAMETERS, ATOMISTIC, and ONEBEAD the user must provide an all-atom PDB file via MOLINFO before the
      76             : SAXS instruction. MARTINI requires a mapping scheme consisting of a PDB file that contains both the all-atom
      77             : and MARTINI representations, and a bead position file (e.g., bead1: CENTER ATOMS=1,5,7,11,12 WEIGHTS=14,12,12,
      78             : 12,16).
      79             : 
      80             : ONEBEAD scheme consists in a single-bead per amino acid residue or three-bead for nucleic acid residue (one for
      81             : the phosphate group, one for the pentose sugar, one for the nucleobase). PLUMED creates a virtual bead on which
      82             : the SAXS calculations are performed, centred on the COM of all atoms belonging to the bead. It is possible to
      83             : account for the contribution of the solvation layer to the SAXS intensity by adding a correction term for the
      84             : solvent accessible beads only: the form factors of the amino acids / phosphate groups / pentose sugars /
      85             : nucleobases with a SASA (computed via LCPO algorithm) greater than a threshold are corrected according to an
      86             : electron density term. Both the surface cut-off threshold and the electron density term can be set by the user
      87             : with the SASA_CUTOFF and SOLVATION_CORRECTION keywords. Moreover, SASA stride calculation can be modified using
      88             : SOLVATION_STRIDE, which is set to 100 steps by default.
      89             : ONEBEAD requires an additional PDB file to perform mapping conversion, which must be provided via TEMPLATE
      90             : keyword. This PDB file should only include the atoms for which the SAXS intensity will be computed.
      91             : The AMBER OL3 (RNA) and OL15 (DNA) naming is required for nucleic acids.
      92             : Two additional bead types are available for DNA and RNA besides phosphate group, pentose sugar, and nucleobase:
      93             : - 5'-end pentose sugar capped with an hydroxyl moiety at C5' (the residue name in the PDB must be followed by
      94             : "5", e.g., DC5 or C5 for cytosine in DNA and RNA, respectively);
      95             : - 3'-end pentose sugar capped with an hydroxyl moiety at C3' (the residue name in the PDB must be followed by
      96             : "3", e.g., DC3 or C3 for cytosine in DNA and RNA, respectively).
      97             : 
      98             : Experimental reference intensities can be added using the EXPINT keywords. All these values must be normalised
      99             : to the SAXS intensity at q = 0. To facilitate this operation, the SCALE_EXPINT keyword can be used to provide
     100             : the intensity at q = 0. Each EXPINT is divided by SCALE_EXPINT.
     101             : The maximum QVALUE for ONEBEAD is set to 0.3 inverse angstroms.
     102             : The solvent density, that by default is set to 0.334 electrons per cubic angstrom (bulk water), can be modified
     103             : using the SOLVDENS keyword.
     104             : 
     105             : By default SAXS is calculated using Debye on CPU, by adding the GPU flag it is possible to solve the equation on
     106             : a GPU if the ARRAYFIRE libraries are installed and correctly linked.
     107             : \ref METAINFERENCE can be activated using DOSCORE and the other relevant keywords.
     108             : 
     109             : \par Examples
     110             : in the following example the SAXS intensities are calculated using single-bead per residue approximation, with a
     111             : SASA threshold of 1 square nanometer and a solvation term of 0.04. Each experimental intensity is divided by
     112             : 1.4002, which is the corresponding theoretical intensity value at q = 0. The form factors are selected according
     113             : to the PDB file specified by TEMPLATE keyword.
     114             : 
     115             : \plumedfile
     116             : MOLINFO STRUCTURE=template_AA.pdb
     117             : 
     118             : SAXS ...
     119             : LABEL=SAXS
     120             : ATOMS=1-355
     121             : ONEBEAD
     122             : TEMPLATE=template_AA.pdb
     123             : SOLVDENS=0.334
     124             : SOLVATION_CORRECTION=0.04
     125             : SOLVATION_STRIDE=1
     126             : SASA_CUTOFF=1.0
     127             : SCALE_EXPINT=1.4002
     128             : QVALUE1=0.03 EXPINT1=1.0902
     129             : QVALUE2=0.06 EXPINT2=0.790632
     130             : QVALUE3=0.09 EXPINT3=0.453808
     131             : QVALUE4=0.12 EXPINT4=0.254737
     132             : QVALUE5=0.15 EXPINT5=0.154928
     133             : QVALUE6=0.18 EXPINT6=0.0921503
     134             : QVALUE7=0.21 EXPINT7=0.052633
     135             : QVALUE8=0.24 EXPINT8=0.0276557
     136             : QVALUE9=0.27 EXPINT9=0.0122775
     137             : QVALUE10=0.30 EXPINT10=0.00880634
     138             : ... SAXS
     139             : 
     140             : PRINT ARG=(SAXS\.q-.*),(SAXS\.exp-.*) FILE=saxsdata STRIDE=1
     141             : 
     142             : \endplumedfile
     143             : 
     144             : */
     145             : //+ENDPLUMEDOC
     146             : 
     147             : //+PLUMEDOC ISDB_COLVAR SANS
     148             : /*
     149             : Calculates SANS intensity.
     150             : 
     151             : SANS intensities are calculated for a set of scattering vectors using QVALUE keywords numbered from 1.
     152             : Form factors are automatically assigned to atoms using the ATOMISTIC flag by reading a PDB file or, alternatively,
     153             : a ONEBEAD coarse-grained implementation is available.
     154             : 
     155             : Both for ATOMISTIC and ONEBEAD the user must provide an all-atom PDB file via MOLINFO before the SANS instruction.
     156             : 
     157             : ONEBEAD scheme consists in a single-bead per amino acid residue or three-bead for nucleic acid residue (one for
     158             : the phosphate group, one for the pentose sugar, one for the nucleobase). PLUMED creates a virtual bead on which
     159             : the SANS calculations are performed, centred on the COM of all atoms belonging to the bead. It is possible to
     160             : account for the contribution of the solvation layer to the SAXS intensity by adding a correction term for the
     161             : solvent accessible beads only: the form factors of the amino acids / phosphate groups / pentose sugars /
     162             : nucleobases with a SASA (computed via LCPO algorithm) greater than a threshold are corrected according to an
     163             : electron density term. Both the surface cut-off threshold and the electron density term can be set by the user
     164             : with the SASA_CUTOFF and SOLVATION_CORRECTION keywords. Moreover, SASA stride calculation can be modified using
     165             : SOLVATION_STRIDE, which is set to 100 steps by default. The deuteration of the solvent-exposed residues is chosen
     166             : with a probability equal to the deuterium concentration in the buffer. The deuterated residues are updated with a
     167             : stride equal to SOLVATION_STRIDE. The fraction of deuterated water can be set with DEUTER_CONC, the default value
     168             : is 0.
     169             : ONEBEAD requires an additional PDB file to perform mapping conversion, which must be provided via TEMPLATE
     170             : keyword. This PDB file should only include the atoms for which the SANS intensity will be computed.
     171             : The AMBER OL3 (RNA) and OL15 (DNA) naming is required for nucleic acids.
     172             : Two additional bead types are available for DNA and RNA besides phosphate group, pentose sugar, and nucleobase:
     173             : - 5'-end pentose sugar capped with an hydroxyl moiety at C5' (the residue name in the PDB must be followed by "5",
     174             : e.g., DC5 or C5 for cytosine in DNA and RNA, respectively);
     175             : - 3'-end pentose sugar capped with an hydroxyl moiety at C3' (the residue name in the PDB must be followed by "3",
     176             : e.g., DC3 or C3 for cytosine in DNA and RNA, respectively).
     177             : 
     178             : PLEASE NOTE: at the moment, we DO NOT explicitly take into account deuterated residues in the ATOMISTIC
     179             : representation, but we correct the solvent contribution via the DEUTER_CONC keyword.
     180             : 
     181             : Experimental reference intensities can be added using the EXPINT keywords. All these values must be normalised
     182             : to the SANS intensity at q = 0. To facilitate this operation, the SCALE_EXPINT keyword can be used to provide
     183             : the intensity at q = 0. Each EXPINT is divided by SCALE_EXPINT.
     184             : The maximum QVALUE for ONEBEAD is set to 0.3 inverse angstroms.
     185             : The solvent density, that by default is set to 0.334 electrons per cubic angstrom (bulk water), can be modified
     186             : using the SOLVDENS keyword.
     187             : 
     188             : By default SANS is calculated using Debye on CPU, by adding the GPU flag it is possible to solve the equation on a
     189             : GPU if the ARRAYFIRE libraries are installed and correctly linked.
     190             : \ref METAINFERENCE can be activated using DOSCORE and the other relevant keywords.
     191             : 
     192             : \par Examples
     193             : in the following example the SANS intensities are calculated at atomistic resolution. The form factors are assigned
     194             : according to the PDB file specified in the MOLINFO. Each experimental intensity is divided by 1.4002, which is the
     195             : corresponding theoretical intensity value at q = 0. The deuterated water fraction is set to 48%.
     196             : 
     197             : \plumedfile
     198             : MOLINFO STRUCTURE=template_AA.pdb
     199             : 
     200             : SANS ...
     201             : LABEL=SANS
     202             : ATOMS=1-355
     203             : ATOMISTIC
     204             : SCALE_EXPINT=1.4002
     205             : DEUTER_CONC=0.48
     206             : QVALUE1=0.03 EXPINT1=1.0902
     207             : QVALUE2=0.06 EXPINT2=0.790632
     208             : QVALUE3=0.09 EXPINT3=0.453808
     209             : QVALUE4=0.12 EXPINT4=0.254737
     210             : QVALUE5=0.15 EXPINT5=0.154928
     211             : QVALUE6=0.18 EXPINT6=0.0921503
     212             : QVALUE7=0.21 EXPINT7=0.052633
     213             : QVALUE8=0.24 EXPINT8=0.0276557
     214             : QVALUE9=0.27 EXPINT9=0.0122775
     215             : QVALUE10=0.30 EXPINT10=0.00880634
     216             : ... SANS
     217             : 
     218             : PRINT ARG=(SANS\.q-.*),(SANS\.exp-.*) FILE=sansdata STRIDE=1
     219             : 
     220             : \endplumedfile
     221             : 
     222             : */
     223             : //+ENDPLUMEDOC
     224             : 
     225             : class SAXS :
     226             :   public MetainferenceBase {
     227             : private:
     228             :   enum { H, C, N, O, P, S, NTT };
     229             :   enum { ALA_BB, ARG_BB, ARG_SC1, ARG_SC2, ASN_BB, ASN_SC1, ASP_BB, ASP_SC1, CYS_BB, CYS_SC1,
     230             :          GLN_BB, GLN_SC1, GLU_BB, GLU_SC1, GLY_BB, HIS_BB, HIS_SC1, HIS_SC2, HIS_SC3, ILE_BB,
     231             :          ILE_SC1, LEU_BB, LEU_SC1, LYS_BB, LYS_SC1, LYS_SC2, MET_BB, MET_SC1, PHE_BB, PHE_SC1,
     232             :          PHE_SC2, PHE_SC3, PRO_BB, PRO_SC1, SER_BB, SER_SC1, THR_BB, THR_SC1, TRP_BB, TRP_SC1,
     233             :          TRP_SC2, TRP_SC3, TRP_SC4, TYR_BB, TYR_SC1, TYR_SC2, TYR_SC3, VAL_BB, VAL_SC1, A_BB1,
     234             :          A_BB2, A_BB3, A_SC1, A_SC2, A_SC3, A_SC4, A_3TE, A_5TE, A_TE3, A_TE5, C_BB1, C_BB2,
     235             :          C_BB3, C_SC1, C_SC2, C_SC3, C_3TE, C_5TE, C_TE3, C_TE5, G_BB1, G_BB2, G_BB3, G_SC1,
     236             :          G_SC2, G_SC3, G_SC4, G_3TE, G_5TE, G_TE3, G_TE5, U_BB1, U_BB2, U_BB3, U_SC1, U_SC2,
     237             :          U_SC3, U_3TE, U_5TE, U_TE3, U_TE5, DA_BB1, DA_BB2, DA_BB3, DA_SC1, DA_SC2, DA_SC3,
     238             :          DA_SC4, DA_3TE, DA_5TE, DA_TE3, DA_TE5, DC_BB1, DC_BB2, DC_BB3, DC_SC1, DC_SC2, DC_SC3,
     239             :          DC_3TE, DC_5TE, DC_TE3, DC_TE5, DG_BB1, DG_BB2, DG_BB3, DG_SC1, DG_SC2, DG_SC3, DG_SC4,
     240             :          DG_3TE, DG_5TE, DG_TE3, DG_TE5, DT_BB1, DT_BB2, DT_BB3, DT_SC1, DT_SC2, DT_SC3, DT_3TE,
     241             :          DT_5TE, DT_TE3, DT_TE5, NMARTINI
     242             :        };
     243             :   enum { TRP, TYR, PHE, HIS, HIP, ARG, LYS, CYS, ASP, GLU, ILE, LEU, MET, ASN, PRO, GLN, SER, THR, VAL, ALA, GLY,
     244             :          BASE_A, BASE_C, BASE_T, BASE_G, BASE_U,
     245             :          BB_DNA, BB_DNA_5, BB_DNA_3,
     246             :          BB_RNA, BB_RNA_5, BB_RNA_3,
     247             :          BB_PO2,
     248             :          NONEBEAD
     249             :        };
     250             :   bool saxs;
     251             :   bool pbc;
     252             :   bool serial;
     253             :   bool gpu;
     254             :   bool onebead;
     255             :   bool isFirstStep;
     256             :   int  deviceid;
     257             :   unsigned nres;
     258             :   std::vector<unsigned> atoi;
     259             :   std::vector<unsigned> atoms_per_bead;
     260             :   std::vector<double>   atoms_masses;
     261             :   std::vector<double>   q_list;
     262             :   std::vector<double>   FF_rank;
     263             :   std::vector<std::vector<double> > FF_value_vacuum;
     264             :   std::vector<std::vector<double> > FF_value_solv;
     265             :   std::vector<std::vector<double> > FF_value_mixed;
     266             :   std::vector<std::vector<double> > FF_value;
     267             :   std::vector<std::vector<float> >  FFf_value;
     268             :   // SANS:
     269             :   std::vector<std::vector<double> > FF_value_vacuum_H;
     270             :   std::vector<std::vector<double> > FF_value_solv_H;
     271             :   std::vector<std::vector<double> > FF_value_mixed_H;
     272             :   std::vector<std::vector<double> > FF_value_vacuum_D;
     273             :   std::vector<std::vector<double> > FF_value_mixed_D;
     274             : 
     275             :   std::vector<std::vector<double> > LCPOparam;
     276             :   std::vector<unsigned> residue_atom;
     277             : 
     278             :   double rho, rho_corr, sasa_cutoff;
     279             :   double deuter_conc;
     280             :   unsigned solv_stride;
     281             :   std::vector<double> Iq0_vac;
     282             :   std::vector<double> Iq0_solv;
     283             :   std::vector<double> Iq0_mix;
     284             :   double Iq0;
     285             : 
     286             :   // SANS:
     287             :   std::vector<double> Iq0_vac_H;
     288             :   std::vector<double> Iq0_solv_H;
     289             :   std::vector<double> Iq0_mix_H;
     290             :   std::vector<double> Iq0_vac_D;
     291             :   std::vector<double> Iq0_mix_D;
     292             : 
     293             :   void calculate_gpu(std::vector<Vector> &pos, std::vector<Vector> &deriv);
     294             :   void calculate_cpu(std::vector<Vector> &pos, std::vector<Vector> &deriv);
     295             :   void getMartiniFFparam(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &parameter);
     296             :   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, std::vector<unsigned> residue_atom);
     297             :   unsigned getOnebeadMapping(const PDB &pdb, const std::vector<AtomNumber> &atoms);
     298             :   double calculateAFF(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double rho);
     299             :   std::map<std::string, std::vector<double> > setupLCPOparam();
     300             :   void readLCPOparam(const std::vector<std::vector<std::string> > &AtomResidueName, unsigned natoms);
     301             :   void calcNlist(std::vector<std::vector<int> > &Nlist);
     302             :   void sasa_calculate(std::vector<bool> &solv_res);
     303             :   // SANS:
     304             :   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);
     305             :   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);
     306             :   double calculateAFFsans(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double deuter_conc);
     307             : 
     308             : public:
     309             :   static void registerKeywords( Keywords& keys );
     310             :   explicit SAXS(const ActionOptions&);
     311             :   void calculate() override;
     312             :   void update() override;
     313             : };
     314             : 
     315       13829 : PLUMED_REGISTER_ACTION(SAXS,"SAXS")
     316       13797 : PLUMED_REGISTER_ACTION(SAXS,"SANS")
     317             : 
     318          36 : void SAXS::registerKeywords(Keywords& keys) {
     319          36 :   componentsAreNotOptional(keys);
     320          36 :   MetainferenceBase::registerKeywords(keys);
     321          72 :   keys.addFlag("NOPBC",false,"ignore the periodic boundary conditions when calculating distances");
     322          72 :   keys.addFlag("SERIAL",false,"Perform the calculation in serial - for debug purpose");
     323          72 :   keys.add("compulsory","DEVICEID","-1","Identifier of the GPU to be used");
     324          72 :   keys.addFlag("GPU",false,"calculate SAXS using ARRAYFIRE on an accelerator device");
     325          72 :   keys.addFlag("ATOMISTIC",false,"calculate SAXS for an atomistic model");
     326          72 :   keys.addFlag("MARTINI",false,"calculate SAXS for a Martini model");
     327          72 :   keys.addFlag("ONEBEAD",false,"calculate SAXS for a single bead model");
     328          72 :   keys.add("compulsory","TEMPLATE","template.pdb","A PDB file is required for ONEBEAD mapping");
     329          72 :   keys.add("atoms","ATOMS","The atoms to be included in the calculation, e.g. the whole protein");
     330          72 :   keys.add("numbered","QVALUE","Selected scattering lengths in inverse angstroms are given as QVALUE1, QVALUE2, ...");
     331          72 :   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");
     332          72 :   keys.add("compulsory","DEUTER_CONC","0.","Fraction of deuterated solvent");
     333          72 :   keys.add("compulsory","SOLVDENS","0.334","Density of the solvent to be used for the correction of atomistic form factors");
     334          72 :   keys.add("compulsory","SOLVATION_CORRECTION","0.0","Hydration layer electron density correction (ONEBEAD only)");
     335          72 :   keys.add("compulsory","SASA_CUTOFF","1.0","SASA value to consider a residue as exposed to the solvent (ONEBEAD only)");
     336          72 :   keys.add("numbered","EXPINT","Add an experimental value for each q value");
     337          72 :   keys.add("compulsory","SOLVATION_STRIDE","100","Number of steps between every new residues solvation estimation via LCPO (ONEBEAD only)");
     338          72 :   keys.add("compulsory","SCALE_EXPINT","1.0","Scaling value for experimental data normalization");
     339          72 :   keys.addOutputComponent("q","default","the # SAXS of q");
     340          72 :   keys.addOutputComponent("exp","EXPINT","the # experimental intensity");
     341          36 : }
     342             : 
     343          28 : SAXS::SAXS(const ActionOptions&ao):
     344             :   PLUMED_METAINF_INIT(ao),
     345          28 :   saxs(true),
     346          28 :   pbc(true),
     347          28 :   serial(false),
     348          28 :   gpu(false),
     349          28 :   onebead(false),
     350          28 :   isFirstStep(true),
     351          28 :   deviceid(-1) {
     352          28 :   if( getName().find("SAXS")!=std::string::npos) {
     353          22 :     saxs=true;
     354           6 :   } else if( getName().find("SANS")!=std::string::npos) {
     355           6 :     saxs=false;
     356             :   }
     357             : 
     358             :   std::vector<AtomNumber> atoms;
     359          56 :   parseAtomList("ATOMS",atoms);
     360          28 :   unsigned size = atoms.size();
     361             : 
     362          28 :   parseFlag("SERIAL",serial);
     363             : 
     364          28 :   bool nopbc=!pbc;
     365          28 :   parseFlag("NOPBC",nopbc);
     366          28 :   pbc=!nopbc;
     367          28 :   if(pbc) {
     368          12 :     log.printf("  using periodic boundary conditions\n");
     369             :   } else {
     370          16 :     log.printf("  without periodic boundary conditions\n");
     371             :   }
     372             : 
     373          28 :   parseFlag("GPU",gpu);
     374             : #ifndef  __PLUMED_HAS_ARRAYFIRE
     375          28 :   if(gpu) {
     376           0 :     error("To use the GPU mode PLUMED must be compiled with ARRAYFIRE");
     377             :   }
     378             : #endif
     379             : 
     380          28 :   parse("DEVICEID",deviceid);
     381             : #ifdef  __PLUMED_HAS_ARRAYFIRE
     382             :   if(gpu&&comm.Get_rank()==0) {
     383             :     // if not set try to check the one set by the API
     384             :     if(deviceid==-1) {
     385             :       deviceid=plumed.getGpuDeviceId();
     386             :     }
     387             :     // if still not set use 0
     388             :     if(deviceid==-1) {
     389             :       deviceid=0;
     390             :     }
     391             : #ifdef  __PLUMED_HAS_ARRAYFIRE_CUDA
     392             :     af::setDevice(afcu::getNativeId(deviceid));
     393             : #elif   __PLUMED_HAS_ARRAYFIRE_OCL
     394             :     af::setDevice(afcl::getNativeId(deviceid));
     395             : #else
     396             :     af::setDevice(deviceid);
     397             : #endif
     398             :     af::info();
     399             :   }
     400             : #endif
     401             : 
     402          28 :   bool atomistic=false;
     403          28 :   parseFlag("ATOMISTIC",atomistic);
     404          28 :   if(atomistic) {
     405           6 :     log.printf("  using ATOMISTIC form factors\n");
     406             :   }
     407          28 :   bool martini=false;
     408          28 :   parseFlag("MARTINI",martini);
     409          28 :   if(martini) {
     410           8 :     log.printf("  using MARTINI form factors\n");
     411             :   }
     412          28 :   onebead=false;
     413          28 :   parseFlag("ONEBEAD",onebead);
     414          28 :   if(onebead) {
     415          10 :     log.printf("  using ONEBEAD form factors\n");
     416             :   }
     417             : 
     418          28 :   if(martini&&atomistic) {
     419           0 :     error("You cannot use MARTINI and ATOMISTIC at the same time");
     420             :   }
     421          28 :   if(martini&&onebead) {
     422           0 :     error("You cannot use MARTINI and ONEBEAD at the same time");
     423             :   }
     424          28 :   if(onebead&&atomistic) {
     425           0 :     error("You cannot use ONEBEAD and ATOMISTIC at the same time");
     426             :   }
     427          28 :   if((martini)&&(!saxs)) {
     428           0 :     error("MARTINI cannot be used with SANS");
     429             :   }
     430          28 :   if((!atomistic)&&(!martini)&&(!onebead)&&(!saxs)) {
     431           0 :     error("External PARAMETERS cannot be used with SANS");
     432             :   }
     433             : 
     434             :   unsigned ntarget=0;
     435             :   for(unsigned i=0;; ++i) {
     436             :     double t_list;
     437         608 :     if( !parseNumbered( "QVALUE", i+1, t_list) ) {
     438             :       break;
     439             :     }
     440         276 :     if(t_list<=0.) {
     441           0 :       error("QVALUE cannot be less or equal to zero!\n");
     442             :     }
     443         276 :     if(onebead&&t_list>0.3) {
     444           0 :       error("ONEBEAD mapping QVALUE must be smaller or equal to 0.3");
     445             :     }
     446         276 :     q_list.push_back(t_list);
     447         276 :     ntarget++;
     448         276 :   }
     449             :   const unsigned numq = ntarget;
     450             : 
     451         304 :   for(unsigned i=0; i<numq; ++i) {
     452         276 :     if(q_list[i]==0.) {
     453           0 :       error("it is not possible to set q=0\n");
     454             :     }
     455         276 :     if(i>0&&q_list[i]<q_list[i-1]) {
     456           0 :       error("QVALUE must be in ascending order");
     457             :     }
     458         276 :     log.printf("  my q: %lf \n",q_list[i]);
     459             :   }
     460             : 
     461          28 :   rho = 0.334;
     462          28 :   parse("SOLVDENS", rho);
     463          28 :   log.printf("  Solvent density: %lf\n", rho);
     464             : 
     465          28 :   double scale_expint=1.;
     466          28 :   parse("SCALE_EXPINT",scale_expint);
     467             : 
     468          28 :   double correction = 0.00;
     469          28 :   parse("SOLVATION_CORRECTION", correction);
     470          28 :   rho_corr=rho-correction;
     471          28 :   if(onebead) {
     472          10 :     log.printf("  Solvation density contribution: %lf\n", correction);
     473             :   }
     474          28 :   if((atomistic||martini)&&(rho_corr!=rho)) {
     475           0 :     log.printf("  Solvation density contribution is taken into account in ONEBEAD only\n");
     476             :   }
     477             : 
     478          28 :   solv_stride = 100;
     479          28 :   parse("SOLVATION_STRIDE", solv_stride);
     480          28 :   if(solv_stride < 1.) {
     481           0 :     error("SOLVATION_STRIDE must be greater than 0");
     482             :   }
     483          28 :   if(onebead&&(rho_corr!=rho)) {
     484           8 :     log.printf("  SASA calculation stride: %u\n", solv_stride);
     485             :   }
     486             : 
     487          28 :   sasa_cutoff = 1.0;
     488          28 :   parse("SASA_CUTOFF", sasa_cutoff);
     489          28 :   if(sasa_cutoff <= 0.) {
     490           0 :     error("SASA_CUTOFF must be greater than 0");
     491             :   }
     492             : 
     493          28 :   deuter_conc = 0.;
     494          28 :   parse("DEUTER_CONC", deuter_conc);
     495          28 :   if(deuter_conc < 0. || deuter_conc > 1.) {
     496           0 :     error("DEUTER_CONC must be in 0-1 range");
     497             :   }
     498          28 :   if ((atomistic||onebead)&&(!saxs)) {
     499           6 :     log.printf("  Solvent deuterium fraction: %lf/1.000000\n", deuter_conc);
     500             :   }
     501             : 
     502          28 :   PDB pdb;
     503          28 :   if(onebead) {
     504             :     std::string template_name;
     505          10 :     parse("TEMPLATE",template_name);
     506          10 :     log.printf("  Template for ONEBEAD mapping conversion: %s\n", template_name.c_str());
     507          20 :     if( !pdb.read(template_name,plumed.getAtoms().usingNaturalUnits(),1.) ) {
     508           0 :       plumed_merror("missing input file " + template_name);
     509             :     }
     510             :   }
     511             : 
     512             :   // Here we perform the preliminary mapping for onebead representation
     513          28 :   if(onebead) {
     514          10 :     LCPOparam.resize(size);
     515          10 :     nres = getOnebeadMapping(pdb, atoms);
     516          10 :     if(saxs) {
     517           6 :       Iq0_vac.resize(nres);
     518           6 :       Iq0_solv.resize(nres);
     519           6 :       Iq0_mix.resize(nres);
     520             :     } else { // SANS
     521           4 :       Iq0_vac_H.resize(nres);
     522           4 :       Iq0_solv_H.resize(nres);
     523           4 :       Iq0_mix_H.resize(nres);
     524           4 :       Iq0_vac_D.resize(nres);
     525           4 :       Iq0_mix_D.resize(nres);
     526             :     }
     527          10 :     atoi.resize(nres);
     528             :   } else {
     529          18 :     atoi.resize(size);
     530             :   }
     531             : 
     532          28 :   Iq0=0;
     533             :   std::vector<std::vector<long double> > FF_tmp;
     534             :   std::vector<std::vector<long double> > FF_tmp_vac;
     535             :   std::vector<std::vector<long double> > FF_tmp_mix;
     536             :   std::vector<std::vector<long double> > FF_tmp_solv;
     537             :   std::vector<std::vector<long double> > parameter;
     538             :   // SANS
     539             :   std::vector<std::vector<long double> > FF_tmp_vac_H;
     540             :   std::vector<std::vector<long double> > FF_tmp_mix_H;
     541             :   std::vector<std::vector<long double> > FF_tmp_solv_H;
     542             :   std::vector<std::vector<long double> > FF_tmp_vac_D;
     543             :   std::vector<std::vector<long double> > FF_tmp_mix_D;
     544             :   std::vector<std::vector<long double> > parameter_H;
     545             :   std::vector<std::vector<long double> > parameter_D;
     546             : 
     547          28 :   if(!atomistic&&!martini&&!onebead) {
     548             :     // read in parameter std::vector
     549           4 :     parameter.resize(size);
     550             :     ntarget=0;
     551          36 :     for(unsigned i=0; i<size; ++i) {
     552          64 :       if( !parseNumberedVector( "PARAMETERS", i+1, parameter[i]) ) {
     553             :         break;
     554             :       }
     555          32 :       ntarget++;
     556             :     }
     557           4 :     if( ntarget!=size ) {
     558           0 :       error("found wrong number of parameter std::vectors");
     559             :     }
     560           4 :     FF_tmp.resize(numq,std::vector<long double>(size));
     561          36 :     for(unsigned i=0; i<size; ++i) {
     562          32 :       atoi[i]=i;
     563         128 :       for(unsigned k=0; k<numq; ++k) {
     564         480 :         for(unsigned j=0; j<parameter[i].size(); ++j) {
     565         384 :           FF_tmp[k][i]+= parameter[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     566             :         }
     567             :       }
     568             :     }
     569          36 :     for(unsigned i=0; i<size; ++i) {
     570          32 :       Iq0+=parameter[i][0];
     571             :     }
     572           4 :     Iq0 *= Iq0;
     573          28 :   } else if(onebead) {
     574          10 :     if(saxs) {
     575             :       // read in parameter std::vector
     576           6 :       FF_tmp_vac.resize(numq,std::vector<long double>(NONEBEAD));
     577           6 :       FF_tmp_mix.resize(numq,std::vector<long double>(NONEBEAD));
     578           6 :       FF_tmp_solv.resize(numq,std::vector<long double>(NONEBEAD));
     579           6 :       std::vector<std::vector<long double> > parameter_vac(NONEBEAD);
     580           6 :       std::vector<std::vector<long double> > parameter_mix(NONEBEAD);
     581           6 :       std::vector<std::vector<long double> > parameter_solv(NONEBEAD);
     582           6 :       getOnebeadparam(pdb, atoms, parameter_vac, parameter_mix, parameter_solv,residue_atom);
     583         204 :       for(unsigned i=0; i<NONEBEAD; ++i) {
     584        1980 :         for(unsigned k=0; k<numq; ++k) {
     585       14256 :           for(unsigned j=0; j<parameter_vac[i].size(); ++j) {
     586       12474 :             FF_tmp_vac[k][i]+= parameter_vac[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     587             :           }
     588       14256 :           for(unsigned j=0; j<parameter_mix[i].size(); ++j) {
     589       12474 :             FF_tmp_mix[k][i]+= parameter_mix[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     590             :           }
     591       14256 :           for(unsigned j=0; j<parameter_solv[i].size(); ++j) {
     592       12474 :             FF_tmp_solv[k][i]+= parameter_solv[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     593             :           }
     594             :         }
     595             :       }
     596        1294 :       for(unsigned i=0; i<nres; ++i) {
     597        1288 :         Iq0_vac[i]=parameter_vac[atoi[i]][0];
     598        1288 :         Iq0_mix[i]=parameter_mix[atoi[i]][0];
     599        1288 :         Iq0_solv[i]=parameter_solv[atoi[i]][0];
     600             :       }
     601           6 :     } else { // SANS
     602             :       // read in parameter std::vector
     603           4 :       FF_tmp_vac_H.resize(numq,std::vector<long double>(NONEBEAD));
     604           4 :       FF_tmp_mix_H.resize(numq,std::vector<long double>(NONEBEAD));
     605           4 :       FF_tmp_solv_H.resize(numq,std::vector<long double>(NONEBEAD));
     606           4 :       FF_tmp_vac_D.resize(numq,std::vector<long double>(NONEBEAD));
     607           4 :       FF_tmp_mix_D.resize(numq,std::vector<long double>(NONEBEAD));
     608           4 :       std::vector<std::vector<long double> > parameter_vac_H(NONEBEAD);
     609           4 :       std::vector<std::vector<long double> > parameter_mix_H(NONEBEAD);
     610           4 :       std::vector<std::vector<long double> > parameter_solv_H(NONEBEAD);
     611           4 :       std::vector<std::vector<long double> > parameter_vac_D(NONEBEAD);
     612           4 :       std::vector<std::vector<long double> > parameter_mix_D(NONEBEAD);
     613           4 :       getOnebeadparam_sansH(pdb, atoms, parameter_vac_H, parameter_mix_H, parameter_solv_H);
     614           4 :       getOnebeadparam_sansD(pdb, atoms, parameter_vac_D, parameter_mix_D);
     615         136 :       for(unsigned i=0; i<NONEBEAD; ++i) {
     616        1320 :         for(unsigned k=0; k<numq; ++k) {
     617        9504 :           for(unsigned j=0; j<parameter_vac_H[i].size(); ++j) { // same number of parameters
     618        8316 :             FF_tmp_vac_H[k][i]+= parameter_vac_H[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     619        8316 :             FF_tmp_vac_D[k][i]+= parameter_vac_D[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     620             :           }
     621        9504 :           for(unsigned j=0; j<parameter_mix_H[i].size(); ++j) {
     622        8316 :             FF_tmp_mix_H[k][i]+= parameter_mix_H[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     623        8316 :             FF_tmp_mix_D[k][i]+= parameter_mix_D[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     624             :           }
     625        9504 :           for(unsigned j=0; j<parameter_solv_H[i].size(); ++j) {
     626        8316 :             FF_tmp_solv_H[k][i]+= parameter_solv_H[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     627             :           }
     628             :         }
     629             :       }
     630         880 :       for(unsigned i=0; i<nres; ++i) {
     631         876 :         Iq0_vac_H[i]=parameter_vac_H[atoi[i]][0];
     632         876 :         Iq0_mix_H[i]=parameter_mix_H[atoi[i]][0];
     633         876 :         Iq0_solv_H[i]=parameter_solv_H[atoi[i]][0];
     634         876 :         Iq0_vac_D[i]=parameter_vac_D[atoi[i]][0];
     635         876 :         Iq0_mix_D[i]=parameter_mix_D[atoi[i]][0];
     636             :       }
     637           4 :     }
     638          14 :   } else if(martini) {
     639             :     // read in parameter std::vector
     640           8 :     FF_tmp.resize(numq,std::vector<long double>(NMARTINI));
     641           8 :     parameter.resize(NMARTINI);
     642           8 :     getMartiniFFparam(atoms, parameter);
     643        1072 :     for(unsigned i=0; i<NMARTINI; ++i) {
     644       17024 :       for(unsigned k=0; k<numq; ++k) {
     645      127680 :         for(unsigned j=0; j<parameter[i].size(); ++j) {
     646      111720 :           FF_tmp[k][i]+= parameter[i][j]*std::pow(static_cast<long double>(q_list[k]),j);
     647             :         }
     648             :       }
     649             :     }
     650        8400 :     for(unsigned i=0; i<size; ++i) {
     651        8392 :       Iq0+=parameter[atoi[i]][0];
     652             :     }
     653           8 :     Iq0 *= Iq0;
     654           6 :   } else if(atomistic) {
     655           6 :     FF_tmp.resize(numq,std::vector<long double>(NTT));
     656           6 :     if(saxs) {
     657           4 :       Iq0=calculateAFF(atoms, FF_tmp, rho);
     658             :     } else {
     659           2 :       Iq0=calculateAFFsans(atoms, FF_tmp, deuter_conc);
     660             :     }
     661           6 :     Iq0 *= Iq0;
     662             :   }
     663             : 
     664             :   std::vector<double> expint;
     665          28 :   expint.resize( numq );
     666             :   ntarget=0;
     667         160 :   for(unsigned i=0; i<numq; ++i) {
     668         296 :     if( !parseNumbered( "EXPINT", i+1, expint[i] ) ) {
     669             :       break;
     670             :     }
     671         132 :     ntarget++;
     672             :   }
     673         160 :   std::transform(expint.begin(), expint.begin() + ntarget, expint.begin(), [scale_expint](double x) {
     674         132 :     return x / scale_expint;
     675             :   });
     676             :   bool exp=false;
     677          28 :   if(ntarget!=numq && ntarget!=0) {
     678           0 :     error("found wrong number of EXPINT values");
     679             :   }
     680          28 :   if(ntarget==numq) {
     681             :     exp=true;
     682             :   }
     683          28 :   if(getDoScore()&&!exp) {
     684           0 :     error("with DOSCORE you need to set the EXPINT values");
     685             :   }
     686             : 
     687          28 :   if(!gpu) {
     688          28 :     FF_rank.resize(numq);
     689             :     unsigned n_atom_types;
     690          28 :     if(onebead) {
     691          10 :       FF_value.resize(nres,std::vector<double>(numq));
     692             :       n_atom_types=NONEBEAD;
     693          10 :       if(saxs) {
     694           6 :         FF_value_vacuum.resize(n_atom_types,std::vector<double>(numq));
     695           6 :         FF_value_solv.resize(n_atom_types,std::vector<double>(numq));
     696          12 :         FF_value_mixed.resize(n_atom_types,std::vector<double>(numq));
     697             :       } else {
     698           4 :         FF_value_vacuum_H.resize(n_atom_types,std::vector<double>(numq));
     699           4 :         FF_value_solv_H.resize(n_atom_types,std::vector<double>(numq));
     700           4 :         FF_value_mixed_H.resize(n_atom_types,std::vector<double>(numq));
     701           4 :         FF_value_vacuum_D.resize(n_atom_types,std::vector<double>(numq));
     702           8 :         FF_value_mixed_D.resize(n_atom_types,std::vector<double>(numq));
     703             :       }
     704             :     } else {
     705          36 :       FF_value.resize(size,std::vector<double>(numq));
     706             :     }
     707         304 :     for(unsigned k=0; k<numq; ++k) {
     708         276 :       if(!onebead) {
     709      316710 :         for(unsigned i=0; i<size; ++i) {
     710      316524 :           FF_value[i][k] = static_cast<double>(FF_tmp[k][atoi[i]])/(std::sqrt(Iq0));
     711             :         }
     712      316710 :         for(unsigned i=0; i<size; ++i) {
     713      316524 :           FF_rank[k] += FF_value[i][k]*FF_value[i][k];
     714             :         }
     715             :       } else {
     716          90 :         if(saxs) {
     717        1836 :           for(unsigned i=0; i<n_atom_types; ++i) {
     718        1782 :             FF_value_vacuum[i][k] = static_cast<double>(FF_tmp_vac[k][i]);
     719        1782 :             FF_value_mixed[i][k] = static_cast<double>(FF_tmp_mix[k][i]);
     720        1782 :             FF_value_solv[i][k] = static_cast<double>(FF_tmp_solv[k][i]);
     721             :           }
     722             :         } else { // SANS
     723        1224 :           for(unsigned i=0; i<n_atom_types; ++i) {
     724        1188 :             FF_value_vacuum_H[i][k] = static_cast<double>(FF_tmp_vac_H[k][i]);
     725        1188 :             FF_value_mixed_H[i][k] = static_cast<double>(FF_tmp_mix_H[k][i]);
     726        1188 :             FF_value_solv_H[i][k] = static_cast<double>(FF_tmp_solv_H[k][i]);
     727        1188 :             FF_value_vacuum_D[i][k] = static_cast<double>(FF_tmp_vac_D[k][i]);
     728        1188 :             FF_value_mixed_D[i][k] = static_cast<double>(FF_tmp_mix_D[k][i]);
     729             :           }
     730             :         }
     731             :       }
     732             :     }
     733             :   } else {
     734             :     unsigned n_atom_types;
     735           0 :     if(onebead) {
     736           0 :       FFf_value.resize(numq,std::vector<float>(nres));
     737             :       n_atom_types=NONEBEAD;
     738           0 :       if(saxs) {
     739           0 :         FF_value_vacuum.resize(n_atom_types,std::vector<double>(numq));
     740           0 :         FF_value_solv.resize(n_atom_types,std::vector<double>(numq));
     741           0 :         FF_value_mixed.resize(n_atom_types,std::vector<double>(numq));
     742             :       } else { // SANS
     743           0 :         FF_value_vacuum_H.resize(n_atom_types,std::vector<double>(numq));
     744           0 :         FF_value_solv_H.resize(n_atom_types,std::vector<double>(numq));
     745           0 :         FF_value_mixed_H.resize(n_atom_types,std::vector<double>(numq));
     746           0 :         FF_value_vacuum_D.resize(n_atom_types,std::vector<double>(numq));
     747           0 :         FF_value_mixed_D.resize(n_atom_types,std::vector<double>(numq));
     748             :       }
     749             :     } else {
     750           0 :       FFf_value.resize(numq,std::vector<float>(size));
     751             :     }
     752           0 :     for(unsigned k=0; k<numq; ++k) {
     753           0 :       if(!onebead) {
     754           0 :         for(unsigned i=0; i<size; ++i) {
     755           0 :           FFf_value[k][i] = static_cast<float>(FF_tmp[k][atoi[i]])/(std::sqrt(Iq0));
     756             :         }
     757             :       } else {
     758           0 :         if(saxs) {
     759           0 :           for(unsigned i=0; i<n_atom_types; ++i) {
     760           0 :             FF_value_vacuum[i][k] = static_cast<double>(FF_tmp_vac[k][i]);
     761           0 :             FF_value_mixed[i][k] = static_cast<double>(FF_tmp_mix[k][i]);
     762           0 :             FF_value_solv[i][k] = static_cast<double>(FF_tmp_solv[k][i]);
     763             :           }
     764             :         } else { // SANS
     765           0 :           for(unsigned i=0; i<n_atom_types; ++i) {
     766           0 :             FF_value_vacuum_H[i][k] = static_cast<double>(FF_tmp_vac_H[k][i]);
     767           0 :             FF_value_mixed_H[i][k] = static_cast<double>(FF_tmp_mix_H[k][i]);
     768           0 :             FF_value_solv_H[i][k] = static_cast<double>(FF_tmp_solv_H[k][i]);
     769           0 :             FF_value_vacuum_D[i][k] = static_cast<double>(FF_tmp_vac_D[k][i]);
     770           0 :             FF_value_mixed_D[i][k] = static_cast<double>(FF_tmp_mix_D[k][i]);
     771             :           }
     772             :         }
     773             :       }
     774             :     }
     775             :   }
     776             : 
     777          28 :   if(!getDoScore()) {
     778         224 :     for(unsigned i=0; i<numq; ++i) {
     779             :       std::string num;
     780         204 :       Tools::convert(i,num);
     781         204 :       addComponentWithDerivatives("q-"+num);
     782         408 :       componentIsNotPeriodic("q-"+num);
     783             :     }
     784          20 :     if(exp) {
     785          64 :       for(unsigned i=0; i<numq; ++i) {
     786             :         std::string num;
     787          60 :         Tools::convert(i,num);
     788          60 :         addComponent("exp-"+num);
     789          60 :         componentIsNotPeriodic("exp-"+num);
     790          60 :         Value* comp=getPntrToComponent("exp-"+num);
     791          60 :         comp->set(expint[i]);
     792             :       }
     793             :     }
     794             :   } else {
     795          80 :     for(unsigned i=0; i<numq; ++i) {
     796             :       std::string num;
     797          72 :       Tools::convert(i,num);
     798          72 :       addComponent("q-"+num);
     799         144 :       componentIsNotPeriodic("q-"+num);
     800             :     }
     801          80 :     for(unsigned i=0; i<numq; ++i) {
     802             :       std::string num;
     803          72 :       Tools::convert(i,num);
     804          72 :       addComponent("exp-"+num);
     805          72 :       componentIsNotPeriodic("exp-"+num);
     806          72 :       Value* comp=getPntrToComponent("exp-"+num);
     807          72 :       comp->set(expint[i]);
     808             :     }
     809             :   }
     810             : 
     811             :   // convert units to nm^-1
     812         304 :   for(unsigned i=0; i<numq; ++i) {
     813         276 :     q_list[i]=q_list[i]*10.0;    // factor 10 to convert from A^-1 to nm^-1
     814             :   }
     815          28 :   log<<"  Bibliography ";
     816          28 :   if(martini) {
     817          16 :     log<<plumed.cite("Niebling, Björling, Westenhoff, J Appl Crystallogr 47, 1190–1198 (2014).");
     818          16 :     log<<plumed.cite("Paissoni, Jussupow, Camilloni, J Appl Crystallogr 52, 394-402 (2019).");
     819             :   }
     820          28 :   if(atomistic) {
     821          12 :     log<<plumed.cite("Fraser, MacRae, Suzuki, J. Appl. Crystallogr., 11, 693–694 (1978).");
     822          12 :     log<<plumed.cite("Brown, Fox, Maslen, O'Keefe, Willis, International Tables for Crystallography C, 554–595 (International Union of Crystallography, 2006).");
     823             :   }
     824             : 
     825          56 :   log<< plumed.cite("Bonomi, Camilloni, Bioinformatics, 33, 3999 (2017)");
     826          28 :   log<<"\n";
     827             : 
     828          28 :   requestAtoms(atoms, false);
     829             : 
     830          28 :   if(getDoScore()) {
     831           8 :     setParameters(expint);
     832           8 :     Initialise(numq);
     833             :   }
     834          28 :   setDerivatives();
     835          28 :   checkRead();
     836          56 : }
     837             : 
     838             : // calculates SASA neighbor list
     839           8 : void SAXS::calcNlist(std::vector<std::vector<int> > &Nlist) {
     840             :   unsigned natoms = getNumberOfAtoms();
     841       28596 :   for(unsigned i = 0; i < natoms; ++i) {
     842       28588 :     if (LCPOparam[i].size()>0) {
     843    24279400 :       for (unsigned j = 0; j < i; ++j) {
     844    24266020 :         if (LCPOparam[j].size()>0) {
     845    11213664 :           double Delta_ij_mod = modulo(delta(getPosition(i), getPosition(j)))*10.;
     846    11213664 :           double overlapD = LCPOparam[i][0]+LCPOparam[j][0];
     847    11213664 :           if(Delta_ij_mod < overlapD) {
     848      259140 :             Nlist.at(i).push_back(j);
     849      259140 :             Nlist.at(j).push_back(i);
     850             :           }
     851             :         }
     852             :       }
     853             :     }
     854             :   }
     855             : 
     856           8 : }
     857             : 
     858             : // calculates SASA according to LCPO algorithm
     859           8 : void SAXS::sasa_calculate(std::vector<bool> &solv_res) {
     860             :   unsigned natoms = getNumberOfAtoms();
     861           8 :   std::vector<std::vector<int> > Nlist(natoms);
     862           8 :   calcNlist(Nlist);
     863           8 :   std::vector<double> sasares(nres, 0.);
     864       28596 :   for(unsigned i = 0; i < natoms; ++i) {
     865       28588 :     if(LCPOparam[i].size()>1) {
     866       13380 :       if(LCPOparam[i][1]>0.0) {
     867             :         double Aij = 0.0;
     868             :         double Aijk = 0.0;
     869             :         double Ajk = 0.0;
     870       13380 :         double ri = LCPOparam[i][0];
     871       13380 :         double S1 = 4.*M_PI*ri*ri;
     872      531660 :         for (unsigned j = 0; j < Nlist[i].size(); ++j) {
     873      518280 :           double d_ij = modulo(delta( getPosition(i), getPosition(Nlist[i][j]) ))*10.;
     874      518280 :           double rj = LCPOparam[Nlist[i][j]][0];
     875      518280 :           double Aijt = (2.*M_PI*ri*(ri-d_ij/2.-((ri*ri-rj*rj)/(2.*d_ij))));
     876             :           double Ajkt = 0.0;
     877    22258568 :           for (unsigned k = 0; k < Nlist[Nlist[i][j]].size(); ++k) {
     878    21740288 :             if (std::find (Nlist[i].begin(), Nlist[i].end(), Nlist[Nlist[i][j]][k]) !=  Nlist[i].end()) {
     879    11186016 :               double d_jk = modulo(delta( getPosition(Nlist[i][j]), getPosition(Nlist[Nlist[i][j]][k]) ))*10.;
     880    11186016 :               double rk = LCPOparam[Nlist[Nlist[i][j]][k]][0];
     881    11186016 :               double sjk =  (2.*M_PI*rj*(rj-d_jk/2.-((rj*rj-rk*rk)/(2.*d_jk))));
     882    11186016 :               Ajkt += sjk;
     883             :             }
     884             :           }
     885      518280 :           Aijk += (Aijt * Ajkt);
     886      518280 :           Aij += Aijt;
     887      518280 :           Ajk += Ajkt;
     888             :         }
     889       13380 :         double sasai = (LCPOparam[i][1]*S1+LCPOparam[i][2]*Aij+LCPOparam[i][3]*Ajk+LCPOparam[i][4]*Aijk);
     890       13380 :         if (sasai > 0 ) {
     891       10420 :           sasares[residue_atom[i]] += sasai/100.;
     892             :         }
     893             :       }
     894             :     }
     895             :   }
     896        1760 :   for(unsigned i=0; i<nres; ++i) {
     897        1752 :     if(sasares[i]>sasa_cutoff) {
     898             :       solv_res[i] = 1;
     899             :     } else {
     900             :       solv_res[i] = 0;
     901             :     }
     902             :   }
     903           8 : }
     904             : 
     905           0 : void SAXS::calculate_gpu(std::vector<Vector> &pos, std::vector<Vector> &deriv) {
     906             : #ifdef __PLUMED_HAS_ARRAYFIRE
     907             :   unsigned size;
     908             :   if(onebead) {
     909             :     size = nres;
     910             :   } else {
     911             :     size = getNumberOfAtoms();
     912             :   }
     913             :   const unsigned numq = q_list.size();
     914             : 
     915             :   std::vector<float> sum;
     916             :   sum.resize(numq);
     917             : 
     918             :   std::vector<float> dd;
     919             :   dd.resize(size*3*numq);
     920             : 
     921             :   // on gpu only the master rank run the calculation
     922             :   if(comm.Get_rank()==0) {
     923             :     std::vector<float> posi;
     924             :     posi.resize(3*size);
     925             :     #pragma omp parallel for num_threads(OpenMP::getNumThreads())
     926             :     for (unsigned i=0; i<size; ++i) {
     927             :       const Vector tmp = pos[i];
     928             :       posi[3*i]   = static_cast<float>(tmp[0]);
     929             :       posi[3*i+1] = static_cast<float>(tmp[1]);
     930             :       posi[3*i+2] = static_cast<float>(tmp[2]);
     931             :     }
     932             : 
     933             :     // create array a and b containing atomic coordinates
     934             : #ifdef  __PLUMED_HAS_ARRAYFIRE_CUDA
     935             :     af::setDevice(afcu::getNativeId(deviceid));
     936             : #elif   __PLUMED_HAS_ARRAYFIRE_OCL
     937             :     af::setDevice(afcl::getNativeId(deviceid));
     938             : #else
     939             :     af::setDevice(deviceid);
     940             : #endif
     941             :     // 3,size,1,1
     942             :     af::array pos_a = af::array(3, size, &posi.front());
     943             :     // size,3,1,1
     944             :     pos_a = af::moddims(pos_a.T(), size, 3, 1);
     945             :     // size,3,1,1
     946             :     af::array pos_b = pos_a(af::span, af::span);
     947             :     // size,1,3,1
     948             :     pos_a = af::moddims(pos_a, size, 1, 3);
     949             :     // 1,size,3,1
     950             :     pos_b = af::moddims(pos_b, 1, size, 3);
     951             : 
     952             :     // size,size,3,1
     953             :     af::array pos_a_t = af::tile(pos_a, 1, size, 1);
     954             :     // size,size,3,1: for some reason we need this
     955             :     pos_a_t = af::moddims(pos_a_t, size, size, 3);
     956             :     // size,size,3,1
     957             :     af::array pos_b_t = af::tile(pos_b, size, 1, 1);
     958             :     // size,size,3,1: for some reason we need this
     959             :     pos_b_t = af::moddims(pos_b_t, size, size, 3);
     960             :     // size,size,3,1
     961             :     af::array xyz_dist = pos_a_t - pos_b_t;
     962             :     // size,size,1,1
     963             :     af::array square = af::sum(xyz_dist*xyz_dist,2);
     964             :     // size,size,1,1
     965             :     af::array dist_sqrt = af::sqrt(square);
     966             :     // replace the zero of square with one to avoid nan in the derivatives (the number does not matter because this are multiplied by zero)
     967             :     af::replace(square,!(af::iszero(square)),1.);
     968             :     // size,size,3,1
     969             :     xyz_dist = xyz_dist / af::tile(square, 1, 1, 3);
     970             :     // numq,1,1,1
     971             :     af::array sum_device   = af::constant(0, numq, f32);
     972             :     // numq,size,3,1
     973             :     af::array deriv_device = af::constant(0, numq, size, 3, f32);
     974             : 
     975             :     for (unsigned k=0; k<numq; ++k) {
     976             :       // calculate FF matrix
     977             :       // size,1,1,1
     978             :       af::array AFF_value(size, &FFf_value[k].front());
     979             :       // size,size,1,1
     980             :       af::array FFdist_mod = af::tile(AFF_value(af::span), 1, size)*af::transpose(af::tile(AFF_value(af::span), 1, size));
     981             : 
     982             :       // get q
     983             :       const float qvalue = static_cast<float>(q_list[k]);
     984             :       // size,size,1,1
     985             :       af::array dist_q = qvalue*dist_sqrt;
     986             :       // size,size,1
     987             :       af::array dist_sin = af::sin(dist_q)/dist_q;
     988             :       af::replace(dist_sin,!(af::isNaN(dist_sin)),1.);
     989             :       // 1,1,1,1
     990             :       sum_device(k) = af::sum(af::flat(dist_sin)*af::flat(FFdist_mod));
     991             : 
     992             :       // size,size,1,1
     993             :       af::array tmp = FFdist_mod*(dist_sin - af::cos(dist_q));
     994             :       // size,size,3,1
     995             :       af::array dd_all = af::tile(tmp, 1, 1, 3)*xyz_dist;
     996             :       // it should become 1,size,3
     997             :       deriv_device(k, af::span, af::span) = af::sum(dd_all,0);
     998             :     }
     999             : 
    1000             :     // read out results
    1001             :     sum_device.host(&sum.front());
    1002             : 
    1003             :     deriv_device = af::reorder(deriv_device, 2, 1, 0);
    1004             :     deriv_device = af::flat(deriv_device);
    1005             :     deriv_device.host(&dd.front());
    1006             :   }
    1007             : 
    1008             :   comm.Bcast(dd, 0);
    1009             :   comm.Bcast(sum, 0);
    1010             : 
    1011             :   for(unsigned k=0; k<numq; ++k) {
    1012             :     std::string num;
    1013             :     Tools::convert(k,num);
    1014             :     Value* val=getPntrToComponent("q-"+num);
    1015             :     val->set(sum[k]);
    1016             :     if(getDoScore()) {
    1017             :       setCalcData(k, sum[k]);
    1018             :     }
    1019             :     for(unsigned i=0; i<size; ++i) {
    1020             :       const unsigned di = k*size*3+i*3;
    1021             :       deriv[k*size+i] = Vector(2.*dd[di+0],2.*dd[di+1],2.*dd[di+2]);
    1022             :     }
    1023             :   }
    1024             : #endif
    1025           0 : }
    1026             : 
    1027         188 : void SAXS::calculate_cpu(std::vector<Vector> &pos, std::vector<Vector> &deriv) {
    1028             :   unsigned size;
    1029         188 :   if(onebead) {
    1030          10 :     size = nres;
    1031             :   } else {
    1032             :     size = getNumberOfAtoms();
    1033             :   }
    1034         188 :   const unsigned numq = q_list.size();
    1035             : 
    1036         188 :   unsigned stride = comm.Get_size();
    1037         188 :   unsigned rank   = comm.Get_rank();
    1038         188 :   if(serial) {
    1039             :     stride = 1;
    1040             :     rank   = 0;
    1041             :   }
    1042         188 :   std::vector<double> sum(numq,0);
    1043         188 :   unsigned nt=OpenMP::getNumThreads();
    1044         188 :   #pragma omp parallel num_threads(nt)
    1045             :   {
    1046             :     std::vector<Vector> omp_deriv(deriv.size());
    1047             :     std::vector<double> omp_sum(numq,0);
    1048             :     #pragma omp for nowait
    1049             :     for (unsigned i=rank; i<size-1; i+=stride) {
    1050             :       Vector posi = pos[i];
    1051             :       for (unsigned j=i+1; j<size ; ++j) {
    1052             :         Vector c_distances = delta(posi,pos[j]);
    1053             :         double m_distances = c_distances.modulo();
    1054             :         c_distances = c_distances/m_distances/m_distances;
    1055             :         for (unsigned k=0; k<numq; ++k) {
    1056             :           unsigned kdx=k*size;
    1057             :           double qdist = q_list[k]*m_distances;
    1058             :           double FFF = 2.*FF_value[i][k]*FF_value[j][k];
    1059             :           double tsq = std::sin(qdist)/qdist;
    1060             :           double tcq = std::cos(qdist);
    1061             :           double tmp = FFF*(tcq-tsq);
    1062             :           Vector dd  = c_distances*tmp;
    1063             :           if(nt>1) {
    1064             :             omp_deriv[kdx+i] -=dd;
    1065             :             omp_deriv[kdx+j] +=dd;
    1066             :             omp_sum[k] += FFF*tsq;
    1067             :           } else {
    1068             :             deriv[kdx+i] -= dd;
    1069             :             deriv[kdx+j] += dd;
    1070             :             sum[k] += FFF*tsq;
    1071             :           }
    1072             :         }
    1073             :       }
    1074             :     }
    1075             :     #pragma omp critical
    1076             :     if(nt>1) {
    1077             :       for(unsigned i=0; i<deriv.size(); ++i) {
    1078             :         deriv[i]+=omp_deriv[i];
    1079             :       }
    1080             :       for(unsigned k=0; k<numq; ++k) {
    1081             :         sum[k]+=omp_sum[k];
    1082             :       }
    1083             :     }
    1084             :   }
    1085             : 
    1086         188 :   if(!serial) {
    1087         186 :     comm.Sum(&deriv[0][0], 3*deriv.size());
    1088         186 :     comm.Sum(&sum[0], numq);
    1089             :   }
    1090             : 
    1091        1904 :   for (unsigned k=0; k<numq; ++k) {
    1092        1716 :     sum[k]+=FF_rank[k];
    1093             :     std::string num;
    1094        1716 :     Tools::convert(k,num);
    1095        1716 :     Value* val=getPntrToComponent("q-"+num);
    1096        1716 :     val->set(sum[k]);
    1097        1716 :     if(getDoScore()) {
    1098        1512 :       setCalcData(k, sum[k]);
    1099             :     }
    1100             :   }
    1101         188 : }
    1102             : 
    1103         188 : void SAXS::calculate() {
    1104         188 :   if(pbc) {
    1105         172 :     makeWhole();
    1106             :   }
    1107             : 
    1108         188 :   const size_t size = getNumberOfAtoms();
    1109             :   const size_t numq = q_list.size();
    1110             : 
    1111             :   // these are the derivatives associated to the coarse graining
    1112         188 :   std::vector<Vector> aa_deriv(size);
    1113             : 
    1114             :   size_t beads_size = size;
    1115         188 :   if(onebead) {
    1116          10 :     beads_size = nres;
    1117             :   }
    1118             :   // these are the derivatives particle,q
    1119         188 :   std::vector<Vector> bd_deriv(numq*beads_size);
    1120             : 
    1121         188 :   std::vector<Vector> beads_pos(beads_size);
    1122         188 :   if(onebead) {
    1123        2174 :     for(unsigned resid=0; resid<nres; resid++) {
    1124             :       double sum_mass = 0.;
    1125        2164 :       Vector sum_pos = Vector(0,0,0);
    1126     7693792 :       for(unsigned atom_id=0; atom_id<size; atom_id++) {
    1127     7691628 :         if(residue_atom[atom_id] == resid) {
    1128       35466 :           aa_deriv[atom_id] = Vector(atoms_masses[atom_id],atoms_masses[atom_id],atoms_masses[atom_id]);
    1129       35466 :           sum_pos += atoms_masses[atom_id] * getPosition(atom_id); // getPosition(first_atom+atom_id)
    1130       35466 :           sum_mass += atoms_masses[atom_id];
    1131             :         }
    1132             :       }
    1133        2164 :       beads_pos[resid] = sum_pos/sum_mass;
    1134     7693792 :       for(unsigned atom_id=0; atom_id<size; atom_id++) {
    1135     7691628 :         if(residue_atom[atom_id] == resid) {
    1136       35466 :           aa_deriv[atom_id] /= sum_mass;
    1137             :         }
    1138             :       }
    1139             :     }
    1140             :     // SASA
    1141          10 :     std::vector<bool> solv_res(nres, 0);
    1142          10 :     if(saxs) {
    1143           6 :       if(getStep()%solv_stride == 0 || isFirstStep) {
    1144           6 :         isFirstStep = 0;
    1145           6 :         if(rho_corr!=rho) {
    1146           4 :           sasa_calculate(solv_res);
    1147             :         }
    1148           6 :         Iq0=0.;
    1149        1294 :         for(unsigned i=0; i<nres; ++i) {
    1150        1288 :           if(solv_res[i] == 1 ) {
    1151         182 :             Iq0 += std::sqrt((Iq0_vac[i]+(rho_corr*rho_corr)*Iq0_solv[i]-rho_corr*Iq0_mix[i]));
    1152             :           } else {
    1153        1106 :             Iq0 += std::sqrt((Iq0_vac[i]+(rho*rho)*Iq0_solv[i]-rho*Iq0_mix[i]));
    1154             :           }
    1155             :         }
    1156             :         // Form Factors
    1157          60 :         for(unsigned k=0; k<numq; ++k) {
    1158       11646 :           for(unsigned i=0; i<nres; ++i) {
    1159       11592 :             if(!gpu) {
    1160       11592 :               if(solv_res[i] == 0) { // buried
    1161        9954 :                 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;
    1162             :               } else { // surface
    1163        1638 :                 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;
    1164             :               }
    1165             :             } else {
    1166           0 :               if(solv_res[i] == 0) { // buried
    1167           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);
    1168             :               } else { // surface
    1169           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);
    1170             :               }
    1171             :             }
    1172             :           }
    1173             :         }
    1174           6 :         if(!gpu) {
    1175          60 :           for(unsigned k=0; k<numq; ++k) {
    1176          54 :             FF_rank[k]=0.;
    1177       11646 :             for(unsigned i=0; i<nres; ++i) {
    1178       11592 :               FF_rank[k]+=FF_value[i][k]*FF_value[i][k];
    1179             :             }
    1180             :           }
    1181             :         }
    1182             :       }
    1183             :     } else { // SANS
    1184           4 :       std::vector<bool> deut_res(nres, 0);
    1185           4 :       double solv_sc_length = 0.1*(0.580 + 2.*((1. - deuter_conc) * (-0.374) + deuter_conc * 0.667)); // per water electron (10 electrons)
    1186           4 :       double rho_sans = rho * solv_sc_length;
    1187           4 :       double rho_sans_corr = rho_corr * solv_sc_length;
    1188           4 :       if(getStep()%solv_stride == 0 || isFirstStep) {
    1189           4 :         isFirstStep = 0;
    1190           4 :         if(deuter_conc!=0.||rho != rho_corr) {
    1191           4 :           sasa_calculate(solv_res);
    1192             :         }
    1193           4 :         Iq0=0.;
    1194         880 :         for(unsigned i=0; i<nres; ++i) {
    1195         876 :           if(solv_res[i] == 1 ) {
    1196         182 :             if(rand()/RAND_MAX<deuter_conc) {
    1197           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]));
    1198             :               deut_res[i] = 1;
    1199             :             } else {
    1200         182 :               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]));
    1201             :             }
    1202             :           } else {
    1203         694 :             Iq0 += std::sqrt(std::fabs(Iq0_vac_H[i] + rho_sans*rho_sans*Iq0_solv_H[i] - rho_sans*Iq0_mix_H[i]));
    1204             :           }
    1205             :         }
    1206             :         // Form Factors
    1207          40 :         for(unsigned k=0; k<numq; ++k) {
    1208        7920 :           for(unsigned i=0; i<nres; ++i) {
    1209        7884 :             if(!gpu) {
    1210        7884 :               if(solv_res[i] == 0) { // hydrogen
    1211        6246 :                 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;
    1212             :               } else {
    1213        1638 :                 if(deut_res[i] == 0) {
    1214        1638 :                   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;
    1215             :                 } else {
    1216           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;
    1217             :                 }
    1218             :               }
    1219             :             } else {
    1220           0 :               if(solv_res[i] == 0) { // hydrogen
    1221           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);
    1222             :               } else {
    1223           0 :                 if(deut_res[i] == 0) {
    1224           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);
    1225             :                 } else {
    1226           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);
    1227             :                 }
    1228             :               }
    1229             :             }
    1230             :           }
    1231             :         }
    1232           4 :         if(!gpu) {
    1233          40 :           for(unsigned k=0; k<numq; ++k) {
    1234          36 :             FF_rank[k]=0.;
    1235        7920 :             for(unsigned i=0; i<nres; ++i) {
    1236        7884 :               FF_rank[k]+=FF_value[i][k]*FF_value[i][k];
    1237             :             }
    1238             :           }
    1239             :         }
    1240             :       }
    1241             :     }
    1242             :     // not ONEBEAD
    1243             :   } else {
    1244       58814 :     for(unsigned i=0; i<size; ++i) {
    1245       58636 :       beads_pos[i] = getPosition(i);
    1246             :     }
    1247         356 :     aa_deriv = std::vector<Vector>(size,(Vector(1,1,1)));
    1248             :   }
    1249             : 
    1250         188 :   if(gpu) {
    1251           0 :     calculate_gpu(beads_pos, bd_deriv);
    1252             :   } else {
    1253         188 :     calculate_cpu(beads_pos, bd_deriv);
    1254             :   }
    1255             : 
    1256         188 :   if(getDoScore()) {
    1257             :     /* Metainference */
    1258         168 :     double score = getScore();
    1259             :     setScore(score);
    1260             :   }
    1261             : 
    1262        1904 :   for (unsigned k=0; k<numq; ++k) {
    1263        1716 :     const unsigned kdx=k*beads_size;
    1264        1716 :     Tensor deriv_box;
    1265             :     Value* val;
    1266        1716 :     if(!getDoScore()) {
    1267             :       std::string num;
    1268         204 :       Tools::convert(k,num);
    1269         204 :       val=getPntrToComponent("q-"+num);
    1270             : 
    1271         204 :       if(onebead) {
    1272             :         unsigned atom_id=0;
    1273       19566 :         for(unsigned i=0; i<beads_size; ++i) {
    1274      338670 :           for(unsigned j=0; j<atoms_per_bead[i]; ++j) {
    1275      319194 :             setAtomsDerivatives(val, atom_id, Vector(aa_deriv[atom_id][0]*bd_deriv[kdx+i][0], \
    1276      319194 :                                 aa_deriv[atom_id][1]*bd_deriv[kdx+i][1], \
    1277      319194 :                                 aa_deriv[atom_id][2]*bd_deriv[kdx+i][2]) );
    1278      319194 :             deriv_box += Tensor(getPosition(atom_id),Vector(aa_deriv[atom_id][0]*bd_deriv[kdx+i][0], \
    1279      319194 :                                 aa_deriv[atom_id][1]*bd_deriv[kdx+i][1], \
    1280      638388 :                                 aa_deriv[atom_id][2]*bd_deriv[kdx+i][2]) );
    1281      319194 :             atom_id++;
    1282             :           }
    1283             :         }
    1284             :       } else {
    1285      295242 :         for(unsigned i=0; i<beads_size; ++i) {
    1286      295128 :           setAtomsDerivatives(val, i, Vector(bd_deriv[kdx+i][0], \
    1287      295128 :                                              bd_deriv[kdx+i][1], \
    1288      295128 :                                              bd_deriv[kdx+i][2]) );
    1289      590256 :           deriv_box += Tensor(getPosition(i),Vector(bd_deriv[kdx+i][0], \
    1290      295128 :                               bd_deriv[kdx+i][1], \
    1291      590256 :                               bd_deriv[kdx+i][2]) );
    1292             :         }
    1293             :       }
    1294             :     } else {
    1295        1512 :       val=getPntrToComponent("score");
    1296        1512 :       if(onebead) {
    1297             :         unsigned atom_id=0;
    1298           0 :         for(unsigned i=0; i<beads_size; ++i) {
    1299           0 :           for(unsigned j=0; j<atoms_per_bead[i]; ++j) {
    1300           0 :             setAtomsDerivatives(val, atom_id, Vector(aa_deriv[atom_id][0]*bd_deriv[kdx+i][0]*getMetaDer(k),
    1301           0 :                                 aa_deriv[atom_id][1]*bd_deriv[kdx+i][1]*getMetaDer(k),
    1302           0 :                                 aa_deriv[atom_id][2]*bd_deriv[kdx+i][2]*getMetaDer(k)) );
    1303           0 :             deriv_box += Tensor(getPosition(atom_id),Vector(aa_deriv[atom_id][0]*bd_deriv[kdx+i][0]*getMetaDer(k),
    1304           0 :                                 aa_deriv[atom_id][1]*bd_deriv[kdx+i][1]*getMetaDer(k),
    1305           0 :                                 aa_deriv[atom_id][2]*bd_deriv[kdx+i][2]*getMetaDer(k)) );
    1306           0 :             atom_id++;
    1307             :           }
    1308             :         }
    1309             :       } else {
    1310      450828 :         for(unsigned i=0; i<beads_size; ++i) {
    1311      449316 :           setAtomsDerivatives(val, i, Vector(bd_deriv[kdx+i][0]*getMetaDer(k),
    1312      449316 :                                              bd_deriv[kdx+i][1]*getMetaDer(k),
    1313      449316 :                                              bd_deriv[kdx+i][2]*getMetaDer(k)) );
    1314      898632 :           deriv_box += Tensor(getPosition(i),Vector(bd_deriv[kdx+i][0]*getMetaDer(k),
    1315      449316 :                               bd_deriv[kdx+i][1]*getMetaDer(k),
    1316      898632 :                               bd_deriv[kdx+i][2]*getMetaDer(k)) );
    1317             :         }
    1318             :       }
    1319             :     }
    1320        1716 :     setBoxDerivatives(val, -deriv_box);
    1321             :   }
    1322         188 : }
    1323             : 
    1324         188 : void SAXS::update() {
    1325             :   // write status file
    1326         188 :   if(getWstride()>0&& (getStep()%getWstride()==0 || getCPT()) ) {
    1327          28 :     writeStatus();
    1328             :   }
    1329         188 : }
    1330             : 
    1331          10 : unsigned SAXS::getOnebeadMapping(const PDB &pdb, const std::vector<AtomNumber> &atoms) {
    1332             :   std::vector<std::string> chains;
    1333          10 :   pdb.getChainNames( chains );
    1334             :   std::vector<std::vector<std::string> > AtomResidueName;
    1335             : 
    1336          10 :   atoms_masses.resize(atoms.size());
    1337          10 :   residue_atom.resize(atoms.size());
    1338             : 
    1339             :   // cycle over chains
    1340          24 :   for(unsigned i=0; i<chains.size(); ++i) {
    1341             :     unsigned start, end;
    1342             :     std::string errmsg;
    1343          14 :     pdb.getResidueRange(chains[i], start, end, errmsg);
    1344          14 :     AtomResidueName.resize(2);
    1345             :     // cycle over residues
    1346        2110 :     for(unsigned res=start; res<=end; res++) {
    1347        2096 :       std::string Rname = pdb.getResidueName(res, chains[i]);
    1348        2096 :       Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
    1349        2096 :       std::vector<AtomNumber> res_atoms = pdb.getAtomsInResidue(res, chains[i]);
    1350             :       unsigned first_time=1;
    1351             :       std::vector<std::vector<unsigned> > tmp_residue_atom;
    1352        2096 :       tmp_residue_atom.resize(3);
    1353             :       // cycle over atoms
    1354       37562 :       for(unsigned a=0; a<res_atoms.size(); a++) {
    1355             :         // operations shared among all beads
    1356       35466 :         std::string Aname=pdb.getAtomName(res_atoms[a]);
    1357       35466 :         AtomResidueName[0].push_back(Aname);
    1358       35466 :         AtomResidueName[1].push_back(Rname);
    1359             :         char type;
    1360       35466 :         char first = Aname.at(0);
    1361             :         // We assume that element symbol is first letter, if not a number
    1362       35466 :         if (!isdigit(first)) {
    1363             :           type = first;
    1364             :           // otherwise is the second
    1365             :         } else {
    1366           0 :           type = Aname.at(1);
    1367             :         }
    1368       35466 :         if (type == 'H') {
    1369       18918 :           atoms_masses[res_atoms[a].index()] = 1.008;
    1370             :         } else if(type == 'C') {
    1371       10384 :           atoms_masses[res_atoms[a].index()] = 12.011;
    1372             :         } else if(type == 'N') {
    1373        2772 :           atoms_masses[res_atoms[a].index()] = 14.007;
    1374             :         } else if(type == 'O') {
    1375        3270 :           atoms_masses[res_atoms[a].index()] = 15.999;
    1376             :         } else if(type == 'S') {
    1377          90 :           atoms_masses[res_atoms[a].index()] = 32.065;
    1378             :         } else if(type == 'P') {
    1379          32 :           atoms_masses[res_atoms[a].index()] = 30.974;
    1380             :         } else {
    1381           0 :           error("Unknown element in mass extraction\n");
    1382             :         }
    1383       70932 :         if(pdb.allowedResidue("protein",Rname)) {
    1384       34390 :           if(first_time) {
    1385        2060 :             atoms_per_bead.push_back(res_atoms.size());
    1386             :             first_time = 0;
    1387             :           }
    1388       34390 :           residue_atom[res_atoms[a].index()] = atoms_per_bead.size()-1;
    1389             :         } else {
    1390             :           // check for nucleic acids
    1391             :           // Pentose bead
    1392        4840 :           if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  || Aname=="O3'"  ||
    1393        3940 :               Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  || Aname=="C1'"  || Aname=="H5'"  ||
    1394        3076 :               Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  || Aname=="H2'"  || Aname=="H2''" ||
    1395        2660 :               Aname=="H2'2" || Aname=="H1'"  || Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" ||
    1396        3536 :               Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T"  ||
    1397             :               Aname=="H3T" ) {
    1398         584 :             tmp_residue_atom[0].push_back(res_atoms[a].index());
    1399             :           }
    1400             :           // Nucleobase bead
    1401        2172 :           else if(Aname=="N1"  || Aname=="N2"  || Aname=="N3"  || Aname=="N4"  || Aname=="N6"  ||
    1402        1884 :                   Aname=="N7"  || Aname=="N9"  || Aname=="C2"  || Aname=="C4"  || Aname=="C5"  ||
    1403        1272 :                   Aname=="C6"  || Aname=="C7"  || Aname=="C8"  || Aname=="O2"  || Aname=="O4"  ||
    1404         912 :                   Aname=="O6"  || Aname=="H1"  || Aname=="H2"  || Aname=="H3"  || Aname=="H5"  ||
    1405         480 :                   Aname=="H6"  || Aname=="H8"  || Aname=="H21" || Aname=="H22" || Aname=="H41" ||
    1406         972 :                   Aname=="H42" || Aname=="H61" || Aname=="H62" || Aname=="H71" || Aname=="H72" ||
    1407             :                   Aname=="H73" ) {
    1408         396 :             tmp_residue_atom[1].push_back(res_atoms[a].index());
    1409             :           }
    1410             :           // PO2 bead
    1411          96 :           else if(Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" || Aname=="O1P" ||
    1412          96 :                   Aname=="O2P" || Aname=="O3P" ) {
    1413          96 :             tmp_residue_atom[2].push_back(res_atoms[a].index());
    1414             :           }
    1415             :           // error
    1416             :           else {
    1417           0 :             error("Atom name "+Aname+" cannot be indexed to any bead. Check the PDB.");
    1418             :           }
    1419             :         }
    1420             :       }
    1421        4192 :       if(!pdb.allowedResidue("protein",Rname)) {
    1422          36 :         atoms_per_bead.push_back(tmp_residue_atom[0].size());
    1423         620 :         for(unsigned tmp_i=0; tmp_i<tmp_residue_atom[0].size(); tmp_i++) {
    1424         584 :           residue_atom[tmp_residue_atom[0][tmp_i]]=atoms_per_bead.size()-1;
    1425             :         }
    1426          36 :         atoms_per_bead.push_back(tmp_residue_atom[1].size());
    1427         432 :         for(unsigned tmp_i=0; tmp_i<tmp_residue_atom[1].size(); tmp_i++) {
    1428         396 :           residue_atom[tmp_residue_atom[1][tmp_i]]=atoms_per_bead.size()-1;
    1429             :         }
    1430          36 :         if(tmp_residue_atom[2].size()>0) {
    1431          32 :           atoms_per_bead.push_back(tmp_residue_atom[2].size());
    1432         128 :           for(unsigned tmp_i=0; tmp_i<tmp_residue_atom[2].size(); tmp_i++) {
    1433          96 :             residue_atom[tmp_residue_atom[2][tmp_i]]=atoms_per_bead.size()-1;
    1434             :           }
    1435             :         }
    1436             :       }
    1437        2096 :     }
    1438             :   }
    1439          10 :   readLCPOparam(AtomResidueName, atoms.size());
    1440          10 :   return atoms_per_bead.size();
    1441          10 : }
    1442             : 
    1443           8 : void SAXS::getMartiniFFparam(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &parameter) {
    1444           8 :   parameter[ALA_BB].push_back(9.045);
    1445           8 :   parameter[ALA_BB].push_back(-0.098114);
    1446           8 :   parameter[ALA_BB].push_back(7.54281);
    1447           8 :   parameter[ALA_BB].push_back(-1.97438);
    1448           8 :   parameter[ALA_BB].push_back(-8.32689);
    1449           8 :   parameter[ALA_BB].push_back(6.09318);
    1450           8 :   parameter[ALA_BB].push_back(-1.18913);
    1451             : 
    1452           8 :   parameter[ARG_BB].push_back(10.729);
    1453           8 :   parameter[ARG_BB].push_back(-0.0392574);
    1454           8 :   parameter[ARG_BB].push_back(1.15382);
    1455           8 :   parameter[ARG_BB].push_back(-0.155999);
    1456           8 :   parameter[ARG_BB].push_back(-2.43619);
    1457           8 :   parameter[ARG_BB].push_back(1.72922);
    1458           8 :   parameter[ARG_BB].push_back(-0.33799);
    1459             : 
    1460           8 :   parameter[ARG_SC1].push_back(-2.796);
    1461           8 :   parameter[ARG_SC1].push_back(0.472403);
    1462           8 :   parameter[ARG_SC1].push_back(8.07424);
    1463           8 :   parameter[ARG_SC1].push_back(4.37299);
    1464           8 :   parameter[ARG_SC1].push_back(-10.7398);
    1465           8 :   parameter[ARG_SC1].push_back(4.95677);
    1466           8 :   parameter[ARG_SC1].push_back(-0.725797);
    1467             : 
    1468           8 :   parameter[ARG_SC2].push_back(15.396);
    1469           8 :   parameter[ARG_SC2].push_back(0.0636736);
    1470           8 :   parameter[ARG_SC2].push_back(-1.258);
    1471           8 :   parameter[ARG_SC2].push_back(1.93135);
    1472           8 :   parameter[ARG_SC2].push_back(-4.45031);
    1473           8 :   parameter[ARG_SC2].push_back(2.49356);
    1474           8 :   parameter[ARG_SC2].push_back(-0.410721);
    1475             : 
    1476           8 :   parameter[ASN_BB].push_back(10.738);
    1477           8 :   parameter[ASN_BB].push_back(-0.0402162);
    1478           8 :   parameter[ASN_BB].push_back(1.03007);
    1479           8 :   parameter[ASN_BB].push_back(-0.254174);
    1480           8 :   parameter[ASN_BB].push_back(-2.12015);
    1481           8 :   parameter[ASN_BB].push_back(1.55535);
    1482           8 :   parameter[ASN_BB].push_back(-0.30963);
    1483             : 
    1484           8 :   parameter[ASN_SC1].push_back(9.249);
    1485           8 :   parameter[ASN_SC1].push_back(-0.0148678);
    1486           8 :   parameter[ASN_SC1].push_back(5.52169);
    1487           8 :   parameter[ASN_SC1].push_back(0.00853212);
    1488           8 :   parameter[ASN_SC1].push_back(-6.71992);
    1489           8 :   parameter[ASN_SC1].push_back(3.93622);
    1490           8 :   parameter[ASN_SC1].push_back(-0.64973);
    1491             : 
    1492           8 :   parameter[ASP_BB].push_back(10.695);
    1493           8 :   parameter[ASP_BB].push_back(-0.0410247);
    1494           8 :   parameter[ASP_BB].push_back(1.03656);
    1495           8 :   parameter[ASP_BB].push_back(-0.298558);
    1496           8 :   parameter[ASP_BB].push_back(-2.06064);
    1497           8 :   parameter[ASP_BB].push_back(1.53495);
    1498           8 :   parameter[ASP_BB].push_back(-0.308365);
    1499             : 
    1500           8 :   parameter[ASP_SC1].push_back(9.476);
    1501           8 :   parameter[ASP_SC1].push_back(-0.0254664);
    1502           8 :   parameter[ASP_SC1].push_back(5.57899);
    1503           8 :   parameter[ASP_SC1].push_back(-0.395027);
    1504           8 :   parameter[ASP_SC1].push_back(-5.9407);
    1505           8 :   parameter[ASP_SC1].push_back(3.48836);
    1506           8 :   parameter[ASP_SC1].push_back(-0.569402);
    1507             : 
    1508           8 :   parameter[CYS_BB].push_back(10.698);
    1509           8 :   parameter[CYS_BB].push_back(-0.0233493);
    1510           8 :   parameter[CYS_BB].push_back(1.18257);
    1511           8 :   parameter[CYS_BB].push_back(0.0684464);
    1512           8 :   parameter[CYS_BB].push_back(-2.792);
    1513           8 :   parameter[CYS_BB].push_back(1.88995);
    1514           8 :   parameter[CYS_BB].push_back(-0.360229);
    1515             : 
    1516           8 :   parameter[CYS_SC1].push_back(8.199);
    1517           8 :   parameter[CYS_SC1].push_back(-0.0261569);
    1518           8 :   parameter[CYS_SC1].push_back(6.79677);
    1519           8 :   parameter[CYS_SC1].push_back(-0.343845);
    1520           8 :   parameter[CYS_SC1].push_back(-5.03578);
    1521           8 :   parameter[CYS_SC1].push_back(2.7076);
    1522           8 :   parameter[CYS_SC1].push_back(-0.420714);
    1523             : 
    1524           8 :   parameter[GLN_BB].push_back(10.728);
    1525           8 :   parameter[GLN_BB].push_back(-0.0391984);
    1526           8 :   parameter[GLN_BB].push_back(1.09264);
    1527           8 :   parameter[GLN_BB].push_back(-0.261555);
    1528           8 :   parameter[GLN_BB].push_back(-2.21245);
    1529           8 :   parameter[GLN_BB].push_back(1.62071);
    1530           8 :   parameter[GLN_BB].push_back(-0.322325);
    1531             : 
    1532           8 :   parameter[GLN_SC1].push_back(8.317);
    1533           8 :   parameter[GLN_SC1].push_back(-0.229045);
    1534           8 :   parameter[GLN_SC1].push_back(12.6338);
    1535           8 :   parameter[GLN_SC1].push_back(-7.6719);
    1536           8 :   parameter[GLN_SC1].push_back(-5.8376);
    1537           8 :   parameter[GLN_SC1].push_back(5.53784);
    1538           8 :   parameter[GLN_SC1].push_back(-1.12604);
    1539             : 
    1540           8 :   parameter[GLU_BB].push_back(10.694);
    1541           8 :   parameter[GLU_BB].push_back(-0.0521961);
    1542           8 :   parameter[GLU_BB].push_back(1.11153);
    1543           8 :   parameter[GLU_BB].push_back(-0.491995);
    1544           8 :   parameter[GLU_BB].push_back(-1.86236);
    1545           8 :   parameter[GLU_BB].push_back(1.45332);
    1546           8 :   parameter[GLU_BB].push_back(-0.29708);
    1547             : 
    1548           8 :   parameter[GLU_SC1].push_back(8.544);
    1549           8 :   parameter[GLU_SC1].push_back(-0.249555);
    1550           8 :   parameter[GLU_SC1].push_back(12.8031);
    1551           8 :   parameter[GLU_SC1].push_back(-8.42696);
    1552           8 :   parameter[GLU_SC1].push_back(-4.66486);
    1553           8 :   parameter[GLU_SC1].push_back(4.90004);
    1554           8 :   parameter[GLU_SC1].push_back(-1.01204);
    1555             : 
    1556           8 :   parameter[GLY_BB].push_back(9.977);
    1557           8 :   parameter[GLY_BB].push_back(-0.0285799);
    1558           8 :   parameter[GLY_BB].push_back(1.84236);
    1559           8 :   parameter[GLY_BB].push_back(-0.0315192);
    1560           8 :   parameter[GLY_BB].push_back(-2.88326);
    1561           8 :   parameter[GLY_BB].push_back(1.87323);
    1562           8 :   parameter[GLY_BB].push_back(-0.345773);
    1563             : 
    1564           8 :   parameter[HIS_BB].push_back(10.721);
    1565           8 :   parameter[HIS_BB].push_back(-0.0379337);
    1566           8 :   parameter[HIS_BB].push_back(1.06028);
    1567           8 :   parameter[HIS_BB].push_back(-0.236143);
    1568           8 :   parameter[HIS_BB].push_back(-2.17819);
    1569           8 :   parameter[HIS_BB].push_back(1.58357);
    1570           8 :   parameter[HIS_BB].push_back(-0.31345);
    1571             : 
    1572           8 :   parameter[HIS_SC1].push_back(-0.424);
    1573           8 :   parameter[HIS_SC1].push_back(0.665176);
    1574           8 :   parameter[HIS_SC1].push_back(3.4369);
    1575           8 :   parameter[HIS_SC1].push_back(2.93795);
    1576           8 :   parameter[HIS_SC1].push_back(-5.18288);
    1577           8 :   parameter[HIS_SC1].push_back(2.12381);
    1578           8 :   parameter[HIS_SC1].push_back(-0.284224);
    1579             : 
    1580           8 :   parameter[HIS_SC2].push_back(5.363);
    1581           8 :   parameter[HIS_SC2].push_back(-0.0176945);
    1582           8 :   parameter[HIS_SC2].push_back(2.9506);
    1583           8 :   parameter[HIS_SC2].push_back(-0.387018);
    1584           8 :   parameter[HIS_SC2].push_back(-1.83951);
    1585           8 :   parameter[HIS_SC2].push_back(0.9703);
    1586           8 :   parameter[HIS_SC2].push_back(-0.1458);
    1587             : 
    1588           8 :   parameter[HIS_SC3].push_back(5.784);
    1589           8 :   parameter[HIS_SC3].push_back(-0.0293129);
    1590           8 :   parameter[HIS_SC3].push_back(2.74167);
    1591           8 :   parameter[HIS_SC3].push_back(-0.520875);
    1592           8 :   parameter[HIS_SC3].push_back(-1.62949);
    1593           8 :   parameter[HIS_SC3].push_back(0.902379);
    1594           8 :   parameter[HIS_SC3].push_back(-0.139957);
    1595             : 
    1596           8 :   parameter[ILE_BB].push_back(10.699);
    1597           8 :   parameter[ILE_BB].push_back(-0.0188962);
    1598           8 :   parameter[ILE_BB].push_back(1.217);
    1599           8 :   parameter[ILE_BB].push_back(0.242481);
    1600           8 :   parameter[ILE_BB].push_back(-3.13898);
    1601           8 :   parameter[ILE_BB].push_back(2.07916);
    1602           8 :   parameter[ILE_BB].push_back(-0.392574);
    1603             : 
    1604           8 :   parameter[ILE_SC1].push_back(-4.448);
    1605           8 :   parameter[ILE_SC1].push_back(1.20996);
    1606           8 :   parameter[ILE_SC1].push_back(11.5141);
    1607           8 :   parameter[ILE_SC1].push_back(6.98895);
    1608           8 :   parameter[ILE_SC1].push_back(-19.1948);
    1609           8 :   parameter[ILE_SC1].push_back(9.89207);
    1610           8 :   parameter[ILE_SC1].push_back(-1.60877);
    1611             : 
    1612           8 :   parameter[LEU_BB].push_back(10.692);
    1613           8 :   parameter[LEU_BB].push_back(-0.0414917);
    1614           8 :   parameter[LEU_BB].push_back(1.1077);
    1615           8 :   parameter[LEU_BB].push_back(-0.288062);
    1616           8 :   parameter[LEU_BB].push_back(-2.17187);
    1617           8 :   parameter[LEU_BB].push_back(1.59879);
    1618           8 :   parameter[LEU_BB].push_back(-0.318545);
    1619             : 
    1620           8 :   parameter[LEU_SC1].push_back(-4.448);
    1621           8 :   parameter[LEU_SC1].push_back(2.1063);
    1622           8 :   parameter[LEU_SC1].push_back(6.72381);
    1623           8 :   parameter[LEU_SC1].push_back(14.6954);
    1624           8 :   parameter[LEU_SC1].push_back(-23.7197);
    1625           8 :   parameter[LEU_SC1].push_back(10.7247);
    1626           8 :   parameter[LEU_SC1].push_back(-1.59146);
    1627             : 
    1628           8 :   parameter[LYS_BB].push_back(10.706);
    1629           8 :   parameter[LYS_BB].push_back(-0.0468629);
    1630           8 :   parameter[LYS_BB].push_back(1.09477);
    1631           8 :   parameter[LYS_BB].push_back(-0.432751);
    1632           8 :   parameter[LYS_BB].push_back(-1.94335);
    1633           8 :   parameter[LYS_BB].push_back(1.49109);
    1634           8 :   parameter[LYS_BB].push_back(-0.302589);
    1635             : 
    1636           8 :   parameter[LYS_SC1].push_back(-2.796);
    1637           8 :   parameter[LYS_SC1].push_back(0.508044);
    1638           8 :   parameter[LYS_SC1].push_back(7.91436);
    1639           8 :   parameter[LYS_SC1].push_back(4.54097);
    1640           8 :   parameter[LYS_SC1].push_back(-10.8051);
    1641           8 :   parameter[LYS_SC1].push_back(4.96204);
    1642           8 :   parameter[LYS_SC1].push_back(-0.724414);
    1643             : 
    1644           8 :   parameter[LYS_SC2].push_back(3.070);
    1645           8 :   parameter[LYS_SC2].push_back(-0.0101448);
    1646           8 :   parameter[LYS_SC2].push_back(4.67994);
    1647           8 :   parameter[LYS_SC2].push_back(-0.792529);
    1648           8 :   parameter[LYS_SC2].push_back(-2.09142);
    1649           8 :   parameter[LYS_SC2].push_back(1.02933);
    1650           8 :   parameter[LYS_SC2].push_back(-0.137787);
    1651             : 
    1652           8 :   parameter[MET_BB].push_back(10.671);
    1653           8 :   parameter[MET_BB].push_back(-0.0433724);
    1654           8 :   parameter[MET_BB].push_back(1.13784);
    1655           8 :   parameter[MET_BB].push_back(-0.40768);
    1656           8 :   parameter[MET_BB].push_back(-2.00555);
    1657           8 :   parameter[MET_BB].push_back(1.51673);
    1658           8 :   parameter[MET_BB].push_back(-0.305547);
    1659             : 
    1660           8 :   parameter[MET_SC1].push_back(5.85);
    1661           8 :   parameter[MET_SC1].push_back(-0.0485798);
    1662           8 :   parameter[MET_SC1].push_back(17.0391);
    1663           8 :   parameter[MET_SC1].push_back(-3.65327);
    1664           8 :   parameter[MET_SC1].push_back(-13.174);
    1665           8 :   parameter[MET_SC1].push_back(8.68286);
    1666           8 :   parameter[MET_SC1].push_back(-1.56095);
    1667             : 
    1668           8 :   parameter[PHE_BB].push_back(10.741);
    1669           8 :   parameter[PHE_BB].push_back(-0.0317275);
    1670           8 :   parameter[PHE_BB].push_back(1.15599);
    1671           8 :   parameter[PHE_BB].push_back(0.0276187);
    1672           8 :   parameter[PHE_BB].push_back(-2.74757);
    1673           8 :   parameter[PHE_BB].push_back(1.88783);
    1674           8 :   parameter[PHE_BB].push_back(-0.363525);
    1675             : 
    1676           8 :   parameter[PHE_SC1].push_back(-0.636);
    1677           8 :   parameter[PHE_SC1].push_back(0.527882);
    1678           8 :   parameter[PHE_SC1].push_back(6.77612);
    1679           8 :   parameter[PHE_SC1].push_back(3.18508);
    1680           8 :   parameter[PHE_SC1].push_back(-8.92826);
    1681           8 :   parameter[PHE_SC1].push_back(4.29752);
    1682           8 :   parameter[PHE_SC1].push_back(-0.65187);
    1683             : 
    1684           8 :   parameter[PHE_SC2].push_back(-0.424);
    1685           8 :   parameter[PHE_SC2].push_back(0.389174);
    1686           8 :   parameter[PHE_SC2].push_back(4.11761);
    1687           8 :   parameter[PHE_SC2].push_back(2.29527);
    1688           8 :   parameter[PHE_SC2].push_back(-4.7652);
    1689           8 :   parameter[PHE_SC2].push_back(1.97023);
    1690           8 :   parameter[PHE_SC2].push_back(-0.262318);
    1691             : 
    1692           8 :   parameter[PHE_SC3].push_back(-0.424);
    1693           8 :   parameter[PHE_SC3].push_back(0.38927);
    1694           8 :   parameter[PHE_SC3].push_back(4.11708);
    1695           8 :   parameter[PHE_SC3].push_back(2.29623);
    1696           8 :   parameter[PHE_SC3].push_back(-4.76592);
    1697           8 :   parameter[PHE_SC3].push_back(1.97055);
    1698           8 :   parameter[PHE_SC3].push_back(-0.262381);
    1699             : 
    1700           8 :   parameter[PRO_BB].push_back(11.434);
    1701           8 :   parameter[PRO_BB].push_back(-0.033323);
    1702           8 :   parameter[PRO_BB].push_back(0.472014);
    1703           8 :   parameter[PRO_BB].push_back(-0.290854);
    1704           8 :   parameter[PRO_BB].push_back(-1.81409);
    1705           8 :   parameter[PRO_BB].push_back(1.39751);
    1706           8 :   parameter[PRO_BB].push_back(-0.280407);
    1707             : 
    1708           8 :   parameter[PRO_SC1].push_back(-2.796);
    1709           8 :   parameter[PRO_SC1].push_back(0.95668);
    1710           8 :   parameter[PRO_SC1].push_back(6.84197);
    1711           8 :   parameter[PRO_SC1].push_back(6.43774);
    1712           8 :   parameter[PRO_SC1].push_back(-12.5068);
    1713           8 :   parameter[PRO_SC1].push_back(5.64597);
    1714           8 :   parameter[PRO_SC1].push_back(-0.825206);
    1715             : 
    1716           8 :   parameter[SER_BB].push_back(10.699);
    1717           8 :   parameter[SER_BB].push_back(-0.0325828);
    1718           8 :   parameter[SER_BB].push_back(1.20329);
    1719           8 :   parameter[SER_BB].push_back(-0.0674351);
    1720           8 :   parameter[SER_BB].push_back(-2.60749);
    1721           8 :   parameter[SER_BB].push_back(1.80318);
    1722           8 :   parameter[SER_BB].push_back(-0.346803);
    1723             : 
    1724           8 :   parameter[SER_SC1].push_back(3.298);
    1725           8 :   parameter[SER_SC1].push_back(-0.0366801);
    1726           8 :   parameter[SER_SC1].push_back(5.11077);
    1727           8 :   parameter[SER_SC1].push_back(-1.46774);
    1728           8 :   parameter[SER_SC1].push_back(-1.48421);
    1729           8 :   parameter[SER_SC1].push_back(0.800326);
    1730           8 :   parameter[SER_SC1].push_back(-0.108314);
    1731             : 
    1732           8 :   parameter[THR_BB].push_back(10.697);
    1733           8 :   parameter[THR_BB].push_back(-0.0242955);
    1734           8 :   parameter[THR_BB].push_back(1.24671);
    1735           8 :   parameter[THR_BB].push_back(0.146423);
    1736           8 :   parameter[THR_BB].push_back(-2.97429);
    1737           8 :   parameter[THR_BB].push_back(1.97513);
    1738           8 :   parameter[THR_BB].push_back(-0.371479);
    1739             : 
    1740           8 :   parameter[THR_SC1].push_back(2.366);
    1741           8 :   parameter[THR_SC1].push_back(0.0297604);
    1742           8 :   parameter[THR_SC1].push_back(11.9216);
    1743           8 :   parameter[THR_SC1].push_back(-9.32503);
    1744           8 :   parameter[THR_SC1].push_back(1.9396);
    1745           8 :   parameter[THR_SC1].push_back(0.0804861);
    1746           8 :   parameter[THR_SC1].push_back(-0.0302721);
    1747             : 
    1748           8 :   parameter[TRP_BB].push_back(10.689);
    1749           8 :   parameter[TRP_BB].push_back(-0.0265879);
    1750           8 :   parameter[TRP_BB].push_back(1.17819);
    1751           8 :   parameter[TRP_BB].push_back(0.0386457);
    1752           8 :   parameter[TRP_BB].push_back(-2.75634);
    1753           8 :   parameter[TRP_BB].push_back(1.88065);
    1754           8 :   parameter[TRP_BB].push_back(-0.360217);
    1755             : 
    1756           8 :   parameter[TRP_SC1].push_back(0.084);
    1757           8 :   parameter[TRP_SC1].push_back(0.752407);
    1758           8 :   parameter[TRP_SC1].push_back(5.3802);
    1759           8 :   parameter[TRP_SC1].push_back(4.09281);
    1760           8 :   parameter[TRP_SC1].push_back(-9.28029);
    1761           8 :   parameter[TRP_SC1].push_back(4.45923);
    1762           8 :   parameter[TRP_SC1].push_back(-0.689008);
    1763             : 
    1764           8 :   parameter[TRP_SC2].push_back(5.739);
    1765           8 :   parameter[TRP_SC2].push_back(0.0298492);
    1766           8 :   parameter[TRP_SC2].push_back(4.60446);
    1767           8 :   parameter[TRP_SC2].push_back(1.34463);
    1768           8 :   parameter[TRP_SC2].push_back(-5.69968);
    1769           8 :   parameter[TRP_SC2].push_back(2.84924);
    1770           8 :   parameter[TRP_SC2].push_back(-0.433781);
    1771             : 
    1772           8 :   parameter[TRP_SC3].push_back(-0.424);
    1773           8 :   parameter[TRP_SC3].push_back(0.388576);
    1774           8 :   parameter[TRP_SC3].push_back(4.11859);
    1775           8 :   parameter[TRP_SC3].push_back(2.29485);
    1776           8 :   parameter[TRP_SC3].push_back(-4.76255);
    1777           8 :   parameter[TRP_SC3].push_back(1.96849);
    1778           8 :   parameter[TRP_SC3].push_back(-0.262015);
    1779             : 
    1780           8 :   parameter[TRP_SC4].push_back(-0.424);
    1781           8 :   parameter[TRP_SC4].push_back(0.387685);
    1782           8 :   parameter[TRP_SC4].push_back(4.12153);
    1783           8 :   parameter[TRP_SC4].push_back(2.29144);
    1784           8 :   parameter[TRP_SC4].push_back(-4.7589);
    1785           8 :   parameter[TRP_SC4].push_back(1.96686);
    1786           8 :   parameter[TRP_SC4].push_back(-0.261786);
    1787             : 
    1788           8 :   parameter[TYR_BB].push_back(10.689);
    1789           8 :   parameter[TYR_BB].push_back(-0.0193526);
    1790           8 :   parameter[TYR_BB].push_back(1.18241);
    1791           8 :   parameter[TYR_BB].push_back(0.207318);
    1792           8 :   parameter[TYR_BB].push_back(-3.0041);
    1793           8 :   parameter[TYR_BB].push_back(1.99335);
    1794           8 :   parameter[TYR_BB].push_back(-0.376482);
    1795             : 
    1796           8 :   parameter[TYR_SC1].push_back(-0.636);
    1797           8 :   parameter[TYR_SC1].push_back(0.528902);
    1798           8 :   parameter[TYR_SC1].push_back(6.78168);
    1799           8 :   parameter[TYR_SC1].push_back(3.17769);
    1800           8 :   parameter[TYR_SC1].push_back(-8.93667);
    1801           8 :   parameter[TYR_SC1].push_back(4.30692);
    1802           8 :   parameter[TYR_SC1].push_back(-0.653993);
    1803             : 
    1804           8 :   parameter[TYR_SC2].push_back(-0.424);
    1805           8 :   parameter[TYR_SC2].push_back(0.388811);
    1806           8 :   parameter[TYR_SC2].push_back(4.11851);
    1807           8 :   parameter[TYR_SC2].push_back(2.29545);
    1808           8 :   parameter[TYR_SC2].push_back(-4.7668);
    1809           8 :   parameter[TYR_SC2].push_back(1.97131);
    1810           8 :   parameter[TYR_SC2].push_back(-0.262534);
    1811             : 
    1812           8 :   parameter[TYR_SC3].push_back(4.526);
    1813           8 :   parameter[TYR_SC3].push_back(-0.00381305);
    1814           8 :   parameter[TYR_SC3].push_back(5.8567);
    1815           8 :   parameter[TYR_SC3].push_back(-0.214086);
    1816           8 :   parameter[TYR_SC3].push_back(-4.63649);
    1817           8 :   parameter[TYR_SC3].push_back(2.52869);
    1818           8 :   parameter[TYR_SC3].push_back(-0.39894);
    1819             : 
    1820           8 :   parameter[VAL_BB].push_back(10.691);
    1821           8 :   parameter[VAL_BB].push_back(-0.0162929);
    1822           8 :   parameter[VAL_BB].push_back(1.24446);
    1823           8 :   parameter[VAL_BB].push_back(0.307914);
    1824           8 :   parameter[VAL_BB].push_back(-3.27446);
    1825           8 :   parameter[VAL_BB].push_back(2.14788);
    1826           8 :   parameter[VAL_BB].push_back(-0.403259);
    1827             : 
    1828           8 :   parameter[VAL_SC1].push_back(-3.516);
    1829           8 :   parameter[VAL_SC1].push_back(1.62307);
    1830           8 :   parameter[VAL_SC1].push_back(5.43064);
    1831           8 :   parameter[VAL_SC1].push_back(9.28809);
    1832           8 :   parameter[VAL_SC1].push_back(-14.9927);
    1833           8 :   parameter[VAL_SC1].push_back(6.6133);
    1834           8 :   parameter[VAL_SC1].push_back(-0.964977);
    1835             : 
    1836           8 :   parameter[A_BB1].push_back(32.88500000);
    1837           8 :   parameter[A_BB1].push_back(0.08339900);
    1838           8 :   parameter[A_BB1].push_back(-7.36054400);
    1839           8 :   parameter[A_BB1].push_back(2.19220300);
    1840           8 :   parameter[A_BB1].push_back(-3.56523400);
    1841           8 :   parameter[A_BB1].push_back(2.33326900);
    1842           8 :   parameter[A_BB1].push_back(-0.39785500);
    1843             : 
    1844           8 :   parameter[A_BB2].push_back(3.80600000);
    1845           8 :   parameter[A_BB2].push_back(-0.10727600);
    1846           8 :   parameter[A_BB2].push_back(9.58854100);
    1847           8 :   parameter[A_BB2].push_back(-6.23740500);
    1848           8 :   parameter[A_BB2].push_back(-0.48267300);
    1849           8 :   parameter[A_BB2].push_back(1.14119500);
    1850           8 :   parameter[A_BB2].push_back(-0.21385600);
    1851             : 
    1852           8 :   parameter[A_BB3].push_back(3.59400000);
    1853           8 :   parameter[A_BB3].push_back(0.04537300);
    1854           8 :   parameter[A_BB3].push_back(9.59178900);
    1855           8 :   parameter[A_BB3].push_back(-1.29202200);
    1856           8 :   parameter[A_BB3].push_back(-7.10851000);
    1857           8 :   parameter[A_BB3].push_back(4.05571200);
    1858           8 :   parameter[A_BB3].push_back(-0.63372500);
    1859             : 
    1860           8 :   parameter[A_SC1].push_back(6.67100000);
    1861           8 :   parameter[A_SC1].push_back(-0.00855300);
    1862           8 :   parameter[A_SC1].push_back(1.63222400);
    1863           8 :   parameter[A_SC1].push_back(-0.06466200);
    1864           8 :   parameter[A_SC1].push_back(-1.48694200);
    1865           8 :   parameter[A_SC1].push_back(0.78544600);
    1866           8 :   parameter[A_SC1].push_back(-0.12083500);
    1867             : 
    1868           8 :   parameter[A_SC2].push_back(5.95100000);
    1869           8 :   parameter[A_SC2].push_back(-0.02606600);
    1870           8 :   parameter[A_SC2].push_back(2.54399900);
    1871           8 :   parameter[A_SC2].push_back(-0.48436900);
    1872           8 :   parameter[A_SC2].push_back(-1.55357400);
    1873           8 :   parameter[A_SC2].push_back(0.86466900);
    1874           8 :   parameter[A_SC2].push_back(-0.13509000);
    1875             : 
    1876           8 :   parameter[A_SC3].push_back(11.39400000);
    1877           8 :   parameter[A_SC3].push_back(0.00871300);
    1878           8 :   parameter[A_SC3].push_back(-0.23891300);
    1879           8 :   parameter[A_SC3].push_back(0.48919400);
    1880           8 :   parameter[A_SC3].push_back(-1.75289400);
    1881           8 :   parameter[A_SC3].push_back(0.99267500);
    1882           8 :   parameter[A_SC3].push_back(-0.16291300);
    1883             : 
    1884           8 :   parameter[A_SC4].push_back(6.45900000);
    1885           8 :   parameter[A_SC4].push_back(0.01990600);
    1886           8 :   parameter[A_SC4].push_back(4.17970400);
    1887           8 :   parameter[A_SC4].push_back(0.97629900);
    1888           8 :   parameter[A_SC4].push_back(-5.03297800);
    1889           8 :   parameter[A_SC4].push_back(2.55576700);
    1890           8 :   parameter[A_SC4].push_back(-0.39150500);
    1891             : 
    1892           8 :   parameter[A_3TE].push_back(4.23000000);
    1893           8 :   parameter[A_3TE].push_back(0.00064800);
    1894           8 :   parameter[A_3TE].push_back(0.92124600);
    1895           8 :   parameter[A_3TE].push_back(0.08064300);
    1896           8 :   parameter[A_3TE].push_back(-0.39054400);
    1897           8 :   parameter[A_3TE].push_back(0.12429100);
    1898           8 :   parameter[A_3TE].push_back(-0.01122700);
    1899             : 
    1900           8 :   parameter[A_5TE].push_back(4.23000000);
    1901           8 :   parameter[A_5TE].push_back(0.00039300);
    1902           8 :   parameter[A_5TE].push_back(0.92305100);
    1903           8 :   parameter[A_5TE].push_back(0.07747500);
    1904           8 :   parameter[A_5TE].push_back(-0.38792100);
    1905           8 :   parameter[A_5TE].push_back(0.12323800);
    1906           8 :   parameter[A_5TE].push_back(-0.01106600);
    1907             : 
    1908           8 :   parameter[A_TE3].push_back(7.82400000);
    1909           8 :   parameter[A_TE3].push_back(-0.04881000);
    1910           8 :   parameter[A_TE3].push_back(8.21557900);
    1911           8 :   parameter[A_TE3].push_back(-0.89491400);
    1912           8 :   parameter[A_TE3].push_back(-9.54293700);
    1913           8 :   parameter[A_TE3].push_back(6.33122200);
    1914           8 :   parameter[A_TE3].push_back(-1.16672900);
    1915             : 
    1916           8 :   parameter[A_TE5].push_back(8.03600000);
    1917           8 :   parameter[A_TE5].push_back(0.01641200);
    1918           8 :   parameter[A_TE5].push_back(5.14902200);
    1919           8 :   parameter[A_TE5].push_back(0.83419700);
    1920           8 :   parameter[A_TE5].push_back(-7.59068300);
    1921           8 :   parameter[A_TE5].push_back(4.52063200);
    1922           8 :   parameter[A_TE5].push_back(-0.78260800);
    1923             : 
    1924           8 :   parameter[C_BB1].push_back(32.88500000);
    1925           8 :   parameter[C_BB1].push_back(0.08311100);
    1926           8 :   parameter[C_BB1].push_back(-7.35432100);
    1927           8 :   parameter[C_BB1].push_back(2.18610000);
    1928           8 :   parameter[C_BB1].push_back(-3.55788300);
    1929           8 :   parameter[C_BB1].push_back(2.32918700);
    1930           8 :   parameter[C_BB1].push_back(-0.39720000);
    1931             : 
    1932           8 :   parameter[C_BB2].push_back(3.80600000);
    1933           8 :   parameter[C_BB2].push_back(-0.10808100);
    1934           8 :   parameter[C_BB2].push_back(9.61612600);
    1935           8 :   parameter[C_BB2].push_back(-6.28595400);
    1936           8 :   parameter[C_BB2].push_back(-0.45187000);
    1937           8 :   parameter[C_BB2].push_back(1.13326000);
    1938           8 :   parameter[C_BB2].push_back(-0.21320300);
    1939             : 
    1940           8 :   parameter[C_BB3].push_back(3.59400000);
    1941           8 :   parameter[C_BB3].push_back(0.04484200);
    1942           8 :   parameter[C_BB3].push_back(9.61919800);
    1943           8 :   parameter[C_BB3].push_back(-1.33582800);
    1944           8 :   parameter[C_BB3].push_back(-7.07200400);
    1945           8 :   parameter[C_BB3].push_back(4.03952900);
    1946           8 :   parameter[C_BB3].push_back(-0.63098200);
    1947             : 
    1948           8 :   parameter[C_SC1].push_back(5.95100000);
    1949           8 :   parameter[C_SC1].push_back(-0.02911300);
    1950           8 :   parameter[C_SC1].push_back(2.59700400);
    1951           8 :   parameter[C_SC1].push_back(-0.55507700);
    1952           8 :   parameter[C_SC1].push_back(-1.56344600);
    1953           8 :   parameter[C_SC1].push_back(0.88956200);
    1954           8 :   parameter[C_SC1].push_back(-0.14061300);
    1955             : 
    1956           8 :   parameter[C_SC2].push_back(11.62100000);
    1957           8 :   parameter[C_SC2].push_back(0.01366100);
    1958           8 :   parameter[C_SC2].push_back(-0.25959200);
    1959           8 :   parameter[C_SC2].push_back(0.48918300);
    1960           8 :   parameter[C_SC2].push_back(-1.52550500);
    1961           8 :   parameter[C_SC2].push_back(0.83644100);
    1962           8 :   parameter[C_SC2].push_back(-0.13407300);
    1963             : 
    1964           8 :   parameter[C_SC3].push_back(5.01900000);
    1965           8 :   parameter[C_SC3].push_back(-0.03276100);
    1966           8 :   parameter[C_SC3].push_back(5.53776900);
    1967           8 :   parameter[C_SC3].push_back(-0.95105000);
    1968           8 :   parameter[C_SC3].push_back(-3.71130800);
    1969           8 :   parameter[C_SC3].push_back(2.16146000);
    1970           8 :   parameter[C_SC3].push_back(-0.34918600);
    1971             : 
    1972           8 :   parameter[C_3TE].push_back(4.23000000);
    1973           8 :   parameter[C_3TE].push_back(0.00057300);
    1974           8 :   parameter[C_3TE].push_back(0.92174800);
    1975           8 :   parameter[C_3TE].push_back(0.07964500);
    1976           8 :   parameter[C_3TE].push_back(-0.38965700);
    1977           8 :   parameter[C_3TE].push_back(0.12392500);
    1978           8 :   parameter[C_3TE].push_back(-0.01117000);
    1979             : 
    1980           8 :   parameter[C_5TE].push_back(4.23000000);
    1981           8 :   parameter[C_5TE].push_back(0.00071000);
    1982           8 :   parameter[C_5TE].push_back(0.92082800);
    1983           8 :   parameter[C_5TE].push_back(0.08150600);
    1984           8 :   parameter[C_5TE].push_back(-0.39127000);
    1985           8 :   parameter[C_5TE].push_back(0.12455900);
    1986           8 :   parameter[C_5TE].push_back(-0.01126300);
    1987             : 
    1988           8 :   parameter[C_TE3].push_back(7.82400000);
    1989           8 :   parameter[C_TE3].push_back(-0.05848300);
    1990           8 :   parameter[C_TE3].push_back(8.29319900);
    1991           8 :   parameter[C_TE3].push_back(-1.12563800);
    1992           8 :   parameter[C_TE3].push_back(-9.42197600);
    1993           8 :   parameter[C_TE3].push_back(6.35441700);
    1994           8 :   parameter[C_TE3].push_back(-1.18356900);
    1995             : 
    1996           8 :   parameter[C_TE5].push_back(8.03600000);
    1997           8 :   parameter[C_TE5].push_back(0.00493500);
    1998           8 :   parameter[C_TE5].push_back(4.92622000);
    1999           8 :   parameter[C_TE5].push_back(0.64810700);
    2000           8 :   parameter[C_TE5].push_back(-7.05100000);
    2001           8 :   parameter[C_TE5].push_back(4.26064400);
    2002           8 :   parameter[C_TE5].push_back(-0.74819100);
    2003             : 
    2004           8 :   parameter[G_BB1].push_back(32.88500000);
    2005           8 :   parameter[G_BB1].push_back(0.08325400);
    2006           8 :   parameter[G_BB1].push_back(-7.35736000);
    2007           8 :   parameter[G_BB1].push_back(2.18914800);
    2008           8 :   parameter[G_BB1].push_back(-3.56154800);
    2009           8 :   parameter[G_BB1].push_back(2.33120600);
    2010           8 :   parameter[G_BB1].push_back(-0.39752300);
    2011             : 
    2012           8 :   parameter[G_BB2].push_back(3.80600000);
    2013           8 :   parameter[G_BB2].push_back(-0.10788300);
    2014           8 :   parameter[G_BB2].push_back(9.60930800);
    2015           8 :   parameter[G_BB2].push_back(-6.27402500);
    2016           8 :   parameter[G_BB2].push_back(-0.46192700);
    2017           8 :   parameter[G_BB2].push_back(1.13737000);
    2018           8 :   parameter[G_BB2].push_back(-0.21383100);
    2019             : 
    2020           8 :   parameter[G_BB3].push_back(3.59400000);
    2021           8 :   parameter[G_BB3].push_back(0.04514500);
    2022           8 :   parameter[G_BB3].push_back(9.61234700);
    2023           8 :   parameter[G_BB3].push_back(-1.31542100);
    2024           8 :   parameter[G_BB3].push_back(-7.09150500);
    2025           8 :   parameter[G_BB3].push_back(4.04706200);
    2026           8 :   parameter[G_BB3].push_back(-0.63201000);
    2027             : 
    2028           8 :   parameter[G_SC1].push_back(6.67100000);
    2029           8 :   parameter[G_SC1].push_back(-0.00863200);
    2030           8 :   parameter[G_SC1].push_back(1.63252300);
    2031           8 :   parameter[G_SC1].push_back(-0.06567200);
    2032           8 :   parameter[G_SC1].push_back(-1.48680500);
    2033           8 :   parameter[G_SC1].push_back(0.78565600);
    2034           8 :   parameter[G_SC1].push_back(-0.12088900);
    2035             : 
    2036           8 :   parameter[G_SC2].push_back(11.39400000);
    2037           8 :   parameter[G_SC2].push_back(0.00912200);
    2038           8 :   parameter[G_SC2].push_back(-0.22869000);
    2039           8 :   parameter[G_SC2].push_back(0.49616400);
    2040           8 :   parameter[G_SC2].push_back(-1.75039000);
    2041           8 :   parameter[G_SC2].push_back(0.98649200);
    2042           8 :   parameter[G_SC2].push_back(-0.16141600);
    2043             : 
    2044           8 :   parameter[G_SC3].push_back(10.90100000);
    2045           8 :   parameter[G_SC3].push_back(0.02208700);
    2046           8 :   parameter[G_SC3].push_back(0.17032800);
    2047           8 :   parameter[G_SC3].push_back(0.73280800);
    2048           8 :   parameter[G_SC3].push_back(-1.95292000);
    2049           8 :   parameter[G_SC3].push_back(0.98357600);
    2050           8 :   parameter[G_SC3].push_back(-0.14790900);
    2051             : 
    2052           8 :   parameter[G_SC4].push_back(6.45900000);
    2053           8 :   parameter[G_SC4].push_back(0.02023700);
    2054           8 :   parameter[G_SC4].push_back(4.17655400);
    2055           8 :   parameter[G_SC4].push_back(0.98731800);
    2056           8 :   parameter[G_SC4].push_back(-5.04352800);
    2057           8 :   parameter[G_SC4].push_back(2.56059400);
    2058           8 :   parameter[G_SC4].push_back(-0.39234300);
    2059             : 
    2060           8 :   parameter[G_3TE].push_back(4.23000000);
    2061           8 :   parameter[G_3TE].push_back(0.00066300);
    2062           8 :   parameter[G_3TE].push_back(0.92118800);
    2063           8 :   parameter[G_3TE].push_back(0.08062700);
    2064           8 :   parameter[G_3TE].push_back(-0.39041600);
    2065           8 :   parameter[G_3TE].push_back(0.12419400);
    2066           8 :   parameter[G_3TE].push_back(-0.01120500);
    2067             : 
    2068           8 :   parameter[G_5TE].push_back(4.23000000);
    2069           8 :   parameter[G_5TE].push_back(0.00062800);
    2070           8 :   parameter[G_5TE].push_back(0.92133500);
    2071           8 :   parameter[G_5TE].push_back(0.08029900);
    2072           8 :   parameter[G_5TE].push_back(-0.39015300);
    2073           8 :   parameter[G_5TE].push_back(0.12411600);
    2074           8 :   parameter[G_5TE].push_back(-0.01119900);
    2075             : 
    2076           8 :   parameter[G_TE3].push_back(7.82400000);
    2077           8 :   parameter[G_TE3].push_back(-0.05177400);
    2078           8 :   parameter[G_TE3].push_back(8.34606700);
    2079           8 :   parameter[G_TE3].push_back(-1.02936300);
    2080           8 :   parameter[G_TE3].push_back(-9.55211900);
    2081           8 :   parameter[G_TE3].push_back(6.37776600);
    2082           8 :   parameter[G_TE3].push_back(-1.17898000);
    2083             : 
    2084           8 :   parameter[G_TE5].push_back(8.03600000);
    2085           8 :   parameter[G_TE5].push_back(0.00525100);
    2086           8 :   parameter[G_TE5].push_back(4.71070600);
    2087           8 :   parameter[G_TE5].push_back(0.66746900);
    2088           8 :   parameter[G_TE5].push_back(-6.72538700);
    2089           8 :   parameter[G_TE5].push_back(4.03644100);
    2090           8 :   parameter[G_TE5].push_back(-0.70605700);
    2091             : 
    2092           8 :   parameter[U_BB1].push_back(32.88500000);
    2093           8 :   parameter[U_BB1].push_back(0.08321400);
    2094           8 :   parameter[U_BB1].push_back(-7.35634900);
    2095           8 :   parameter[U_BB1].push_back(2.18826800);
    2096           8 :   parameter[U_BB1].push_back(-3.56047400);
    2097           8 :   parameter[U_BB1].push_back(2.33064700);
    2098           8 :   parameter[U_BB1].push_back(-0.39744000);
    2099             : 
    2100           8 :   parameter[U_BB2].push_back(3.80600000);
    2101           8 :   parameter[U_BB2].push_back(-0.10773100);
    2102           8 :   parameter[U_BB2].push_back(9.60099900);
    2103           8 :   parameter[U_BB2].push_back(-6.26131900);
    2104           8 :   parameter[U_BB2].push_back(-0.46668300);
    2105           8 :   parameter[U_BB2].push_back(1.13698100);
    2106           8 :   parameter[U_BB2].push_back(-0.21351600);
    2107             : 
    2108           8 :   parameter[U_BB3].push_back(3.59400000);
    2109           8 :   parameter[U_BB3].push_back(0.04544300);
    2110           8 :   parameter[U_BB3].push_back(9.59625900);
    2111           8 :   parameter[U_BB3].push_back(-1.29222200);
    2112           8 :   parameter[U_BB3].push_back(-7.11143200);
    2113           8 :   parameter[U_BB3].push_back(4.05687700);
    2114           8 :   parameter[U_BB3].push_back(-0.63382800);
    2115             : 
    2116           8 :   parameter[U_SC1].push_back(5.95100000);
    2117           8 :   parameter[U_SC1].push_back(-0.02924500);
    2118           8 :   parameter[U_SC1].push_back(2.59668700);
    2119           8 :   parameter[U_SC1].push_back(-0.56118700);
    2120           8 :   parameter[U_SC1].push_back(-1.56477100);
    2121           8 :   parameter[U_SC1].push_back(0.89265100);
    2122           8 :   parameter[U_SC1].push_back(-0.14130800);
    2123             : 
    2124           8 :   parameter[U_SC2].push_back(10.90100000);
    2125           8 :   parameter[U_SC2].push_back(0.02178900);
    2126           8 :   parameter[U_SC2].push_back(0.18839000);
    2127           8 :   parameter[U_SC2].push_back(0.72223100);
    2128           8 :   parameter[U_SC2].push_back(-1.92581600);
    2129           8 :   parameter[U_SC2].push_back(0.96654300);
    2130           8 :   parameter[U_SC2].push_back(-0.14501300);
    2131             : 
    2132           8 :   parameter[U_SC3].push_back(5.24600000);
    2133           8 :   parameter[U_SC3].push_back(-0.04586500);
    2134           8 :   parameter[U_SC3].push_back(5.89978100);
    2135           8 :   parameter[U_SC3].push_back(-1.50664700);
    2136           8 :   parameter[U_SC3].push_back(-3.17054400);
    2137           8 :   parameter[U_SC3].push_back(1.93717100);
    2138           8 :   parameter[U_SC3].push_back(-0.31701000);
    2139             : 
    2140           8 :   parameter[U_3TE].push_back(4.23000000);
    2141           8 :   parameter[U_3TE].push_back(0.00067500);
    2142           8 :   parameter[U_3TE].push_back(0.92102300);
    2143           8 :   parameter[U_3TE].push_back(0.08100800);
    2144           8 :   parameter[U_3TE].push_back(-0.39084300);
    2145           8 :   parameter[U_3TE].push_back(0.12441900);
    2146           8 :   parameter[U_3TE].push_back(-0.01124900);
    2147             : 
    2148           8 :   parameter[U_5TE].push_back(4.23000000);
    2149           8 :   parameter[U_5TE].push_back(0.00059000);
    2150           8 :   parameter[U_5TE].push_back(0.92154600);
    2151           8 :   parameter[U_5TE].push_back(0.07968200);
    2152           8 :   parameter[U_5TE].push_back(-0.38950100);
    2153           8 :   parameter[U_5TE].push_back(0.12382500);
    2154           8 :   parameter[U_5TE].push_back(-0.01115100);
    2155             : 
    2156           8 :   parameter[U_TE3].push_back(7.82400000);
    2157           8 :   parameter[U_TE3].push_back(-0.02968100);
    2158           8 :   parameter[U_TE3].push_back(7.93783200);
    2159           8 :   parameter[U_TE3].push_back(-0.33078100);
    2160           8 :   parameter[U_TE3].push_back(-10.14120200);
    2161           8 :   parameter[U_TE3].push_back(6.63334700);
    2162           8 :   parameter[U_TE3].push_back(-1.22111200);
    2163             : 
    2164           8 :   parameter[U_TE5].push_back(8.03600000);
    2165           8 :   parameter[U_TE5].push_back(-0.00909700);
    2166           8 :   parameter[U_TE5].push_back(4.33193500);
    2167           8 :   parameter[U_TE5].push_back(0.43416500);
    2168           8 :   parameter[U_TE5].push_back(-5.80831400);
    2169           8 :   parameter[U_TE5].push_back(3.52438800);
    2170           8 :   parameter[U_TE5].push_back(-0.62382400);
    2171             : 
    2172           8 :   parameter[DA_BB1].push_back(32.88500000);
    2173           8 :   parameter[DA_BB1].push_back(0.08179900);
    2174           8 :   parameter[DA_BB1].push_back(-7.31735900);
    2175           8 :   parameter[DA_BB1].push_back(2.15614500);
    2176           8 :   parameter[DA_BB1].push_back(-3.52263200);
    2177           8 :   parameter[DA_BB1].push_back(2.30604700);
    2178           8 :   parameter[DA_BB1].push_back(-0.39270100);
    2179             : 
    2180           8 :   parameter[DA_BB2].push_back(3.80600000);
    2181           8 :   parameter[DA_BB2].push_back(-0.10597700);
    2182           8 :   parameter[DA_BB2].push_back(9.52537500);
    2183           8 :   parameter[DA_BB2].push_back(-6.12991000);
    2184           8 :   parameter[DA_BB2].push_back(-0.54092600);
    2185           8 :   parameter[DA_BB2].push_back(1.15429100);
    2186           8 :   parameter[DA_BB2].push_back(-0.21503500);
    2187             : 
    2188           8 :   parameter[DA_BB3].push_back(-1.35600000);
    2189           8 :   parameter[DA_BB3].push_back(0.58928300);
    2190           8 :   parameter[DA_BB3].push_back(6.71894100);
    2191           8 :   parameter[DA_BB3].push_back(4.14050900);
    2192           8 :   parameter[DA_BB3].push_back(-9.65859900);
    2193           8 :   parameter[DA_BB3].push_back(4.43185000);
    2194           8 :   parameter[DA_BB3].push_back(-0.64657300);
    2195             : 
    2196           8 :   parameter[DA_SC1].push_back(6.67100000);
    2197           8 :   parameter[DA_SC1].push_back(-0.00871400);
    2198           8 :   parameter[DA_SC1].push_back(1.63289100);
    2199           8 :   parameter[DA_SC1].push_back(-0.06637700);
    2200           8 :   parameter[DA_SC1].push_back(-1.48632900);
    2201           8 :   parameter[DA_SC1].push_back(0.78551800);
    2202           8 :   parameter[DA_SC1].push_back(-0.12087300);
    2203             : 
    2204           8 :   parameter[DA_SC2].push_back(5.95100000);
    2205           8 :   parameter[DA_SC2].push_back(-0.02634300);
    2206           8 :   parameter[DA_SC2].push_back(2.54864300);
    2207           8 :   parameter[DA_SC2].push_back(-0.49015800);
    2208           8 :   parameter[DA_SC2].push_back(-1.55386900);
    2209           8 :   parameter[DA_SC2].push_back(0.86630200);
    2210           8 :   parameter[DA_SC2].push_back(-0.13546200);
    2211             : 
    2212           8 :   parameter[DA_SC3].push_back(11.39400000);
    2213           8 :   parameter[DA_SC3].push_back(0.00859500);
    2214           8 :   parameter[DA_SC3].push_back(-0.25471400);
    2215           8 :   parameter[DA_SC3].push_back(0.48718800);
    2216           8 :   parameter[DA_SC3].push_back(-1.74520000);
    2217           8 :   parameter[DA_SC3].push_back(0.99246200);
    2218           8 :   parameter[DA_SC3].push_back(-0.16351900);
    2219             : 
    2220           8 :   parameter[DA_SC4].push_back(6.45900000);
    2221           8 :   parameter[DA_SC4].push_back(0.01991800);
    2222           8 :   parameter[DA_SC4].push_back(4.17962300);
    2223           8 :   parameter[DA_SC4].push_back(0.97469100);
    2224           8 :   parameter[DA_SC4].push_back(-5.02950400);
    2225           8 :   parameter[DA_SC4].push_back(2.55371800);
    2226           8 :   parameter[DA_SC4].push_back(-0.39113400);
    2227             : 
    2228           8 :   parameter[DA_3TE].push_back(4.23000000);
    2229           8 :   parameter[DA_3TE].push_back(0.00062600);
    2230           8 :   parameter[DA_3TE].push_back(0.92142000);
    2231           8 :   parameter[DA_3TE].push_back(0.08016400);
    2232           8 :   parameter[DA_3TE].push_back(-0.39000300);
    2233           8 :   parameter[DA_3TE].push_back(0.12402500);
    2234           8 :   parameter[DA_3TE].push_back(-0.01117900);
    2235             : 
    2236           8 :   parameter[DA_5TE].push_back(4.23000000);
    2237           8 :   parameter[DA_5TE].push_back(0.00055500);
    2238           8 :   parameter[DA_5TE].push_back(0.92183900);
    2239           8 :   parameter[DA_5TE].push_back(0.07907600);
    2240           8 :   parameter[DA_5TE].push_back(-0.38895100);
    2241           8 :   parameter[DA_5TE].push_back(0.12359600);
    2242           8 :   parameter[DA_5TE].push_back(-0.01111600);
    2243             : 
    2244           8 :   parameter[DA_TE3].push_back(2.87400000);
    2245           8 :   parameter[DA_TE3].push_back(0.00112900);
    2246           8 :   parameter[DA_TE3].push_back(12.51167200);
    2247           8 :   parameter[DA_TE3].push_back(-7.67548000);
    2248           8 :   parameter[DA_TE3].push_back(-2.02234000);
    2249           8 :   parameter[DA_TE3].push_back(2.50837100);
    2250           8 :   parameter[DA_TE3].push_back(-0.49458500);
    2251             : 
    2252           8 :   parameter[DA_TE5].push_back(8.03600000);
    2253           8 :   parameter[DA_TE5].push_back(0.00473100);
    2254           8 :   parameter[DA_TE5].push_back(4.65554400);
    2255           8 :   parameter[DA_TE5].push_back(0.66424100);
    2256           8 :   parameter[DA_TE5].push_back(-6.62131300);
    2257           8 :   parameter[DA_TE5].push_back(3.96107400);
    2258           8 :   parameter[DA_TE5].push_back(-0.69075800);
    2259             : 
    2260           8 :   parameter[DC_BB1].push_back(32.88500000);
    2261           8 :   parameter[DC_BB1].push_back(0.08189900);
    2262           8 :   parameter[DC_BB1].push_back(-7.32493500);
    2263           8 :   parameter[DC_BB1].push_back(2.15976900);
    2264           8 :   parameter[DC_BB1].push_back(-3.52612100);
    2265           8 :   parameter[DC_BB1].push_back(2.31058600);
    2266           8 :   parameter[DC_BB1].push_back(-0.39402700);
    2267             : 
    2268           8 :   parameter[DC_BB2].push_back(3.80600000);
    2269           8 :   parameter[DC_BB2].push_back(-0.10559800);
    2270           8 :   parameter[DC_BB2].push_back(9.52527700);
    2271           8 :   parameter[DC_BB2].push_back(-6.12131700);
    2272           8 :   parameter[DC_BB2].push_back(-0.54899400);
    2273           8 :   parameter[DC_BB2].push_back(1.15592900);
    2274           8 :   parameter[DC_BB2].push_back(-0.21494500);
    2275             : 
    2276           8 :   parameter[DC_BB3].push_back(-1.35600000);
    2277           8 :   parameter[DC_BB3].push_back(0.55525700);
    2278           8 :   parameter[DC_BB3].push_back(6.80305500);
    2279           8 :   parameter[DC_BB3].push_back(4.05924700);
    2280           8 :   parameter[DC_BB3].push_back(-9.61034700);
    2281           8 :   parameter[DC_BB3].push_back(4.41253800);
    2282           8 :   parameter[DC_BB3].push_back(-0.64315100);
    2283             : 
    2284           8 :   parameter[DC_SC1].push_back(5.95100000);
    2285           8 :   parameter[DC_SC1].push_back(-0.02899900);
    2286           8 :   parameter[DC_SC1].push_back(2.59587800);
    2287           8 :   parameter[DC_SC1].push_back(-0.55388300);
    2288           8 :   parameter[DC_SC1].push_back(-1.56395100);
    2289           8 :   parameter[DC_SC1].push_back(0.88967400);
    2290           8 :   parameter[DC_SC1].push_back(-0.14062500);
    2291             : 
    2292           8 :   parameter[DC_SC2].push_back(11.62100000);
    2293           8 :   parameter[DC_SC2].push_back(0.01358100);
    2294           8 :   parameter[DC_SC2].push_back(-0.24913000);
    2295           8 :   parameter[DC_SC2].push_back(0.48787200);
    2296           8 :   parameter[DC_SC2].push_back(-1.52867300);
    2297           8 :   parameter[DC_SC2].push_back(0.83694900);
    2298           8 :   parameter[DC_SC2].push_back(-0.13395300);
    2299             : 
    2300           8 :   parameter[DC_SC3].push_back(5.01900000);
    2301           8 :   parameter[DC_SC3].push_back(-0.03298400);
    2302           8 :   parameter[DC_SC3].push_back(5.54242800);
    2303           8 :   parameter[DC_SC3].push_back(-0.96081500);
    2304           8 :   parameter[DC_SC3].push_back(-3.71051600);
    2305           8 :   parameter[DC_SC3].push_back(2.16500200);
    2306           8 :   parameter[DC_SC3].push_back(-0.35023400);
    2307             : 
    2308           8 :   parameter[DC_3TE].push_back(4.23000000);
    2309           8 :   parameter[DC_3TE].push_back(0.00055700);
    2310           8 :   parameter[DC_3TE].push_back(0.92181400);
    2311           8 :   parameter[DC_3TE].push_back(0.07924000);
    2312           8 :   parameter[DC_3TE].push_back(-0.38916400);
    2313           8 :   parameter[DC_3TE].push_back(0.12369900);
    2314           8 :   parameter[DC_3TE].push_back(-0.01113300);
    2315             : 
    2316           8 :   parameter[DC_5TE].push_back(4.23000000);
    2317           8 :   parameter[DC_5TE].push_back(0.00066500);
    2318           8 :   parameter[DC_5TE].push_back(0.92103900);
    2319           8 :   parameter[DC_5TE].push_back(0.08064600);
    2320           8 :   parameter[DC_5TE].push_back(-0.39034900);
    2321           8 :   parameter[DC_5TE].push_back(0.12417600);
    2322           8 :   parameter[DC_5TE].push_back(-0.01120600);
    2323             : 
    2324           8 :   parameter[DC_TE3].push_back(2.87400000);
    2325           8 :   parameter[DC_TE3].push_back(-0.05235500);
    2326           8 :   parameter[DC_TE3].push_back(13.09201200);
    2327           8 :   parameter[DC_TE3].push_back(-9.48128200);
    2328           8 :   parameter[DC_TE3].push_back(-0.14958600);
    2329           8 :   parameter[DC_TE3].push_back(1.75537200);
    2330           8 :   parameter[DC_TE3].push_back(-0.39347500);
    2331             : 
    2332           8 :   parameter[DC_TE5].push_back(8.03600000);
    2333           8 :   parameter[DC_TE5].push_back(-0.00513600);
    2334           8 :   parameter[DC_TE5].push_back(4.67705700);
    2335           8 :   parameter[DC_TE5].push_back(0.48333300);
    2336           8 :   parameter[DC_TE5].push_back(-6.34511000);
    2337           8 :   parameter[DC_TE5].push_back(3.83388500);
    2338           8 :   parameter[DC_TE5].push_back(-0.67367800);
    2339             : 
    2340           8 :   parameter[DG_BB1].push_back(32.88500000);
    2341           8 :   parameter[DG_BB1].push_back(0.08182900);
    2342           8 :   parameter[DG_BB1].push_back(-7.32133900);
    2343           8 :   parameter[DG_BB1].push_back(2.15767900);
    2344           8 :   parameter[DG_BB1].push_back(-3.52369700);
    2345           8 :   parameter[DG_BB1].push_back(2.30839600);
    2346           8 :   parameter[DG_BB1].push_back(-0.39348300);
    2347             : 
    2348           8 :   parameter[DG_BB2].push_back(3.80600000);
    2349           8 :   parameter[DG_BB2].push_back(-0.10618100);
    2350           8 :   parameter[DG_BB2].push_back(9.54169000);
    2351           8 :   parameter[DG_BB2].push_back(-6.15177600);
    2352           8 :   parameter[DG_BB2].push_back(-0.53462400);
    2353           8 :   parameter[DG_BB2].push_back(1.15581300);
    2354           8 :   parameter[DG_BB2].push_back(-0.21567000);
    2355             : 
    2356           8 :   parameter[DG_BB3].push_back(-1.35600000);
    2357           8 :   parameter[DG_BB3].push_back(0.57489100);
    2358           8 :   parameter[DG_BB3].push_back(6.75164700);
    2359           8 :   parameter[DG_BB3].push_back(4.11300900);
    2360           8 :   parameter[DG_BB3].push_back(-9.63394600);
    2361           8 :   parameter[DG_BB3].push_back(4.41675400);
    2362           8 :   parameter[DG_BB3].push_back(-0.64339900);
    2363             : 
    2364           8 :   parameter[DG_SC1].push_back(6.67100000);
    2365           8 :   parameter[DG_SC1].push_back(-0.00886600);
    2366           8 :   parameter[DG_SC1].push_back(1.63333000);
    2367           8 :   parameter[DG_SC1].push_back(-0.06892100);
    2368           8 :   parameter[DG_SC1].push_back(-1.48683500);
    2369           8 :   parameter[DG_SC1].push_back(0.78670800);
    2370           8 :   parameter[DG_SC1].push_back(-0.12113900);
    2371             : 
    2372           8 :   parameter[DG_SC2].push_back(11.39400000);
    2373           8 :   parameter[DG_SC2].push_back(0.00907900);
    2374           8 :   parameter[DG_SC2].push_back(-0.22475500);
    2375           8 :   parameter[DG_SC2].push_back(0.49535100);
    2376           8 :   parameter[DG_SC2].push_back(-1.75324900);
    2377           8 :   parameter[DG_SC2].push_back(0.98767400);
    2378           8 :   parameter[DG_SC2].push_back(-0.16150800);
    2379             : 
    2380           8 :   parameter[DG_SC3].push_back(10.90100000);
    2381           8 :   parameter[DG_SC3].push_back(0.02207600);
    2382           8 :   parameter[DG_SC3].push_back(0.17932200);
    2383           8 :   parameter[DG_SC3].push_back(0.73253200);
    2384           8 :   parameter[DG_SC3].push_back(-1.95554900);
    2385           8 :   parameter[DG_SC3].push_back(0.98339900);
    2386           8 :   parameter[DG_SC3].push_back(-0.14763600);
    2387             : 
    2388           8 :   parameter[DG_SC4].push_back(6.45900000);
    2389           8 :   parameter[DG_SC4].push_back(0.02018400);
    2390           8 :   parameter[DG_SC4].push_back(4.17705400);
    2391           8 :   parameter[DG_SC4].push_back(0.98531700);
    2392           8 :   parameter[DG_SC4].push_back(-5.04354900);
    2393           8 :   parameter[DG_SC4].push_back(2.56123700);
    2394           8 :   parameter[DG_SC4].push_back(-0.39249300);
    2395             : 
    2396           8 :   parameter[DG_3TE].push_back(4.23000000);
    2397           8 :   parameter[DG_3TE].push_back(0.00061700);
    2398           8 :   parameter[DG_3TE].push_back(0.92140100);
    2399           8 :   parameter[DG_3TE].push_back(0.08016400);
    2400           8 :   parameter[DG_3TE].push_back(-0.39003500);
    2401           8 :   parameter[DG_3TE].push_back(0.12406900);
    2402           8 :   parameter[DG_3TE].push_back(-0.01119200);
    2403             : 
    2404           8 :   parameter[DG_5TE].push_back(4.23000000);
    2405           8 :   parameter[DG_5TE].push_back(0.00064900);
    2406           8 :   parameter[DG_5TE].push_back(0.92110500);
    2407           8 :   parameter[DG_5TE].push_back(0.08031500);
    2408           8 :   parameter[DG_5TE].push_back(-0.38997000);
    2409           8 :   parameter[DG_5TE].push_back(0.12401200);
    2410           8 :   parameter[DG_5TE].push_back(-0.01118100);
    2411             : 
    2412           8 :   parameter[DG_TE3].push_back(2.87400000);
    2413           8 :   parameter[DG_TE3].push_back(0.00182000);
    2414           8 :   parameter[DG_TE3].push_back(12.41507000);
    2415           8 :   parameter[DG_TE3].push_back(-7.47384800);
    2416           8 :   parameter[DG_TE3].push_back(-2.11864700);
    2417           8 :   parameter[DG_TE3].push_back(2.50112600);
    2418           8 :   parameter[DG_TE3].push_back(-0.48652200);
    2419             : 
    2420           8 :   parameter[DG_TE5].push_back(8.03600000);
    2421           8 :   parameter[DG_TE5].push_back(0.00676400);
    2422           8 :   parameter[DG_TE5].push_back(4.65989200);
    2423           8 :   parameter[DG_TE5].push_back(0.78482500);
    2424           8 :   parameter[DG_TE5].push_back(-6.86460600);
    2425           8 :   parameter[DG_TE5].push_back(4.11675400);
    2426           8 :   parameter[DG_TE5].push_back(-0.72249100);
    2427             : 
    2428           8 :   parameter[DT_BB1].push_back(32.88500000);
    2429           8 :   parameter[DT_BB1].push_back(0.08220100);
    2430           8 :   parameter[DT_BB1].push_back(-7.33006800);
    2431           8 :   parameter[DT_BB1].push_back(2.16636500);
    2432           8 :   parameter[DT_BB1].push_back(-3.53465700);
    2433           8 :   parameter[DT_BB1].push_back(2.31447600);
    2434           8 :   parameter[DT_BB1].push_back(-0.39445400);
    2435             : 
    2436           8 :   parameter[DT_BB2].push_back(3.80600000);
    2437           8 :   parameter[DT_BB2].push_back(-0.10723000);
    2438           8 :   parameter[DT_BB2].push_back(9.56675000);
    2439           8 :   parameter[DT_BB2].push_back(-6.20236100);
    2440           8 :   parameter[DT_BB2].push_back(-0.49550400);
    2441           8 :   parameter[DT_BB2].push_back(1.14300600);
    2442           8 :   parameter[DT_BB2].push_back(-0.21420000);
    2443             : 
    2444           8 :   parameter[DT_BB3].push_back(-1.35600000);
    2445           8 :   parameter[DT_BB3].push_back(0.56737900);
    2446           8 :   parameter[DT_BB3].push_back(6.76595400);
    2447           8 :   parameter[DT_BB3].push_back(4.08976100);
    2448           8 :   parameter[DT_BB3].push_back(-9.61512500);
    2449           8 :   parameter[DT_BB3].push_back(4.40975100);
    2450           8 :   parameter[DT_BB3].push_back(-0.64239800);
    2451             : 
    2452           8 :   parameter[DT_SC1].push_back(5.95100000);
    2453           8 :   parameter[DT_SC1].push_back(-0.02926500);
    2454           8 :   parameter[DT_SC1].push_back(2.59630300);
    2455           8 :   parameter[DT_SC1].push_back(-0.56152200);
    2456           8 :   parameter[DT_SC1].push_back(-1.56532600);
    2457           8 :   parameter[DT_SC1].push_back(0.89322800);
    2458           8 :   parameter[DT_SC1].push_back(-0.14142900);
    2459             : 
    2460           8 :   parameter[DT_SC2].push_back(10.90100000);
    2461           8 :   parameter[DT_SC2].push_back(0.02183400);
    2462           8 :   parameter[DT_SC2].push_back(0.19463000);
    2463           8 :   parameter[DT_SC2].push_back(0.72393000);
    2464           8 :   parameter[DT_SC2].push_back(-1.93199500);
    2465           8 :   parameter[DT_SC2].push_back(0.96856300);
    2466           8 :   parameter[DT_SC2].push_back(-0.14512600);
    2467             : 
    2468           8 :   parameter[DT_SC3].push_back(4.31400000);
    2469           8 :   parameter[DT_SC3].push_back(-0.07745600);
    2470           8 :   parameter[DT_SC3].push_back(12.49820300);
    2471           8 :   parameter[DT_SC3].push_back(-7.64994200);
    2472           8 :   parameter[DT_SC3].push_back(-3.00359600);
    2473           8 :   parameter[DT_SC3].push_back(3.26263300);
    2474           8 :   parameter[DT_SC3].push_back(-0.64498600);
    2475             : 
    2476           8 :   parameter[DT_3TE].push_back(4.23000000);
    2477           8 :   parameter[DT_3TE].push_back(0.00062000);
    2478           8 :   parameter[DT_3TE].push_back(0.92141100);
    2479           8 :   parameter[DT_3TE].push_back(0.08030900);
    2480           8 :   parameter[DT_3TE].push_back(-0.39021500);
    2481           8 :   parameter[DT_3TE].push_back(0.12414000);
    2482           8 :   parameter[DT_3TE].push_back(-0.01120100);
    2483             : 
    2484           8 :   parameter[DT_5TE].push_back(4.23000000);
    2485           8 :   parameter[DT_5TE].push_back(0.00063700);
    2486           8 :   parameter[DT_5TE].push_back(0.92130800);
    2487           8 :   parameter[DT_5TE].push_back(0.08026900);
    2488           8 :   parameter[DT_5TE].push_back(-0.39007500);
    2489           8 :   parameter[DT_5TE].push_back(0.12406600);
    2490           8 :   parameter[DT_5TE].push_back(-0.01118800);
    2491             : 
    2492           8 :   parameter[DT_TE3].push_back(2.87400000);
    2493           8 :   parameter[DT_TE3].push_back(-0.00251200);
    2494           8 :   parameter[DT_TE3].push_back(12.43576400);
    2495           8 :   parameter[DT_TE3].push_back(-7.55343800);
    2496           8 :   parameter[DT_TE3].push_back(-2.07363500);
    2497           8 :   parameter[DT_TE3].push_back(2.51279300);
    2498           8 :   parameter[DT_TE3].push_back(-0.49437100);
    2499             : 
    2500           8 :   parameter[DT_TE5].push_back(8.03600000);
    2501           8 :   parameter[DT_TE5].push_back(0.00119900);
    2502           8 :   parameter[DT_TE5].push_back(4.91762300);
    2503           8 :   parameter[DT_TE5].push_back(0.65637000);
    2504           8 :   parameter[DT_TE5].push_back(-7.23392500);
    2505           8 :   parameter[DT_TE5].push_back(4.44636600);
    2506           8 :   parameter[DT_TE5].push_back(-0.79467800);
    2507             : 
    2508           8 :   auto* moldat=plumed.getActionSet().selectLatest<GenericMolInfo*>(this);
    2509           8 :   if( moldat ) {
    2510        8400 :     for(unsigned i=0; i<atoms.size(); ++i) {
    2511        8392 :       std::string Aname = moldat->getAtomName(atoms[i]);
    2512        8392 :       std::string Rname = moldat->getResidueName(atoms[i]);
    2513        8392 :       if(Rname=="ALA") {
    2514          72 :         if(Aname=="BB") {
    2515          72 :           atoi[i]=ALA_BB;
    2516             :         } else {
    2517           0 :           error("Atom name not known: "+Aname);
    2518             :         }
    2519        8320 :       } else if(Rname=="ARG") {
    2520         420 :         if(Aname=="BB") {
    2521         140 :           atoi[i]=ARG_BB;
    2522         280 :         } else if(Aname=="SC1") {
    2523         140 :           atoi[i]=ARG_SC1;
    2524         140 :         } else if(Aname=="SC2") {
    2525         140 :           atoi[i]=ARG_SC2;
    2526             :         } else {
    2527           0 :           error("Atom name not known: "+Aname);
    2528             :         }
    2529        7900 :       } else if(Rname=="ASN") {
    2530         240 :         if(Aname=="BB") {
    2531         120 :           atoi[i]=ASN_BB;
    2532         120 :         } else if(Aname=="SC1") {
    2533         120 :           atoi[i]=ASN_SC1;
    2534             :         } else {
    2535           0 :           error("Atom name not known: "+Aname);
    2536             :         }
    2537        7660 :       } else if(Rname=="ASP") {
    2538         368 :         if(Aname=="BB") {
    2539         184 :           atoi[i]=ASP_BB;
    2540         184 :         } else if(Aname=="SC1") {
    2541         184 :           atoi[i]=ASP_SC1;
    2542             :         } else {
    2543           0 :           error("Atom name not known: "+Aname);
    2544             :         }
    2545        7292 :       } else if(Rname=="CYS") {
    2546          16 :         if(Aname=="BB") {
    2547           8 :           atoi[i]=CYS_BB;
    2548           8 :         } else if(Aname=="SC1") {
    2549           8 :           atoi[i]=CYS_SC1;
    2550             :         } else {
    2551           0 :           error("Atom name not known: "+Aname);
    2552             :         }
    2553        7276 :       } else if(Rname=="GLN") {
    2554         224 :         if(Aname=="BB") {
    2555         112 :           atoi[i]=GLN_BB;
    2556         112 :         } else if(Aname=="SC1") {
    2557         112 :           atoi[i]=GLN_SC1;
    2558             :         } else {
    2559           0 :           error("Atom name not known: "+Aname);
    2560             :         }
    2561        7052 :       } else if(Rname=="GLU") {
    2562         480 :         if(Aname=="BB") {
    2563         240 :           atoi[i]=GLU_BB;
    2564         240 :         } else if(Aname=="SC1") {
    2565         240 :           atoi[i]=GLU_SC1;
    2566             :         } else {
    2567           0 :           error("Atom name not known: "+Aname);
    2568             :         }
    2569        6572 :       } else if(Rname=="GLY") {
    2570         116 :         if(Aname=="BB") {
    2571         116 :           atoi[i]=GLY_BB;
    2572             :         } else {
    2573           0 :           error("Atom name not known: "+Aname);
    2574             :         }
    2575        6456 :       } else if(Rname=="HIS") {
    2576         576 :         if(Aname=="BB") {
    2577         144 :           atoi[i]=HIS_BB;
    2578         432 :         } else if(Aname=="SC1") {
    2579         144 :           atoi[i]=HIS_SC1;
    2580         288 :         } else if(Aname=="SC2") {
    2581         144 :           atoi[i]=HIS_SC2;
    2582         144 :         } else if(Aname=="SC3") {
    2583         144 :           atoi[i]=HIS_SC3;
    2584             :         } else {
    2585           0 :           error("Atom name not known: "+Aname);
    2586             :         }
    2587        5880 :       } else if(Rname=="ILE") {
    2588         584 :         if(Aname=="BB") {
    2589         292 :           atoi[i]=ILE_BB;
    2590         292 :         } else if(Aname=="SC1") {
    2591         292 :           atoi[i]=ILE_SC1;
    2592             :         } else {
    2593           0 :           error("Atom name not known: "+Aname);
    2594             :         }
    2595        5296 :       } else if(Rname=="LEU") {
    2596         448 :         if(Aname=="BB") {
    2597         224 :           atoi[i]=LEU_BB;
    2598         224 :         } else if(Aname=="SC1") {
    2599         224 :           atoi[i]=LEU_SC1;
    2600             :         } else {
    2601           0 :           error("Atom name not known: "+Aname);
    2602             :         }
    2603        4848 :       } else if(Rname=="LYS") {
    2604         792 :         if(Aname=="BB") {
    2605         264 :           atoi[i]=LYS_BB;
    2606         528 :         } else if(Aname=="SC1") {
    2607         264 :           atoi[i]=LYS_SC1;
    2608         264 :         } else if(Aname=="SC2") {
    2609         264 :           atoi[i]=LYS_SC2;
    2610             :         } else {
    2611           0 :           error("Atom name not known: "+Aname);
    2612             :         }
    2613        4056 :       } else if(Rname=="MET") {
    2614          80 :         if(Aname=="BB") {
    2615          40 :           atoi[i]=MET_BB;
    2616          40 :         } else if(Aname=="SC1") {
    2617          40 :           atoi[i]=MET_SC1;
    2618             :         } else {
    2619           0 :           error("Atom name not known: "+Aname);
    2620             :         }
    2621        3976 :       } else if(Rname=="PHE") {
    2622         512 :         if(Aname=="BB") {
    2623         128 :           atoi[i]=PHE_BB;
    2624         384 :         } else if(Aname=="SC1") {
    2625         128 :           atoi[i]=PHE_SC1;
    2626         256 :         } else if(Aname=="SC2") {
    2627         128 :           atoi[i]=PHE_SC2;
    2628         128 :         } else if(Aname=="SC3") {
    2629         128 :           atoi[i]=PHE_SC3;
    2630             :         } else {
    2631           0 :           error("Atom name not known: "+Aname);
    2632             :         }
    2633        3464 :       } else if(Rname=="PRO") {
    2634         128 :         if(Aname=="BB") {
    2635          64 :           atoi[i]=PRO_BB;
    2636          64 :         } else if(Aname=="SC1") {
    2637          64 :           atoi[i]=PRO_SC1;
    2638             :         } else {
    2639           0 :           error("Atom name not known: "+Aname);
    2640             :         }
    2641        3336 :       } else if(Rname=="SER") {
    2642         248 :         if(Aname=="BB") {
    2643         124 :           atoi[i]=SER_BB;
    2644         124 :         } else if(Aname=="SC1") {
    2645         124 :           atoi[i]=SER_SC1;
    2646             :         } else {
    2647           0 :           error("Atom name not known: "+Aname);
    2648             :         }
    2649        3088 :       } else if(Rname=="THR") {
    2650         288 :         if(Aname=="BB") {
    2651         144 :           atoi[i]=THR_BB;
    2652         144 :         } else if(Aname=="SC1") {
    2653         144 :           atoi[i]=THR_SC1;
    2654             :         } else {
    2655           0 :           error("Atom name not known: "+Aname);
    2656             :         }
    2657        2800 :       } else if(Rname=="TRP") {
    2658           0 :         if(Aname=="BB") {
    2659           0 :           atoi[i]=TRP_BB;
    2660           0 :         } else if(Aname=="SC1") {
    2661           0 :           atoi[i]=TRP_SC1;
    2662           0 :         } else if(Aname=="SC2") {
    2663           0 :           atoi[i]=TRP_SC2;
    2664           0 :         } else if(Aname=="SC3") {
    2665           0 :           atoi[i]=TRP_SC3;
    2666           0 :         } else if(Aname=="SC4") {
    2667           0 :           atoi[i]=TRP_SC4;
    2668             :         } else {
    2669           0 :           error("Atom name not known: "+Aname);
    2670             :         }
    2671        2800 :       } else if(Rname=="TYR") {
    2672         544 :         if(Aname=="BB") {
    2673         136 :           atoi[i]=TYR_BB;
    2674         408 :         } else if(Aname=="SC1") {
    2675         136 :           atoi[i]=TYR_SC1;
    2676         272 :         } else if(Aname=="SC2") {
    2677         136 :           atoi[i]=TYR_SC2;
    2678         136 :         } else if(Aname=="SC3") {
    2679         136 :           atoi[i]=TYR_SC3;
    2680             :         } else {
    2681           0 :           error("Atom name not known: "+Aname);
    2682             :         }
    2683        2256 :       } else if(Rname=="VAL") {
    2684         288 :         if(Aname=="BB") {
    2685         144 :           atoi[i]=VAL_BB;
    2686         144 :         } else if(Aname=="SC1") {
    2687         144 :           atoi[i]=VAL_SC1;
    2688             :         } else {
    2689           0 :           error("Atom name not known: "+Aname);
    2690             :         }
    2691        1968 :       } else if(Rname=="  A") {
    2692           0 :         if(Aname=="BB1") {
    2693           0 :           atoi[i]=A_BB1;
    2694           0 :         } else if(Aname=="BB2") {
    2695           0 :           atoi[i]=A_BB2;
    2696           0 :         } else if(Aname=="BB3") {
    2697           0 :           atoi[i]=A_BB3;
    2698           0 :         } else if(Aname=="SC1") {
    2699           0 :           atoi[i]=A_SC1;
    2700           0 :         } else if(Aname=="SC2") {
    2701           0 :           atoi[i]=A_SC2;
    2702           0 :         } else if(Aname=="SC3") {
    2703           0 :           atoi[i]=A_SC3;
    2704           0 :         } else if(Aname=="SC4") {
    2705           0 :           atoi[i]=A_SC4;
    2706           0 :         } else if(Aname=="3TE") {
    2707           0 :           atoi[i]=A_3TE;
    2708           0 :         } else if(Aname=="5TE") {
    2709           0 :           atoi[i]=A_5TE;
    2710           0 :         } else if(Aname=="TE3") {
    2711           0 :           atoi[i]=A_TE3;
    2712           0 :         } else if(Aname=="TE5") {
    2713           0 :           atoi[i]=A_TE5;
    2714             :         } else {
    2715           0 :           error("Atom name not known: "+Aname);
    2716             :         }
    2717        1968 :       } else if(Rname=="  C") {
    2718           0 :         if(Aname=="BB1") {
    2719           0 :           atoi[i]=C_BB1;
    2720           0 :         } else if(Aname=="BB2") {
    2721           0 :           atoi[i]=C_BB2;
    2722           0 :         } else if(Aname=="BB3") {
    2723           0 :           atoi[i]=C_BB3;
    2724           0 :         } else if(Aname=="SC1") {
    2725           0 :           atoi[i]=C_SC1;
    2726           0 :         } else if(Aname=="SC2") {
    2727           0 :           atoi[i]=C_SC2;
    2728           0 :         } else if(Aname=="SC3") {
    2729           0 :           atoi[i]=C_SC3;
    2730           0 :         } else if(Aname=="3TE") {
    2731           0 :           atoi[i]=C_3TE;
    2732           0 :         } else if(Aname=="5TE") {
    2733           0 :           atoi[i]=C_5TE;
    2734           0 :         } else if(Aname=="TE3") {
    2735           0 :           atoi[i]=C_TE3;
    2736           0 :         } else if(Aname=="TE5") {
    2737           0 :           atoi[i]=C_TE5;
    2738             :         } else {
    2739           0 :           error("Atom name not known: "+Aname);
    2740             :         }
    2741        1968 :       } else if(Rname=="  G") {
    2742           0 :         if(Aname=="BB1") {
    2743           0 :           atoi[i]=G_BB1;
    2744           0 :         } else if(Aname=="BB2") {
    2745           0 :           atoi[i]=G_BB2;
    2746           0 :         } else if(Aname=="BB3") {
    2747           0 :           atoi[i]=G_BB3;
    2748           0 :         } else if(Aname=="SC1") {
    2749           0 :           atoi[i]=G_SC1;
    2750           0 :         } else if(Aname=="SC2") {
    2751           0 :           atoi[i]=G_SC2;
    2752           0 :         } else if(Aname=="SC3") {
    2753           0 :           atoi[i]=G_SC3;
    2754           0 :         } else if(Aname=="SC4") {
    2755           0 :           atoi[i]=G_SC4;
    2756           0 :         } else if(Aname=="3TE") {
    2757           0 :           atoi[i]=G_3TE;
    2758           0 :         } else if(Aname=="5TE") {
    2759           0 :           atoi[i]=G_5TE;
    2760           0 :         } else if(Aname=="TE3") {
    2761           0 :           atoi[i]=G_TE3;
    2762           0 :         } else if(Aname=="TE5") {
    2763           0 :           atoi[i]=G_TE5;
    2764             :         } else {
    2765           0 :           error("Atom name not known: "+Aname);
    2766             :         }
    2767        1968 :       } else if(Rname=="  U") {
    2768           0 :         if(Aname=="BB1") {
    2769           0 :           atoi[i]=U_BB1;
    2770           0 :         } else if(Aname=="BB2") {
    2771           0 :           atoi[i]=U_BB2;
    2772           0 :         } else if(Aname=="BB3") {
    2773           0 :           atoi[i]=U_BB3;
    2774           0 :         } else if(Aname=="SC1") {
    2775           0 :           atoi[i]=U_SC1;
    2776           0 :         } else if(Aname=="SC2") {
    2777           0 :           atoi[i]=U_SC2;
    2778           0 :         } else if(Aname=="SC3") {
    2779           0 :           atoi[i]=U_SC3;
    2780           0 :         } else if(Aname=="3TE") {
    2781           0 :           atoi[i]=U_3TE;
    2782           0 :         } else if(Aname=="5TE") {
    2783           0 :           atoi[i]=U_5TE;
    2784           0 :         } else if(Aname=="TE3") {
    2785           0 :           atoi[i]=U_TE3;
    2786           0 :         } else if(Aname=="TE5") {
    2787           0 :           atoi[i]=U_TE5;
    2788             :         } else {
    2789           0 :           error("Atom name not known: "+Aname);
    2790             :         }
    2791        1968 :       } else if(Rname==" DA") {
    2792         696 :         if(Aname=="BB1") {
    2793          96 :           atoi[i]=DA_BB1;
    2794         600 :         } else if(Aname=="BB2") {
    2795          96 :           atoi[i]=DA_BB2;
    2796         504 :         } else if(Aname=="BB3") {
    2797          96 :           atoi[i]=DA_BB3;
    2798         408 :         } else if(Aname=="SC1") {
    2799         100 :           atoi[i]=DA_SC1;
    2800         308 :         } else if(Aname=="SC2") {
    2801         100 :           atoi[i]=DA_SC2;
    2802         208 :         } else if(Aname=="SC3") {
    2803         100 :           atoi[i]=DA_SC3;
    2804         108 :         } else if(Aname=="SC4") {
    2805         100 :           atoi[i]=DA_SC4;
    2806           8 :         } else if(Aname=="3TE") {
    2807           0 :           atoi[i]=DA_3TE;
    2808           8 :         } else if(Aname=="5TE") {
    2809           0 :           atoi[i]=DA_5TE;
    2810           8 :         } else if(Aname=="TE3") {
    2811           4 :           atoi[i]=DA_TE3;
    2812           4 :         } else if(Aname=="TE5") {
    2813           4 :           atoi[i]=DA_TE5;
    2814             :         } else {
    2815           0 :           error("Atom name not known: "+Aname);
    2816             :         }
    2817        1272 :       } else if(Rname==" DC") {
    2818         312 :         if(Aname=="BB1") {
    2819          52 :           atoi[i]=DC_BB1;
    2820         260 :         } else if(Aname=="BB2") {
    2821          52 :           atoi[i]=DC_BB2;
    2822         208 :         } else if(Aname=="BB3") {
    2823          52 :           atoi[i]=DC_BB3;
    2824         156 :         } else if(Aname=="SC1") {
    2825          52 :           atoi[i]=DC_SC1;
    2826         104 :         } else if(Aname=="SC2") {
    2827          52 :           atoi[i]=DC_SC2;
    2828          52 :         } else if(Aname=="SC3") {
    2829          52 :           atoi[i]=DC_SC3;
    2830           0 :         } else if(Aname=="3TE") {
    2831           0 :           atoi[i]=DC_3TE;
    2832           0 :         } else if(Aname=="5TE") {
    2833           0 :           atoi[i]=DC_5TE;
    2834           0 :         } else if(Aname=="TE3") {
    2835           0 :           atoi[i]=DC_TE3;
    2836           0 :         } else if(Aname=="TE5") {
    2837           0 :           atoi[i]=DC_TE5;
    2838             :         } else {
    2839           0 :           error("Atom name not known: "+Aname);
    2840             :         }
    2841         960 :       } else if(Rname==" DG") {
    2842         364 :         if(Aname=="BB1") {
    2843          52 :           atoi[i]=DG_BB1;
    2844         312 :         } else if(Aname=="BB2") {
    2845          52 :           atoi[i]=DG_BB2;
    2846         260 :         } else if(Aname=="BB3") {
    2847          52 :           atoi[i]=DG_BB3;
    2848         208 :         } else if(Aname=="SC1") {
    2849          52 :           atoi[i]=DG_SC1;
    2850         156 :         } else if(Aname=="SC2") {
    2851          52 :           atoi[i]=DG_SC2;
    2852         104 :         } else if(Aname=="SC3") {
    2853          52 :           atoi[i]=DG_SC3;
    2854          52 :         } else if(Aname=="SC4") {
    2855          52 :           atoi[i]=DG_SC4;
    2856           0 :         } else if(Aname=="3TE") {
    2857           0 :           atoi[i]=DG_3TE;
    2858           0 :         } else if(Aname=="5TE") {
    2859           0 :           atoi[i]=DG_5TE;
    2860           0 :         } else if(Aname=="TE3") {
    2861           0 :           atoi[i]=DG_TE3;
    2862           0 :         } else if(Aname=="TE5") {
    2863           0 :           atoi[i]=DG_TE5;
    2864             :         } else {
    2865           0 :           error("Atom name not known: "+Aname);
    2866             :         }
    2867         596 :       } else if(Rname==" DT") {
    2868         596 :         if(Aname=="BB1") {
    2869          96 :           atoi[i]=DT_BB1;
    2870         500 :         } else if(Aname=="BB2") {
    2871          96 :           atoi[i]=DT_BB2;
    2872         404 :         } else if(Aname=="BB3") {
    2873          96 :           atoi[i]=DT_BB3;
    2874         308 :         } else if(Aname=="SC1") {
    2875         100 :           atoi[i]=DT_SC1;
    2876         208 :         } else if(Aname=="SC2") {
    2877         100 :           atoi[i]=DT_SC2;
    2878         108 :         } else if(Aname=="SC3") {
    2879         100 :           atoi[i]=DT_SC3;
    2880           8 :         } else if(Aname=="3TE") {
    2881           0 :           atoi[i]=DT_3TE;
    2882           8 :         } else if(Aname=="5TE") {
    2883           0 :           atoi[i]=DT_5TE;
    2884           8 :         } else if(Aname=="TE3") {
    2885           4 :           atoi[i]=DT_TE3;
    2886           4 :         } else if(Aname=="TE5") {
    2887           4 :           atoi[i]=DT_TE5;
    2888             :         } else {
    2889           0 :           error("Atom name not known: "+Aname);
    2890             :         }
    2891             :       } else {
    2892           0 :         error("Residue not known: "+Rname);
    2893             :       }
    2894             :     }
    2895             :   } else {
    2896           0 :     error("MOLINFO DATA not found\n");
    2897             :   }
    2898           8 : }
    2899             : 
    2900           6 : 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, std::vector<unsigned> residue_atom) {
    2901             : 
    2902           6 :   parameter_solv[TRP].push_back(60737.60249988003);
    2903           6 :   parameter_solv[TRP].push_back(-77.75716755173752);
    2904           6 :   parameter_solv[TRP].push_back(-205962.98557711052);
    2905           6 :   parameter_solv[TRP].push_back(-62013.46984155453);
    2906           6 :   parameter_solv[TRP].push_back(680710.7592231638);
    2907           6 :   parameter_solv[TRP].push_back(-681336.8777362367);
    2908           6 :   parameter_solv[TRP].push_back(211473.65530642506);
    2909             : 
    2910           6 :   parameter_solv[TYR].push_back(46250.80359987982);
    2911           6 :   parameter_solv[TYR].push_back(-45.8287864681578);
    2912           6 :   parameter_solv[TYR].push_back(-143872.91752817619);
    2913           6 :   parameter_solv[TYR].push_back(-39049.68736409533);
    2914           6 :   parameter_solv[TYR].push_back(441321.71874090104);
    2915           6 :   parameter_solv[TYR].push_back(-434478.0972346327);
    2916           6 :   parameter_solv[TYR].push_back(133179.3694641212);
    2917             : 
    2918           6 :   parameter_solv[PHE].push_back(42407.164900118914);
    2919           6 :   parameter_solv[PHE].push_back(-159.1980754191431);
    2920           6 :   parameter_solv[PHE].push_back(-123847.86192757386);
    2921           6 :   parameter_solv[PHE].push_back(-41797.69041575073);
    2922           6 :   parameter_solv[PHE].push_back(380283.7035277073);
    2923           6 :   parameter_solv[PHE].push_back(-361432.67247521743);
    2924           6 :   parameter_solv[PHE].push_back(107750.64978068044);
    2925             : 
    2926           6 :   parameter_solv[HIP].push_back(24473.47360011923);
    2927           6 :   parameter_solv[HIP].push_back(-111.64156672747428);
    2928           6 :   parameter_solv[HIP].push_back(-65826.16993707925);
    2929           6 :   parameter_solv[HIP].push_back(-23305.91329798928);
    2930           6 :   parameter_solv[HIP].push_back(194795.11911635034);
    2931           6 :   parameter_solv[HIP].push_back(-180454.49458095312);
    2932           6 :   parameter_solv[HIP].push_back(52699.374196745615);
    2933             : 
    2934           6 :   parameter_solv[ARG].push_back(34106.70239988039);
    2935           6 :   parameter_solv[ARG].push_back(152.7472727640246);
    2936           6 :   parameter_solv[ARG].push_back(-117086.49392248681);
    2937           6 :   parameter_solv[ARG].push_back(-19664.229479267167);
    2938           6 :   parameter_solv[ARG].push_back(364454.0909203641);
    2939           6 :   parameter_solv[ARG].push_back(-382075.8018312776);
    2940           6 :   parameter_solv[ARG].push_back(122775.75036605193);
    2941             : 
    2942           6 :   parameter_solv[LYS].push_back(32292.090000118922);
    2943           6 :   parameter_solv[LYS].push_back(-111.97371180593888);
    2944           6 :   parameter_solv[LYS].push_back(-91953.10997619898);
    2945           6 :   parameter_solv[LYS].push_back(-30690.807047993283);
    2946           6 :   parameter_solv[LYS].push_back(282092.40760143084);
    2947           6 :   parameter_solv[LYS].push_back(-269503.2592457489);
    2948           6 :   parameter_solv[LYS].push_back(80777.81552915688);
    2949             : 
    2950           6 :   parameter_solv[CYS].push_back(11352.902500119093);
    2951           6 :   parameter_solv[CYS].push_back(-45.5226331859686);
    2952           6 :   parameter_solv[CYS].push_back(-20925.085562607524);
    2953           6 :   parameter_solv[CYS].push_back(-5662.685408989286);
    2954           6 :   parameter_solv[CYS].push_back(38559.10376731146);
    2955           6 :   parameter_solv[CYS].push_back(-27885.23426006181);
    2956           6 :   parameter_solv[CYS].push_back(6280.15058191397);
    2957             : 
    2958           6 :   parameter_solv[ASP].push_back(13511.73760011933);
    2959           6 :   parameter_solv[ASP].push_back(-59.929111107656595);
    2960           6 :   parameter_solv[ASP].push_back(-25849.869639655575);
    2961           6 :   parameter_solv[ASP].push_back(-7541.669448872824);
    2962           6 :   parameter_solv[ASP].push_back(50760.92045144903);
    2963           6 :   parameter_solv[ASP].push_back(-37677.87583269734);
    2964           6 :   parameter_solv[ASP].push_back(8745.7056219399);
    2965             : 
    2966           6 :   parameter_solv[GLU].push_back(20443.280400119456);
    2967           6 :   parameter_solv[GLU].push_back(-113.77561814283207);
    2968           6 :   parameter_solv[GLU].push_back(-45587.79314626863);
    2969           6 :   parameter_solv[GLU].push_back(-16187.556837331254);
    2970           6 :   parameter_solv[GLU].push_back(112609.65830609271);
    2971           6 :   parameter_solv[GLU].push_back(-93362.05323205091);
    2972           6 :   parameter_solv[GLU].push_back(24519.557866124724);
    2973             : 
    2974           6 :   parameter_solv[ILE].push_back(27858.948100119596);
    2975           6 :   parameter_solv[ILE].push_back(-159.27355145839834);
    2976           6 :   parameter_solv[ILE].push_back(-61571.43463039565);
    2977           6 :   parameter_solv[ILE].push_back(-21324.879474559468);
    2978           6 :   parameter_solv[ILE].push_back(144070.7572894681);
    2979           6 :   parameter_solv[ILE].push_back(-115021.81959095894);
    2980           6 :   parameter_solv[ILE].push_back(28939.085108838968);
    2981             : 
    2982           6 :   parameter_solv[LEU].push_back(27858.948100119596);
    2983           6 :   parameter_solv[LEU].push_back(-165.61892007509647);
    2984           6 :   parameter_solv[LEU].push_back(-62564.568746500125);
    2985           6 :   parameter_solv[LEU].push_back(-22465.332149768525);
    2986           6 :   parameter_solv[LEU].push_back(151616.79489291538);
    2987           6 :   parameter_solv[LEU].push_back(-122905.6119395393);
    2988           6 :   parameter_solv[LEU].push_back(31436.664377885514);
    2989             : 
    2990           6 :   parameter_solv[MET].push_back(25609.60090011981);
    2991           6 :   parameter_solv[MET].push_back(-135.38857843066708);
    2992           6 :   parameter_solv[MET].push_back(-67771.01108177133);
    2993           6 :   parameter_solv[MET].push_back(-25228.934337676077);
    2994           6 :   parameter_solv[MET].push_back(199649.95030712147);
    2995           6 :   parameter_solv[MET].push_back(-182251.94895101967);
    2996           6 :   parameter_solv[MET].push_back(52502.88444247481);
    2997             : 
    2998           6 :   parameter_solv[ASN].push_back(14376.010000119095);
    2999           6 :   parameter_solv[ASN].push_back(-67.65579048748472);
    3000           6 :   parameter_solv[ASN].push_back(-28302.87809850141);
    3001           6 :   parameter_solv[ASN].push_back(-8577.439830985548);
    3002           6 :   parameter_solv[ASN].push_back(57532.879075695324);
    3003           6 :   parameter_solv[ASN].push_back(-43261.79286366774);
    3004           6 :   parameter_solv[ASN].push_back(10186.448634149085);
    3005             : 
    3006           6 :   parameter_solv[PRO].push_back(16866.21690011944);
    3007           6 :   parameter_solv[PRO].push_back(-70.84327801054884);
    3008           6 :   parameter_solv[PRO].push_back(-31465.84064925844);
    3009           6 :   parameter_solv[PRO].push_back(-8653.3693368317);
    3010           6 :   parameter_solv[PRO].push_back(58032.28250733714);
    3011           6 :   parameter_solv[PRO].push_back(-41521.01146771431);
    3012           6 :   parameter_solv[PRO].push_back(9184.530596102064);
    3013             : 
    3014           6 :   parameter_solv[GLN].push_back(21503.289600119);
    3015           6 :   parameter_solv[GLN].push_back(-121.30164008960246);
    3016           6 :   parameter_solv[GLN].push_back(-50468.580981118175);
    3017           6 :   parameter_solv[GLN].push_back(-18462.49098408308);
    3018           6 :   parameter_solv[GLN].push_back(132718.44904081387);
    3019           6 :   parameter_solv[GLN].push_back(-113787.22666510186);
    3020           6 :   parameter_solv[GLN].push_back(30920.348610969988);
    3021             : 
    3022           6 :   parameter_solv[SER].push_back(9181.472400119354);
    3023           6 :   parameter_solv[SER].push_back(-28.77519915767741);
    3024           6 :   parameter_solv[SER].push_back(-15205.543144104717);
    3025           6 :   parameter_solv[SER].push_back(-3377.782176346411);
    3026           6 :   parameter_solv[SER].push_back(23345.555771001076);
    3027           6 :   parameter_solv[SER].push_back(-15312.694356014094);
    3028           6 :   parameter_solv[SER].push_back(3013.8428466148);
    3029             : 
    3030           6 :   parameter_solv[THR].push_back(15020.953600119403);
    3031           6 :   parameter_solv[THR].push_back(-61.91004832631006);
    3032           6 :   parameter_solv[THR].push_back(-27814.537889259853);
    3033           6 :   parameter_solv[THR].push_back(-7532.227289701552);
    3034           6 :   parameter_solv[THR].push_back(50586.30566118166);
    3035           6 :   parameter_solv[THR].push_back(-35943.866131120165);
    3036           6 :   parameter_solv[THR].push_back(7880.093558764326);
    3037             : 
    3038           6 :   parameter_solv[VAL].push_back(19647.628900119355);
    3039           6 :   parameter_solv[VAL].push_back(-89.04983250107853);
    3040           6 :   parameter_solv[VAL].push_back(-38050.09958470928);
    3041           6 :   parameter_solv[VAL].push_back(-10921.427112288537);
    3042           6 :   parameter_solv[VAL].push_back(72774.32322962297);
    3043           6 :   parameter_solv[VAL].push_back(-52689.060152305225);
    3044           6 :   parameter_solv[VAL].push_back(11806.492503632868);
    3045             : 
    3046           6 :   parameter_solv[ALA].push_back(7515.156100119276);
    3047           6 :   parameter_solv[ALA].push_back(-20.226381685697746);
    3048           6 :   parameter_solv[ALA].push_back(-11761.841094237716);
    3049           6 :   parameter_solv[ALA].push_back(-2341.4929468980367);
    3050           6 :   parameter_solv[ALA].push_back(16545.385777961936);
    3051           6 :   parameter_solv[ALA].push_back(-10397.175253025776);
    3052           6 :   parameter_solv[ALA].push_back(1921.5264606725107);
    3053             : 
    3054           6 :   parameter_solv[GLY].push_back(3594.002500119159);
    3055           6 :   parameter_solv[GLY].push_back(-6.910836154887606);
    3056           6 :   parameter_solv[GLY].push_back(-4937.354220666574);
    3057           6 :   parameter_solv[GLY].push_back(-785.4549468992149);
    3058           6 :   parameter_solv[GLY].push_back(5852.854429532936);
    3059           6 :   parameter_solv[GLY].push_back(-3391.2927115487832);
    3060           6 :   parameter_solv[GLY].push_back(552.3280571490722);
    3061             : 
    3062           6 :   parameter_solv[HIS].push_back(22888.664100119073);
    3063           6 :   parameter_solv[HIS].push_back(-133.86265270962434);
    3064           6 :   parameter_solv[HIS].push_back(-57533.51591635819);
    3065           6 :   parameter_solv[HIS].push_back(-21767.293192014684);
    3066           6 :   parameter_solv[HIS].push_back(161255.14120001195);
    3067           6 :   parameter_solv[HIS].push_back(-142176.64081149307);
    3068           6 :   parameter_solv[HIS].push_back(39642.61185646193);
    3069             : 
    3070           6 :   parameter_mix[TRP].push_back(48294.0117571196);
    3071           6 :   parameter_mix[TRP].push_back(-205.45879626487798);
    3072           6 :   parameter_mix[TRP].push_back(-148816.1858118254);
    3073           6 :   parameter_mix[TRP].push_back(-54968.030079609875);
    3074           6 :   parameter_mix[TRP].push_back(491793.79967057955);
    3075           6 :   parameter_mix[TRP].push_back(-476312.9117969879);
    3076           6 :   parameter_mix[TRP].push_back(144159.96165644142);
    3077             : 
    3078           6 :   parameter_mix[TYR].push_back(36984.20240312081);
    3079           6 :   parameter_mix[TYR].push_back(-83.86380083812203);
    3080           6 :   parameter_mix[TYR].push_back(-108820.52211887162);
    3081           6 :   parameter_mix[TYR].push_back(-33934.69818901515);
    3082           6 :   parameter_mix[TYR].push_back(341504.736372253);
    3083           6 :   parameter_mix[TYR].push_back(-334008.1748614056);
    3084           6 :   parameter_mix[TYR].push_back(102033.08077851454);
    3085             : 
    3086           6 :   parameter_mix[PHE].push_back(32119.469231338233);
    3087           6 :   parameter_mix[PHE].push_back(-172.96940450568917);
    3088           6 :   parameter_mix[PHE].push_back(-85831.4326887122);
    3089           6 :   parameter_mix[PHE].push_back(-33193.32405438845);
    3090           6 :   parameter_mix[PHE].push_back(262940.64471909316);
    3091           6 :   parameter_mix[PHE].push_back(-243540.06898907054);
    3092           6 :   parameter_mix[PHE].push_back(71084.54387480798);
    3093             : 
    3094           6 :   parameter_mix[HIP].push_back(22833.36414923898);
    3095           6 :   parameter_mix[HIP].push_back(-134.0493955562186);
    3096           6 :   parameter_mix[HIP].push_back(-55325.55607328898);
    3097           6 :   parameter_mix[HIP].push_back(-21898.314938881984);
    3098           6 :   parameter_mix[HIP].push_back(159995.6912885654);
    3099           6 :   parameter_mix[HIP].push_back(-142968.19796084083);
    3100           6 :   parameter_mix[HIP].push_back(40417.44581470003);
    3101             : 
    3102           6 :   parameter_mix[ARG].push_back(31385.401600920715);
    3103           6 :   parameter_mix[ARG].push_back(36.114094042884254);
    3104           6 :   parameter_mix[ARG].push_back(-103730.44467490204);
    3105           6 :   parameter_mix[ARG].push_back(-27036.249157905615);
    3106           6 :   parameter_mix[ARG].push_back(347011.0339314942);
    3107           6 :   parameter_mix[ARG].push_back(-358879.9736802336);
    3108           6 :   parameter_mix[ARG].push_back(114432.18361399164);
    3109             : 
    3110           6 :   parameter_mix[LYS].push_back(25511.35812671878);
    3111           6 :   parameter_mix[LYS].push_back(-130.4381491986372);
    3112           6 :   parameter_mix[LYS].push_back(-69258.61236879184);
    3113           6 :   parameter_mix[LYS].push_back(-27066.36783798707);
    3114           6 :   parameter_mix[LYS].push_back(220092.65231165203);
    3115           6 :   parameter_mix[LYS].push_back(-207794.5056092443);
    3116           6 :   parameter_mix[LYS].push_back(61665.57004630315);
    3117             : 
    3118           6 :   parameter_mix[CYS].push_back(11505.517261618916);
    3119           6 :   parameter_mix[CYS].push_back(-33.60468076978334);
    3120           6 :   parameter_mix[CYS].push_back(-18328.882710004465);
    3121           6 :   parameter_mix[CYS].push_back(-3956.9113649567626);
    3122           6 :   parameter_mix[CYS].push_back(27546.35146501212);
    3123           6 :   parameter_mix[CYS].push_back(-18024.826330595406);
    3124           6 :   parameter_mix[CYS].push_back(3551.2207387570024);
    3125             : 
    3126           6 :   parameter_mix[ASP].push_back(13713.858501879382);
    3127           6 :   parameter_mix[ASP].push_back(-51.33286241257164);
    3128           6 :   parameter_mix[ASP].push_back(-23807.8549764091);
    3129           6 :   parameter_mix[ASP].push_back(-6153.667315935503);
    3130           6 :   parameter_mix[ASP].push_back(41296.118377286424);
    3131           6 :   parameter_mix[ASP].push_back(-28740.28391184026);
    3132           6 :   parameter_mix[ASP].push_back(6132.671533319127);
    3133             : 
    3134           6 :   parameter_mix[GLU].push_back(19156.03660739947);
    3135           6 :   parameter_mix[GLU].push_back(-110.90600703589246);
    3136           6 :   parameter_mix[GLU].push_back(-40319.3351514524);
    3137           6 :   parameter_mix[GLU].push_back(-14679.813393816446);
    3138           6 :   parameter_mix[GLU].push_back(96769.28565573556);
    3139           6 :   parameter_mix[GLU].push_back(-77909.09315520026);
    3140           6 :   parameter_mix[GLU].push_back(19770.047062759568);
    3141             : 
    3142           6 :   parameter_mix[ILE].push_back(20693.06215917923);
    3143           6 :   parameter_mix[ILE].push_back(-102.87208880594848);
    3144           6 :   parameter_mix[ILE].push_back(-41080.44036311675);
    3145           6 :   parameter_mix[ILE].push_back(-12874.439649378206);
    3146           6 :   parameter_mix[ILE].push_back(84947.33147117581);
    3147           6 :   parameter_mix[ILE].push_back(-63779.07871450237);
    3148           6 :   parameter_mix[ILE].push_back(14938.919981690511);
    3149             : 
    3150           6 :   parameter_mix[LEU].push_back(20693.062159179233);
    3151           6 :   parameter_mix[LEU].push_back(-114.09539845409269);
    3152           6 :   parameter_mix[LEU].push_back(-42417.3431074524);
    3153           6 :   parameter_mix[LEU].push_back(-14393.801090829746);
    3154           6 :   parameter_mix[LEU].push_back(93640.48403643962);
    3155           6 :   parameter_mix[LEU].push_back(-71990.10354816525);
    3156           6 :   parameter_mix[LEU].push_back(17299.01082057651);
    3157             : 
    3158           6 :   parameter_mix[MET].push_back(22400.800002738917);
    3159           6 :   parameter_mix[MET].push_back(-138.14469221559762);
    3160           6 :   parameter_mix[MET].push_back(-53013.97694299946);
    3161           6 :   parameter_mix[MET].push_back(-21079.899452619244);
    3162           6 :   parameter_mix[MET].push_back(148607.1089339919);
    3163           6 :   parameter_mix[MET].push_back(-129827.63962878387);
    3164           6 :   parameter_mix[MET].push_back(35882.3297822684);
    3165             : 
    3166           6 :   parameter_mix[ASN].push_back(14384.287416519475);
    3167           6 :   parameter_mix[ASN].push_back(-55.24976731179147);
    3168           6 :   parameter_mix[ASN].push_back(-25372.978199926372);
    3169           6 :   parameter_mix[ASN].push_back(-6646.452004616925);
    3170           6 :   parameter_mix[ASN].push_back(44594.5027556148);
    3171           6 :   parameter_mix[ASN].push_back(-31202.511764907107);
    3172           6 :   parameter_mix[ASN].push_back(6703.764135873442);
    3173             : 
    3174           6 :   parameter_mix[PRO].push_back(13503.797145659117);
    3175           6 :   parameter_mix[PRO].push_back(-38.58316011847087);
    3176           6 :   parameter_mix[PRO].push_back(-21446.17847324053);
    3177           6 :   parameter_mix[PRO].push_back(-4480.55896170459);
    3178           6 :   parameter_mix[PRO].push_back(31274.287350083254);
    3179           6 :   parameter_mix[PRO].push_back(-19984.249229169505);
    3180           6 :   parameter_mix[PRO].push_back(3782.272312712745);
    3181             : 
    3182           6 :   parameter_mix[GLN].push_back(19938.23724683901);
    3183           6 :   parameter_mix[GLN].push_back(-121.24884503048865);
    3184           6 :   parameter_mix[GLN].push_back(-43928.589472297834);
    3185           6 :   parameter_mix[GLN].push_back(-16805.069757865473);
    3186           6 :   parameter_mix[GLN].push_back(112831.61348476357);
    3187           6 :   parameter_mix[GLN].push_back(-93979.08819184235);
    3188           6 :   parameter_mix[GLN].push_back(24741.563493163732);
    3189             : 
    3190           6 :   parameter_mix[SER].push_back(8813.67020471935);
    3191           6 :   parameter_mix[SER].push_back(-18.291615317790175);
    3192           6 :   parameter_mix[SER].push_back(-12585.074732466266);
    3193           6 :   parameter_mix[SER].push_back(-2064.454891600786);
    3194           6 :   parameter_mix[SER].push_back(15273.905065790364);
    3195           6 :   parameter_mix[SER].push_back(-8813.056005263466);
    3196           6 :   parameter_mix[SER].push_back(1404.9812302289881);
    3197             : 
    3198           6 :   parameter_mix[THR].push_back(13233.997179639062);
    3199           6 :   parameter_mix[THR].push_back(-39.40454157416847);
    3200           6 :   parameter_mix[THR].push_back(-21430.58717233547);
    3201           6 :   parameter_mix[THR].push_back(-4566.332853710876);
    3202           6 :   parameter_mix[THR].push_back(31717.497780073558);
    3203           6 :   parameter_mix[THR].push_back(-20299.614304281313);
    3204           6 :   parameter_mix[THR].push_back(3837.207224537505);
    3205             : 
    3206           6 :   parameter_mix[VAL].push_back(15135.438016299158);
    3207           6 :   parameter_mix[VAL].push_back(-51.415141550353205);
    3208           6 :   parameter_mix[VAL].push_back(-25859.078442379723);
    3209           6 :   parameter_mix[VAL].push_back(-6007.697291593915);
    3210           6 :   parameter_mix[VAL].push_back(40997.969600345634);
    3211           6 :   parameter_mix[VAL].push_back(-27036.257386814148);
    3212           6 :   parameter_mix[VAL].push_back(5328.922363811635);
    3213             : 
    3214           6 :   parameter_mix[ALA].push_back(6586.942863819189);
    3215           6 :   parameter_mix[ALA].push_back(-10.96713559950907);
    3216           6 :   parameter_mix[ALA].push_back(-8758.836131731925);
    3217           6 :   parameter_mix[ALA].push_back(-1223.1723720922605);
    3218           6 :   parameter_mix[ALA].push_back(9475.182453543037);
    3219           6 :   parameter_mix[ALA].push_back(-5124.611191433804);
    3220           6 :   parameter_mix[ALA].push_back(721.7625962949869);
    3221             : 
    3222           6 :   parameter_mix[GLY].push_back(3596.0718542192762);
    3223           6 :   parameter_mix[GLY].push_back(-4.079285964028122);
    3224           6 :   parameter_mix[GLY].push_back(-4089.4217504382686);
    3225           6 :   parameter_mix[GLY].push_back(-450.9650932154967);
    3226           6 :   parameter_mix[GLY].push_back(3737.026778223427);
    3227           6 :   parameter_mix[GLY].push_back(-1862.9856575810572);
    3228           6 :   parameter_mix[GLY].push_back(222.97288276257262);
    3229             : 
    3230           6 :   parameter_mix[HIS].push_back(21779.124723299232);
    3231           6 :   parameter_mix[HIS].push_back(-131.4603421188538);
    3232           6 :   parameter_mix[HIS].push_back(-49068.74667421681);
    3233           6 :   parameter_mix[HIS].push_back(-18685.909496392127);
    3234           6 :   parameter_mix[HIS].push_back(127724.60792384286);
    3235           6 :   parameter_mix[HIS].push_back(-107419.22159440348);
    3236           6 :   parameter_mix[HIS].push_back(28577.228634530744);
    3237             : 
    3238           6 :   parameter_vac[TRP].push_back(9599.949107368187);
    3239           6 :   parameter_vac[TRP].push_back(-66.35331786175249);
    3240           6 :   parameter_vac[TRP].push_back(-26311.640290970638);
    3241           6 :   parameter_vac[TRP].push_back(-11577.314600529338);
    3242           6 :   parameter_vac[TRP].push_back(85847.52554160352);
    3243           6 :   parameter_vac[TRP].push_back(-79417.17065742958);
    3244           6 :   parameter_vac[TRP].push_back(23090.348430572863);
    3245             : 
    3246           6 :   parameter_vac[TYR].push_back(7393.553846412945);
    3247           6 :   parameter_vac[TYR].push_back(-27.51954035778316);
    3248           6 :   parameter_vac[TYR].push_back(-20329.10485615286);
    3249           6 :   parameter_vac[TYR].push_back(-7444.276340508767);
    3250           6 :   parameter_vac[TYR].push_back(66343.22315132803);
    3251           6 :   parameter_vac[TYR].push_back(-64470.58721639446);
    3252           6 :   parameter_vac[TYR].push_back(19614.63563898146);
    3253             : 
    3254           6 :   parameter_vac[PHE].push_back(6081.874997705279);
    3255           6 :   parameter_vac[PHE].push_back(-40.474695969500104);
    3256           6 :   parameter_vac[PHE].push_back(-14354.627390498901);
    3257           6 :   parameter_vac[PHE].push_back(-6156.69750315959);
    3258           6 :   parameter_vac[PHE].push_back(42580.84239395237);
    3259           6 :   parameter_vac[PHE].push_back(-37704.09749809582);
    3260           6 :   parameter_vac[PHE].push_back(10543.005717478625);
    3261             : 
    3262           6 :   parameter_vac[HIP].push_back(5325.791987063724);
    3263           6 :   parameter_vac[HIP].push_back(-35.512112257530156);
    3264           6 :   parameter_vac[HIP].push_back(-11488.443296477566);
    3265           6 :   parameter_vac[HIP].push_back(-4916.724935318093);
    3266           6 :   parameter_vac[HIP].push_back(32134.338675979947);
    3267           6 :   parameter_vac[HIP].push_back(-27388.387595464188);
    3268           6 :   parameter_vac[HIP].push_back(7359.899986748838);
    3269             : 
    3270           6 :   parameter_vac[ARG].push_back(7220.306892248294);
    3271           6 :   parameter_vac[ARG].push_back(-20.65912886190997);
    3272           6 :   parameter_vac[ARG].push_back(-22700.70129646048);
    3273           6 :   parameter_vac[ARG].push_back(-8696.901551172636);
    3274           6 :   parameter_vac[ARG].push_back(83641.36257312517);
    3275           6 :   parameter_vac[ARG].push_back(-85237.33676336925);
    3276           6 :   parameter_vac[ARG].push_back(26899.162688310953);
    3277             : 
    3278           6 :   parameter_vac[LYS].push_back(5038.613120729022);
    3279           6 :   parameter_vac[LYS].push_back(-34.08366887546492);
    3280           6 :   parameter_vac[LYS].push_back(-12812.921120433106);
    3281           6 :   parameter_vac[LYS].push_back(-5843.761329082788);
    3282           6 :   parameter_vac[LYS].push_back(42419.08427856609);
    3283           6 :   parameter_vac[LYS].push_back(-39460.49038159249);
    3284           6 :   parameter_vac[LYS].push_back(11542.320830663035);
    3285             : 
    3286           6 :   parameter_vac[CYS].push_back(2915.0458981763995);
    3287           6 :   parameter_vac[CYS].push_back(-5.380571839804511);
    3288           6 :   parameter_vac[CYS].push_back(-3865.366285883624);
    3289           6 :   parameter_vac[CYS].push_back(-602.3275271136284);
    3290           6 :   parameter_vac[CYS].push_back(4524.133086072617);
    3291           6 :   parameter_vac[CYS].push_back(-2537.87137720241);
    3292           6 :   parameter_vac[CYS].push_back(381.52870758240016);
    3293             : 
    3294           6 :   parameter_vac[ASP].push_back(3479.750728224898);
    3295           6 :   parameter_vac[ASP].push_back(-10.33897891836596);
    3296           6 :   parameter_vac[ASP].push_back(-5382.628188436401);
    3297           6 :   parameter_vac[ASP].push_back(-1183.8060939576694);
    3298           6 :   parameter_vac[ASP].push_back(8100.082378727997);
    3299           6 :   parameter_vac[ASP].push_back(-5162.630696148773);
    3300           6 :   parameter_vac[ASP].push_back(958.993022379732);
    3301             : 
    3302           6 :   parameter_vac[GLU].push_back(4487.461543955491);
    3303           6 :   parameter_vac[GLU].push_back(-26.671865751817936);
    3304           6 :   parameter_vac[GLU].push_back(-8829.738168429001);
    3305           6 :   parameter_vac[GLU].push_back(-3297.668395415257);
    3306           6 :   parameter_vac[GLU].push_back(20686.457747123466);
    3307           6 :   parameter_vac[GLU].push_back(-16030.814134196151);
    3308           6 :   parameter_vac[GLU].push_back(3858.4457728083275);
    3309             : 
    3310           6 :   parameter_vac[ILE].push_back(3842.5968201937776);
    3311           6 :   parameter_vac[ILE].push_back(-13.848165050578492);
    3312           6 :   parameter_vac[ILE].push_back(-6480.062699452774);
    3313           6 :   parameter_vac[ILE].push_back(-1636.3888925440413);
    3314           6 :   parameter_vac[ILE].push_back(10967.333210698738);
    3315           6 :   parameter_vac[ILE].push_back(-7483.704914714421);
    3316           6 :   parameter_vac[ILE].push_back(1548.5696047594895);
    3317             : 
    3318           6 :   parameter_vac[LEU].push_back(3842.5968201937785);
    3319           6 :   parameter_vac[LEU].push_back(-16.2745108270949);
    3320           6 :   parameter_vac[LEU].push_back(-6807.110269770606);
    3321           6 :   parameter_vac[LEU].push_back(-1926.6303434106014);
    3322           6 :   parameter_vac[LEU].push_back(12577.952756390941);
    3323           6 :   parameter_vac[LEU].push_back(-8829.40489330961);
    3324           6 :   parameter_vac[LEU].push_back(1882.919316016889);
    3325             : 
    3326           6 :   parameter_vac[MET].push_back(4898.512892967389);
    3327           6 :   parameter_vac[MET].push_back(-30.588244886468207);
    3328           6 :   parameter_vac[MET].push_back(-10159.093665859045);
    3329           6 :   parameter_vac[MET].push_back(-4025.0261508449653);
    3330           6 :   parameter_vac[MET].push_back(26007.394369425827);
    3331           6 :   parameter_vac[MET].push_back(-21199.218680206573);
    3332           6 :   parameter_vac[MET].push_back(5423.004225853842);
    3333             : 
    3334           6 :   parameter_vac[ASN].push_back(3598.1423998115492);
    3335           6 :   parameter_vac[ASN].push_back(-10.357995638888545);
    3336           6 :   parameter_vac[ASN].push_back(-5565.603011562138);
    3337           6 :   parameter_vac[ASN].push_back(-1190.3294930971967);
    3338           6 :   parameter_vac[ASN].push_back(8227.920711951123);
    3339           6 :   parameter_vac[ASN].push_back(-5222.61541118056);
    3340           6 :   parameter_vac[ASN].push_back(968.593406702772);
    3341             : 
    3342           6 :   parameter_vac[PRO].push_back(2702.925890807494);
    3343           6 :   parameter_vac[PRO].push_back(-4.11690159421177);
    3344           6 :   parameter_vac[PRO].push_back(-3395.325331307625);
    3345           6 :   parameter_vac[PRO].push_back(-458.95242128002894);
    3346           6 :   parameter_vac[PRO].push_back(3584.3640448715823);
    3347           6 :   parameter_vac[PRO].push_back(-1921.4140769384692);
    3348           6 :   parameter_vac[PRO].push_back(267.08577848319516);
    3349             : 
    3350           6 :   parameter_vac[GLN].push_back(4621.773132292556);
    3351           6 :   parameter_vac[GLN].push_back(-29.511778489038818);
    3352           6 :   parameter_vac[GLN].push_back(-9486.077450010192);
    3353           6 :   parameter_vac[GLN].push_back(-3768.5756897489828);
    3354           6 :   parameter_vac[GLN].push_back(23828.07111260487);
    3355           6 :   parameter_vac[GLN].push_back(-19110.205836780202);
    3356           6 :   parameter_vac[GLN].push_back(4791.718204894083);
    3357             : 
    3358           6 :   parameter_vac[SER].push_back(2115.1504654043965);
    3359           6 :   parameter_vac[SER].push_back(-2.4158378234251234);
    3360           6 :   parameter_vac[SER].push_back(-2488.1131972903822);
    3361           6 :   parameter_vac[SER].push_back(-263.64072945387693);
    3362           6 :   parameter_vac[SER].push_back(2251.376687850687);
    3363           6 :   parameter_vac[SER].push_back(-1066.0790768852626);
    3364           6 :   parameter_vac[SER].push_back(105.5155397911316);
    3365             : 
    3366           6 :   parameter_vac[THR].push_back(2914.9061707158835);
    3367           6 :   parameter_vac[THR].push_back(-5.032844592364407);
    3368           6 :   parameter_vac[THR].push_back(-3903.2546253886653);
    3369           6 :   parameter_vac[THR].push_back(-559.4734271244915);
    3370           6 :   parameter_vac[THR].push_back(4315.044828297787);
    3371           6 :   parameter_vac[THR].push_back(-2331.211908177365);
    3372           6 :   parameter_vac[THR].push_back(323.76849758109853);
    3373             : 
    3374           6 :   parameter_vac[VAL].push_back(2914.8744247581953);
    3375           6 :   parameter_vac[VAL].push_back(-5.847217106105881);
    3376           6 :   parameter_vac[VAL].push_back(-4096.370479502377);
    3377           6 :   parameter_vac[VAL].push_back(-655.2917606620404);
    3378           6 :   parameter_vac[VAL].push_back(4888.77261250007);
    3379           6 :   parameter_vac[VAL].push_back(-2765.7552774385167);
    3380           6 :   parameter_vac[VAL].push_back(421.9081598033515);
    3381             : 
    3382           6 :   parameter_vac[ALA].push_back(1443.3438146824446);
    3383           6 :   parameter_vac[ALA].push_back(-1.1234573178567506);
    3384           6 :   parameter_vac[ALA].push_back(-1492.4547663363514);
    3385           6 :   parameter_vac[ALA].push_back(-121.47935619968672);
    3386           6 :   parameter_vac[ALA].push_back(1139.689871538201);
    3387           6 :   parameter_vac[ALA].push_back(-483.8336547914466);
    3388           6 :   parameter_vac[ALA].push_back(32.48231950404626);
    3389             : 
    3390           6 :   parameter_vac[GLY].push_back(899.5356000422925);
    3391           6 :   parameter_vac[GLY].push_back(-0.5200880084066986);
    3392           6 :   parameter_vac[GLY].push_back(-787.5892053280859);
    3393           6 :   parameter_vac[GLY].push_back(-56.07596224884467);
    3394           6 :   parameter_vac[GLY].push_back(546.4212287680981);
    3395           6 :   parameter_vac[GLY].push_back(-222.2667666932616);
    3396           6 :   parameter_vac[GLY].push_back(12.474587265791476);
    3397             : 
    3398           6 :   parameter_vac[HIS].push_back(5180.842705000207);
    3399           6 :   parameter_vac[HIS].push_back(-29.578973475252766);
    3400           6 :   parameter_vac[HIS].push_back(-10323.417251934066);
    3401           6 :   parameter_vac[HIS].push_back(-3788.977215582307);
    3402           6 :   parameter_vac[HIS].push_back(24427.720792289427);
    3403           6 :   parameter_vac[HIS].push_back(-19307.35836837878);
    3404           6 :   parameter_vac[HIS].push_back(4780.831414992477);
    3405             : 
    3406             :   // NUCLEIC ACIDS
    3407             : 
    3408           6 :   parameter_solv[BB_PO2].push_back(575.5201001192197);
    3409           6 :   parameter_solv[BB_PO2].push_back(-0.6126595489733868);
    3410           6 :   parameter_solv[BB_PO2].push_back(-623.3371092254897);
    3411           6 :   parameter_solv[BB_PO2].push_back(-68.05795957022156);
    3412           6 :   parameter_solv[BB_PO2].push_back(561.8052621243662);
    3413           6 :   parameter_solv[BB_PO2].push_back(-283.39573309540344);
    3414           6 :   parameter_solv[BB_PO2].push_back(35.55001698010027);
    3415             : 
    3416           6 :   parameter_solv[BB_DNA].push_back(21211.009600118316);
    3417           6 :   parameter_solv[BB_DNA].push_back(-90.18805990529991);
    3418           6 :   parameter_solv[BB_DNA].push_back(-39731.1337351215);
    3419           6 :   parameter_solv[BB_DNA].push_back(-10920.373563712878);
    3420           6 :   parameter_solv[BB_DNA].push_back(72882.21702424977);
    3421           6 :   parameter_solv[BB_DNA].push_back(-51747.487078112754);
    3422           6 :   parameter_solv[BB_DNA].push_back(11308.67842901876);
    3423             : 
    3424           6 :   parameter_solv[BB_DNA_5].push_back(22737.624100119025);
    3425           6 :   parameter_solv[BB_DNA_5].push_back(-102.72714886664163);
    3426           6 :   parameter_solv[BB_DNA_5].push_back(-43685.329677789705);
    3427           6 :   parameter_solv[BB_DNA_5].push_back(-12564.259374093454);
    3428           6 :   parameter_solv[BB_DNA_5].push_back(83454.87540484876);
    3429           6 :   parameter_solv[BB_DNA_5].push_back(-60367.15652138888);
    3430           6 :   parameter_solv[BB_DNA_5].push_back(13507.33372986899);
    3431             : 
    3432           6 :   parameter_solv[BB_DNA_3].push_back(22737.62410011902);
    3433           6 :   parameter_solv[BB_DNA_3].push_back(-101.57816684452263);
    3434           6 :   parameter_solv[BB_DNA_3].push_back(-43488.53670557616);
    3435           6 :   parameter_solv[BB_DNA_3].push_back(-12345.056184958417);
    3436           6 :   parameter_solv[BB_DNA_3].push_back(81963.5236411489);
    3437           6 :   parameter_solv[BB_DNA_3].push_back(-58791.59443618196);
    3438           6 :   parameter_solv[BB_DNA_3].push_back(13003.199362335576);
    3439             : 
    3440           6 :   parameter_solv[BB_RNA].push_back(23953.752900120977);
    3441           6 :   parameter_solv[BB_RNA].push_back(-117.35779348824401);
    3442           6 :   parameter_solv[BB_RNA].push_back(-47644.41735332837);
    3443           6 :   parameter_solv[BB_RNA].push_back(-14641.556643789863);
    3444           6 :   parameter_solv[BB_RNA].push_back(96893.48627050382);
    3445           6 :   parameter_solv[BB_RNA].push_back(-72249.62534169314);
    3446           6 :   parameter_solv[BB_RNA].push_back(16792.05552105538);
    3447             : 
    3448           6 :   parameter_solv[BB_RNA_5].push_back(25574.406400119024);
    3449           6 :   parameter_solv[BB_RNA_5].push_back(-131.99642772933734);
    3450           6 :   parameter_solv[BB_RNA_5].push_back(-52136.51404531249);
    3451           6 :   parameter_solv[BB_RNA_5].push_back(-16682.14273917604);
    3452           6 :   parameter_solv[BB_RNA_5].push_back(110278.019216394);
    3453           6 :   parameter_solv[BB_RNA_5].push_back(-83715.92027818545);
    3454           6 :   parameter_solv[BB_RNA_5].push_back(19875.891337706045);
    3455             : 
    3456           6 :   parameter_solv[BB_RNA_3].push_back(25574.406400119024);
    3457           6 :   parameter_solv[BB_RNA_3].push_back(-127.96875237036166);
    3458           6 :   parameter_solv[BB_RNA_3].push_back(-51407.183917584385);
    3459           6 :   parameter_solv[BB_RNA_3].push_back(-15922.900669975606);
    3460           6 :   parameter_solv[BB_RNA_3].push_back(105078.58889106264);
    3461           6 :   parameter_solv[BB_RNA_3].push_back(-78289.16276190648);
    3462           6 :   parameter_solv[BB_RNA_3].push_back(18156.83214344118);
    3463             : 
    3464           6 :   parameter_solv[BASE_A].push_back(13282.562500119211);
    3465           6 :   parameter_solv[BASE_A].push_back(-76.45124168404048);
    3466           6 :   parameter_solv[BASE_A].push_back(-28376.06994108963);
    3467           6 :   parameter_solv[BASE_A].push_back(-9972.910773722022);
    3468           6 :   parameter_solv[BASE_A].push_back(65873.86341939073);
    3469           6 :   parameter_solv[BASE_A].push_back(-52064.33492910885);
    3470           6 :   parameter_solv[BASE_A].push_back(12931.608989412513);
    3471             : 
    3472           6 :   parameter_solv[BASE_C].push_back(10600.76160011891);
    3473           6 :   parameter_solv[BASE_C].push_back(-49.1670871249108);
    3474           6 :   parameter_solv[BASE_C].push_back(-20239.818742072875);
    3475           6 :   parameter_solv[BASE_C].push_back(-6020.278780090207);
    3476           6 :   parameter_solv[BASE_C].push_back(39632.13288981881);
    3477           6 :   parameter_solv[BASE_C].push_back(-28954.779736165576);
    3478           6 :   parameter_solv[BASE_C].push_back(6551.541109526305);
    3479             : 
    3480           6 :   parameter_solv[BASE_G].push_back(15470.384400119934);
    3481           6 :   parameter_solv[BASE_G].push_back(-93.8013620200972);
    3482           6 :   parameter_solv[BASE_G].push_back(-36188.29687013545);
    3483           6 :   parameter_solv[BASE_G].push_back(-13717.685098209471);
    3484           6 :   parameter_solv[BASE_G].push_back(95658.18473657136);
    3485           6 :   parameter_solv[BASE_G].push_back(-81262.37811451119);
    3486           6 :   parameter_solv[BASE_G].push_back(21841.903930943085);
    3487             : 
    3488           6 :   parameter_solv[BASE_T].push_back(17210.81610011936);
    3489           6 :   parameter_solv[BASE_T].push_back(-93.10189802920208);
    3490           6 :   parameter_solv[BASE_T].push_back(-36466.51927689957);
    3491           6 :   parameter_solv[BASE_T].push_back(-12425.55615716932);
    3492           6 :   parameter_solv[BASE_T].push_back(83847.427808925);
    3493           6 :   parameter_solv[BASE_T].push_back(-66735.64997846584);
    3494           6 :   parameter_solv[BASE_T].push_back(16757.3463987507);
    3495             : 
    3496           6 :   parameter_solv[BASE_U].push_back(10909.802500119395);
    3497           6 :   parameter_solv[BASE_U].push_back(-46.17712672768298);
    3498           6 :   parameter_solv[BASE_U].push_back(-20149.67695512526);
    3499           6 :   parameter_solv[BASE_U].push_back(-5590.242961204435);
    3500           6 :   parameter_solv[BASE_U].push_back(37169.2740983132);
    3501           6 :   parameter_solv[BASE_U].push_back(-26475.631627167604);
    3502           6 :   parameter_solv[BASE_U].push_back(5808.201015156168);
    3503             : 
    3504           6 :   parameter_mix[BB_PO2].push_back(1487.2888381188868);
    3505           6 :   parameter_mix[BB_PO2].push_back(-0.6155376265599789);
    3506           6 :   parameter_mix[BB_PO2].push_back(-1181.5076027691764);
    3507           6 :   parameter_mix[BB_PO2].push_back(-66.25027450710594);
    3508           6 :   parameter_mix[BB_PO2].push_back(697.0421991965113);
    3509           6 :   parameter_mix[BB_PO2].push_back(-261.8559466354847);
    3510           6 :   parameter_mix[BB_PO2].push_back(9.974337082362194);
    3511             : 
    3512           6 :   parameter_mix[BB_DNA].push_back(17766.29474499878);
    3513           6 :   parameter_mix[BB_DNA].push_back(-48.97330188566253);
    3514           6 :   parameter_mix[BB_DNA].push_back(-28199.563596327207);
    3515           6 :   parameter_mix[BB_DNA].push_back(-5623.82085602494);
    3516           6 :   parameter_mix[BB_DNA].push_back(39646.22954828498);
    3517           6 :   parameter_mix[BB_DNA].push_back(-24658.81157651943);
    3518           6 :   parameter_mix[BB_DNA].push_back(4453.73906293146);
    3519             : 
    3520           6 :   parameter_mix[BB_DNA_5].push_back(18696.09744203927);
    3521           6 :   parameter_mix[BB_DNA_5].push_back(-56.29408880833802);
    3522           6 :   parameter_mix[BB_DNA_5].push_back(-30486.108599707608);
    3523           6 :   parameter_mix[BB_DNA_5].push_back(-6524.195857141158);
    3524           6 :   parameter_mix[BB_DNA_5].push_back(45280.80142686446);
    3525           6 :   parameter_mix[BB_DNA_5].push_back(-29007.98616567993);
    3526           6 :   parameter_mix[BB_DNA_5].push_back(5488.566965501818);
    3527             : 
    3528           6 :   parameter_mix[BB_DNA_3].push_back(18696.097442039274);
    3529           6 :   parameter_mix[BB_DNA_3].push_back(-55.5645003501971);
    3530           6 :   parameter_mix[BB_DNA_3].push_back(-30422.262113654506);
    3531           6 :   parameter_mix[BB_DNA_3].push_back(-6409.659659309089);
    3532           6 :   parameter_mix[BB_DNA_3].push_back(44605.76043515699);
    3533           6 :   parameter_mix[BB_DNA_3].push_back(-28295.62152988411);
    3534           6 :   parameter_mix[BB_DNA_3].push_back(5262.5765863484);
    3535             : 
    3536           6 :   parameter_mix[BB_RNA].push_back(21356.177105457366);
    3537           6 :   parameter_mix[BB_RNA].push_back(-76.73490647754872);
    3538           6 :   parameter_mix[BB_RNA].push_back(-36845.234814782816);
    3539           6 :   parameter_mix[BB_RNA].push_back(-9066.559625582728);
    3540           6 :   parameter_mix[BB_RNA].push_back(61167.998793390485);
    3541           6 :   parameter_mix[BB_RNA].push_back(-41467.23384423218);
    3542           6 :   parameter_mix[BB_RNA].push_back(8518.937793863257);
    3543             : 
    3544           6 :   parameter_mix[BB_RNA_5].push_back(22386.63276427916);
    3545           6 :   parameter_mix[BB_RNA_5].push_back(-85.70426456933487);
    3546           6 :   parameter_mix[BB_RNA_5].push_back(-39490.50298502025);
    3547           6 :   parameter_mix[BB_RNA_5].push_back(-10223.702594972712);
    3548           6 :   parameter_mix[BB_RNA_5].push_back(68450.60459618448);
    3549           6 :   parameter_mix[BB_RNA_5].push_back(-47409.91098159006);
    3550           6 :   parameter_mix[BB_RNA_5].push_back(10031.136138513202);
    3551             : 
    3552           6 :   parameter_mix[BB_RNA_3].push_back(22386.63276427916);
    3553           6 :   parameter_mix[BB_RNA_3].push_back(-81.93760812351479);
    3554           6 :   parameter_mix[BB_RNA_3].push_back(-39031.70571520093);
    3555           6 :   parameter_mix[BB_RNA_3].push_back(-9666.316086142708);
    3556           6 :   parameter_mix[BB_RNA_3].push_back(65120.07128126262);
    3557           6 :   parameter_mix[BB_RNA_3].push_back(-44110.13603681317);
    3558           6 :   parameter_mix[BB_RNA_3].push_back(9036.76498256983);
    3559             : 
    3560           6 :   parameter_mix[BASE_A].push_back(15897.31116611889);
    3561           6 :   parameter_mix[BASE_A].push_back(-67.86385832953485);
    3562           6 :   parameter_mix[BASE_A].push_back(-28851.754660951636);
    3563           6 :   parameter_mix[BASE_A].push_back(-8144.431687170413);
    3564           6 :   parameter_mix[BASE_A].push_back(53606.39082954489);
    3565           6 :   parameter_mix[BASE_A].push_back(-38083.51243782253);
    3566           6 :   parameter_mix[BASE_A].push_back(8293.47107993253);
    3567             : 
    3568           6 :   parameter_mix[BASE_C].push_back(11733.2828871599);
    3569           6 :   parameter_mix[BASE_C].push_back(-38.76775400274115);
    3570           6 :   parameter_mix[BASE_C].push_back(-19318.84666423464);
    3571           6 :   parameter_mix[BASE_C].push_back(-4507.915522704176);
    3572           6 :   parameter_mix[BASE_C].push_back(30576.57671286052);
    3573           6 :   parameter_mix[BASE_C].push_back(-20132.46696910844);
    3574           6 :   parameter_mix[BASE_C].push_back(3947.8727087996162);
    3575             : 
    3576           6 :   parameter_mix[BASE_G].push_back(19146.612417237808);
    3577           6 :   parameter_mix[BASE_G].push_back(-102.37046638004914);
    3578           6 :   parameter_mix[BASE_G].push_back(-38718.96478190546);
    3579           6 :   parameter_mix[BASE_G].push_back(-13238.106081860074);
    3580           6 :   parameter_mix[BASE_G].push_back(87309.07460288722);
    3581           6 :   parameter_mix[BASE_G].push_back(-68364.82442984737);
    3582           6 :   parameter_mix[BASE_G].push_back(16815.362401369);
    3583             : 
    3584           6 :   parameter_mix[BASE_T].push_back(17050.440260819163);
    3585           6 :   parameter_mix[BASE_T].push_back(-76.33750600643376);
    3586           6 :   parameter_mix[BASE_T].push_back(-31849.539096715005);
    3587           6 :   parameter_mix[BASE_T].push_back(-9484.498992751434);
    3588           6 :   parameter_mix[BASE_T].push_back(62881.895771680494);
    3589           6 :   parameter_mix[BASE_T].push_back(-46531.948557759024);
    3590           6 :   parameter_mix[BASE_T].push_back(10734.196329884822);
    3591             : 
    3592           6 :   parameter_mix[BASE_U].push_back(11904.095265219023);
    3593           6 :   parameter_mix[BASE_U].push_back(-34.67511054915295);
    3594           6 :   parameter_mix[BASE_U].push_back(-18842.275003104005);
    3595           6 :   parameter_mix[BASE_U].push_back(-3993.1174764890684);
    3596           6 :   parameter_mix[BASE_U].push_back(27663.625106762345);
    3597           6 :   parameter_mix[BASE_U].push_back(-17577.387831701515);
    3598           6 :   parameter_mix[BASE_U].push_back(3273.183903219142);
    3599             : 
    3600           6 :   parameter_vac[BB_PO2].push_back(960.8822037291127);
    3601           6 :   parameter_vac[BB_PO2].push_back(-0.09312135742159174);
    3602           6 :   parameter_vac[BB_PO2].push_back(-469.39643497461844);
    3603           6 :   parameter_vac[BB_PO2].push_back(-9.779346709041985);
    3604           6 :   parameter_vac[BB_PO2].push_back(162.1581550003227);
    3605           6 :   parameter_vac[BB_PO2].push_back(-37.06686233305618);
    3606           6 :   parameter_vac[BB_PO2].push_back(-4.695586672655664);
    3607             : 
    3608           6 :   parameter_vac[BB_DNA].push_back(3720.2522996838984);
    3609           6 :   parameter_vac[BB_DNA].push_back(-5.4229642176938);
    3610           6 :   parameter_vac[BB_DNA].push_back(-4800.897672711981);
    3611           6 :   parameter_vac[BB_DNA].push_back(-597.2274673070993);
    3612           6 :   parameter_vac[BB_DNA].push_back(4825.908840953665);
    3613           6 :   parameter_vac[BB_DNA].push_back(-2451.397454446564);
    3614           6 :   parameter_vac[BB_DNA].push_back(294.93071756645685);
    3615             : 
    3616           6 :   parameter_vac[BB_DNA_5].push_back(3843.234214262163);
    3617           6 :   parameter_vac[BB_DNA_5].push_back(-6.423078416284452);
    3618           6 :   parameter_vac[BB_DNA_5].push_back(-5112.1216386963115);
    3619           6 :   parameter_vac[BB_DNA_5].push_back(-713.8373583426668);
    3620           6 :   parameter_vac[BB_DNA_5].push_back(5547.545382516269);
    3621           6 :   parameter_vac[BB_DNA_5].push_back(-2973.5659871174225);
    3622           6 :   parameter_vac[BB_DNA_5].push_back(407.2789106630427);
    3623             : 
    3624           6 :   parameter_vac[BB_DNA_3].push_back(3843.234214262163);
    3625           6 :   parameter_vac[BB_DNA_3].push_back(-6.268636561475645);
    3626           6 :   parameter_vac[BB_DNA_3].push_back(-5103.192931218086);
    3627           6 :   parameter_vac[BB_DNA_3].push_back(-693.8705734390547);
    3628           6 :   parameter_vac[BB_DNA_3].push_back(5443.979645097035);
    3629           6 :   parameter_vac[BB_DNA_3].push_back(-2871.4337477324893);
    3630           6 :   parameter_vac[BB_DNA_3].push_back(377.3062915349831);
    3631             : 
    3632           6 :   parameter_vac[BB_RNA].push_back(4760.071443398374);
    3633           6 :   parameter_vac[BB_RNA].push_back(-11.0990475402486);
    3634           6 :   parameter_vac[BB_RNA].push_back(-6934.713566418421);
    3635           6 :   parameter_vac[BB_RNA].push_back(-1256.5202524085096);
    3636           6 :   parameter_vac[BB_RNA].push_back(9024.962587066922);
    3637           6 :   parameter_vac[BB_RNA].push_back(-5386.842667932241);
    3638           6 :   parameter_vac[BB_RNA].push_back(907.42947751372);
    3639             : 
    3640           6 :   parameter_vac[BB_RNA_5].push_back(4899.051406033406);
    3641           6 :   parameter_vac[BB_RNA_5].push_back(-12.279240472628238);
    3642           6 :   parameter_vac[BB_RNA_5].push_back(-7276.273570813667);
    3643           6 :   parameter_vac[BB_RNA_5].push_back(-1400.9520839250868);
    3644           6 :   parameter_vac[BB_RNA_5].push_back(9912.215823228895);
    3645           6 :   parameter_vac[BB_RNA_5].push_back(-6079.2565270404075);
    3646           6 :   parameter_vac[BB_RNA_5].push_back(1073.53428175472);
    3647             : 
    3648           6 :   parameter_vac[BB_RNA_3].push_back(4899.051406033406);
    3649           6 :   parameter_vac[BB_RNA_3].push_back(-11.642804195148194);
    3650           6 :   parameter_vac[BB_RNA_3].push_back(-7213.774619570996);
    3651           6 :   parameter_vac[BB_RNA_3].push_back(-1317.4463949342964);
    3652           6 :   parameter_vac[BB_RNA_3].push_back(9450.928929264686);
    3653           6 :   parameter_vac[BB_RNA_3].push_back(-5643.856117200917);
    3654           6 :   parameter_vac[BB_RNA_3].push_back(949.4698817407918);
    3655             : 
    3656           6 :   parameter_vac[BASE_A].push_back(4756.697028810353);
    3657           6 :   parameter_vac[BASE_A].push_back(-12.158940746852812);
    3658           6 :   parameter_vac[BASE_A].push_back(-7106.473423744205);
    3659           6 :   parameter_vac[BASE_A].push_back(-1376.295184173137);
    3660           6 :   parameter_vac[BASE_A].push_back(9747.132255557788);
    3661           6 :   parameter_vac[BASE_A].push_back(-5900.026637038756);
    3662           6 :   parameter_vac[BASE_A].push_back(1004.6226388342955);
    3663             : 
    3664           6 :   parameter_vac[BASE_C].push_back(3246.698975674651);
    3665           6 :   parameter_vac[BASE_C].push_back(-6.125036521218687);
    3666           6 :   parameter_vac[BASE_C].push_back(-4280.666521437201);
    3667           6 :   parameter_vac[BASE_C].push_back(-684.0183580843932);
    3668           6 :   parameter_vac[BASE_C].push_back(5077.062889522692);
    3669           6 :   parameter_vac[BASE_C].push_back(-2870.3239317750963);
    3670           6 :   parameter_vac[BASE_C].push_back(434.51551177863547);
    3671             : 
    3672           6 :   parameter_vac[BASE_G].push_back(5924.105658596052);
    3673           6 :   parameter_vac[BASE_G].push_back(-23.097956587232552);
    3674           6 :   parameter_vac[BASE_G].push_back(-10149.526301285418);
    3675           6 :   parameter_vac[BASE_G].push_back(-2752.9166169522528);
    3676           6 :   parameter_vac[BASE_G].push_back(18239.32985385683);
    3677           6 :   parameter_vac[BASE_G].push_back(-12749.277858800957);
    3678           6 :   parameter_vac[BASE_G].push_back(2715.354663787367);
    3679             : 
    3680           6 :   parameter_vac[BASE_T].push_back(4222.889713694404);
    3681           6 :   parameter_vac[BASE_T].push_back(-12.15861456306705);
    3682           6 :   parameter_vac[BASE_T].push_back(-6395.50289789404);
    3683           6 :   parameter_vac[BASE_T].push_back(-1421.3942549301012);
    3684           6 :   parameter_vac[BASE_T].push_back(9757.061008720135);
    3685           6 :   parameter_vac[BASE_T].push_back(-6399.630933839126);
    3686           6 :   parameter_vac[BASE_T].push_back(1258.9874225605438);
    3687             : 
    3688           6 :   parameter_vac[BASE_U].push_back(3247.251361465539);
    3689           6 :   parameter_vac[BASE_U].push_back(-5.211020853261115);
    3690           6 :   parameter_vac[BASE_U].push_back(-4125.165310360279);
    3691           6 :   parameter_vac[BASE_U].push_back(-575.1860235473902);
    3692           6 :   parameter_vac[BASE_U].push_back(4457.6562621371495);
    3693           6 :   parameter_vac[BASE_U].push_back(-2368.7250146912766);
    3694           6 :   parameter_vac[BASE_U].push_back(313.23997718445014);
    3695             : 
    3696       21178 :   for(unsigned i=0; i<atoms.size(); ++i) {
    3697       21172 :     std::string Aname = pdb.getAtomName(atoms[i]);
    3698       21172 :     std::string Rname = pdb.getResidueName(atoms[i]);
    3699       21172 :     Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
    3700       21172 :     if(Rname=="ALA") {
    3701        1098 :       atoi[residue_atom[i]]=ALA;
    3702       20074 :     } else if(Rname=="ARG") {
    3703        1296 :       atoi[residue_atom[i]]=ARG;
    3704       18778 :     } else if(Rname=="ASN") {
    3705        1080 :       atoi[residue_atom[i]]=ASN;
    3706       17698 :     } else if(Rname=="ASP") {
    3707         936 :       atoi[residue_atom[i]]=ASP;
    3708       16762 :     } else if(Rname=="CYS") {
    3709          72 :       atoi[residue_atom[i]]=CYS;
    3710       16690 :     } else if(Rname=="GLN") {
    3711        1596 :       atoi[residue_atom[i]]=GLN;
    3712       15094 :     } else if(Rname=="GLU") {
    3713         714 :       atoi[residue_atom[i]]=GLU;
    3714       14380 :     } else if(Rname=="GLY") {
    3715         972 :       atoi[residue_atom[i]]=GLY;
    3716       13408 :     } else if(Rname=="HIS") {
    3717           0 :       atoi[residue_atom[i]]=HIS;
    3718       13408 :     } else if(Rname=="HID") {
    3719           0 :       atoi[residue_atom[i]]=HIS;
    3720       13408 :     } else if(Rname=="HIE") {
    3721         216 :       atoi[residue_atom[i]]=HIS;
    3722       13192 :     } else if(Rname=="HIP") {
    3723           0 :       atoi[residue_atom[i]]=HIP;
    3724             :       // CHARMM NAMING FOR PROTONATION STATES OF HISTIDINE
    3725       13192 :     } else if(Rname=="HSD") {
    3726           0 :       atoi[residue_atom[i]]=HIS;
    3727       13192 :     } else if(Rname=="HSE") {
    3728           0 :       atoi[residue_atom[i]]=HIS;
    3729       13192 :     } else if(Rname=="HSP") {
    3730           0 :       atoi[residue_atom[i]]=HIP;
    3731       13192 :     } else if(Rname=="ILE") {
    3732        1296 :       atoi[residue_atom[i]]=ILE;
    3733       11896 :     } else if(Rname=="LEU") {
    3734        2280 :       atoi[residue_atom[i]]=LEU;
    3735        9616 :     } else if(Rname=="LYS") {
    3736        1560 :       atoi[residue_atom[i]]=LYS;
    3737        8056 :     } else if(Rname=="MET") {
    3738         912 :       atoi[residue_atom[i]]=MET;
    3739        7144 :     } else if(Rname=="PHE") {
    3740        1512 :       atoi[residue_atom[i]]=PHE;
    3741        5632 :     } else if(Rname=="PRO") {
    3742        1122 :       atoi[residue_atom[i]]=PRO;
    3743        4510 :     } else if(Rname=="SER") {
    3744         792 :       atoi[residue_atom[i]]=SER;
    3745        3718 :     } else if(Rname=="THR") {
    3746         756 :       atoi[residue_atom[i]]=THR;
    3747        2962 :     } else if(Rname=="TRP") {
    3748           0 :       atoi[residue_atom[i]]=TRP;
    3749        2962 :     } else if(Rname=="TYR") {
    3750         792 :       atoi[residue_atom[i]]=TYR;
    3751        2170 :     } else if(Rname=="VAL") {
    3752        1632 :       atoi[residue_atom[i]]=VAL;
    3753             :     }
    3754             :     // NUCLEIC ACIDS
    3755             :     // nucleobases are not automatically populated as an additional check on the health of the PDB.
    3756             :     // RNA - G
    3757         538 :     else if(Rname=="G") {
    3758           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    3759           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    3760           0 :         atoi [residue_atom[i]]=BB_PO2;
    3761           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    3762           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    3763           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    3764           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    3765           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    3766           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    3767           0 :         atoi[residue_atom[i]]=BB_RNA;
    3768           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    3769           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    3770           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    3771           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    3772           0 :         atoi[residue_atom[i]]=BASE_G;
    3773             :       } else {
    3774           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3775             :       }
    3776             :       // RNA - G3
    3777         538 :     } else if(Rname=="G3") {
    3778           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    3779           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    3780           0 :         atoi [residue_atom[i]]=BB_PO2;
    3781           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    3782           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    3783           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    3784           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    3785           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    3786           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    3787           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    3788           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    3789           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    3790           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    3791           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    3792           0 :         atoi[residue_atom[i]]=BASE_G;
    3793             :       } else {
    3794           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3795             :       }
    3796             :       // RNA - G5
    3797         538 :     } else if(Rname=="G5") {
    3798           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    3799           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    3800           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    3801           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    3802           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    3803           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    3804           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    3805           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    3806           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    3807           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    3808           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    3809           0 :         atoi[residue_atom[i]]=BASE_G;
    3810             :       } else {
    3811           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3812             :       }
    3813             :       // RNA - U
    3814         538 :     } else if(Rname=="U") {
    3815        1554 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    3816        1176 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    3817          42 :         atoi [residue_atom[i]]=BB_PO2;
    3818        1372 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    3819        1148 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    3820         924 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    3821         714 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    3822         644 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    3823         840 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    3824         224 :         atoi[residue_atom[i]]=BB_RNA;
    3825         476 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    3826         252 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    3827         196 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    3828         154 :         atoi[residue_atom[i]]=BASE_U;
    3829             :       } else {
    3830           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3831             :       }
    3832             :       // RNA - U3
    3833         118 :     } else if(Rname=="U3") {
    3834         230 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    3835         174 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    3836           6 :         atoi [residue_atom[i]]=BB_PO2;
    3837         204 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    3838         172 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    3839         140 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    3840         110 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    3841          94 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    3842          78 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    3843          34 :         atoi[residue_atom[i]]=BB_RNA_3;
    3844          68 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    3845          36 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    3846          28 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    3847          22 :         atoi[residue_atom[i]]=BASE_U;
    3848             :       } else {
    3849           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3850             :       }
    3851             :       // RNA - U5
    3852          56 :     } else if(Rname=="U5") {
    3853         204 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    3854         172 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    3855         140 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    3856         108 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    3857          88 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    3858          78 :           Aname=="H2'1" || Aname=="H5T" ) {
    3859          34 :         atoi[residue_atom[i]]=BB_RNA_5;
    3860          68 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    3861          36 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    3862          28 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    3863          22 :         atoi[residue_atom[i]]=BASE_U;
    3864             :       } else {
    3865           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3866             :       }
    3867             :       // RNA - A
    3868           0 :     } else if(Rname=="A") {
    3869           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    3870           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    3871           0 :         atoi [residue_atom[i]]=BB_PO2;
    3872           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    3873           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    3874           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    3875           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    3876           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    3877           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    3878           0 :         atoi[residue_atom[i]]=BB_RNA;
    3879           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    3880           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    3881           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    3882           0 :                 Aname=="H61" || Aname=="H62" ) {
    3883           0 :         atoi[residue_atom[i]]=BASE_A;
    3884             :       } else {
    3885           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3886             :       }
    3887             :       // RNA - A3
    3888           0 :     } else if(Rname=="A3") {
    3889           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    3890           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    3891           0 :         atoi [residue_atom[i]]=BB_PO2;
    3892           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    3893           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    3894           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    3895           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    3896           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    3897           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    3898           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    3899           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    3900           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    3901           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    3902           0 :                 Aname=="H61" || Aname=="H62" ) {
    3903           0 :         atoi[residue_atom[i]]=BASE_A;
    3904             :       } else {
    3905           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3906             :       }
    3907             :       // RNA - A5
    3908           0 :     } else if(Rname=="A5") {
    3909           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    3910           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    3911           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    3912           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    3913           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    3914           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    3915           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    3916           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    3917           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    3918           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    3919           0 :                 Aname=="H61" || Aname=="H62" ) {
    3920           0 :         atoi[residue_atom[i]]=BASE_A;
    3921             :       } else {
    3922           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3923             :       }
    3924             :       // RNA - C
    3925           0 :     } else if(Rname=="C") {
    3926           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    3927           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    3928           0 :         atoi [residue_atom[i]]=BB_PO2;
    3929           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    3930           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    3931           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    3932           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    3933           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    3934           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    3935           0 :         atoi[residue_atom[i]]=BB_RNA;
    3936           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    3937           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    3938           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    3939           0 :         atoi[residue_atom[i]]=BASE_C;
    3940             :       } else {
    3941           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3942             :       }
    3943             :       // RNA - C3
    3944           0 :     } else if(Rname=="C3") {
    3945           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    3946           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    3947           0 :         atoi [residue_atom[i]]=BB_PO2;
    3948           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    3949           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    3950           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    3951           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    3952           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    3953           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    3954           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    3955           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    3956           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    3957           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    3958           0 :         atoi[residue_atom[i]]=BASE_C;
    3959             :       } else {
    3960           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3961             :       }
    3962             :       // RNA - C5
    3963           0 :     } else if(Rname=="C5") {
    3964           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    3965           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    3966           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    3967           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    3968           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    3969           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    3970           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    3971           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    3972           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    3973           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    3974           0 :         atoi[residue_atom[i]]=BASE_C;
    3975             :       } else {
    3976           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3977             :       }
    3978             :       // DNA - G
    3979           0 :     } else if(Rname=="DG") {
    3980           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    3981           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    3982           0 :         atoi [residue_atom[i]]=BB_PO2;
    3983           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    3984           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    3985           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    3986           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    3987           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    3988           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    3989           0 :         atoi[residue_atom[i]]=BB_DNA;
    3990           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    3991           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    3992           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    3993           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    3994           0 :         atoi[residue_atom[i]]=BASE_G;
    3995             :       } else {
    3996           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    3997             :       }
    3998             :       // DNA - G3
    3999           0 :     } else if(Rname=="DG3") {
    4000           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4001           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4002           0 :         atoi [residue_atom[i]]=BB_PO2;
    4003           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4004           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4005           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4006           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    4007           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4008             :                 Aname=="H3T" ) {
    4009           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    4010           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4011           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4012           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4013           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4014           0 :         atoi[residue_atom[i]]=BASE_G;
    4015             :       } else {
    4016           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4017             :       }
    4018             :       // DNA - G5
    4019           0 :     } else if(Rname=="DG5") {
    4020           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4021           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    4022           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4023           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4024           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4025             :           Aname=="H5T" ) {
    4026           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    4027           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    4028           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    4029           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    4030           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    4031           0 :         atoi[residue_atom[i]]=BASE_G;
    4032             :       } else {
    4033           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4034             :       }
    4035             :       // DNA - T
    4036           0 :     } else if(Rname=="DT") {
    4037           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4038           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4039           0 :         atoi [residue_atom[i]]=BB_PO2;
    4040           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4041           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4042           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4043           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4044           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4045           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4046           0 :         atoi[residue_atom[i]]=BB_DNA;
    4047           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    4048           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    4049           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    4050           0 :                 Aname=="H72" || Aname=="H73" ) {
    4051           0 :         atoi[residue_atom[i]]=BASE_T;
    4052             :       } else {
    4053           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4054             :       }
    4055             :       // DNA - T3
    4056           0 :     } else if(Rname=="DT3") {
    4057           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4058           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4059           0 :         atoi [residue_atom[i]]=BB_PO2;
    4060           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4061           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4062           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4063           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    4064           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4065             :                 Aname=="H3T" ) {
    4066           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    4067           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    4068           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    4069           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    4070           0 :                 Aname=="H72" || Aname=="H73" ) {
    4071           0 :         atoi[residue_atom[i]]=BASE_T;
    4072             :       } else {
    4073           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4074             :       }
    4075             :       // DNA - T5
    4076           0 :     } else if(Rname=="DT5") {
    4077           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4078           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    4079           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4080           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4081           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4082             :           Aname=="H5T" ) {
    4083           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    4084           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    4085           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    4086           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    4087           0 :                 Aname=="H72" || Aname=="H73" ) {
    4088           0 :         atoi[residue_atom[i]]=BASE_T;
    4089             :       } else {
    4090           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4091             :       }
    4092             :       // DNA - A
    4093           0 :     } else if(Rname=="DA") {
    4094           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4095           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4096           0 :         atoi [residue_atom[i]]=BB_PO2;
    4097           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4098           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4099           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4100           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4101           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4102           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4103           0 :         atoi[residue_atom[i]]=BB_DNA;
    4104           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4105           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4106           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4107           0 :                 Aname=="H61" || Aname=="H62" ) {
    4108           0 :         atoi[residue_atom[i]]=BASE_A;
    4109             :       } else {
    4110           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4111             :       }
    4112             :       // DNA - A3
    4113           0 :     } else if(Rname=="DA3") {
    4114           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4115           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4116           0 :         atoi [residue_atom[i]]=BB_PO2;
    4117           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4118           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4119           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4120           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    4121           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4122             :                 Aname=="H3T" ) {
    4123           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    4124           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4125           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4126           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4127           0 :                 Aname=="H61" || Aname=="H62" ) {
    4128           0 :         atoi[residue_atom[i]]=BASE_A;
    4129             :       } else {
    4130           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4131             :       }
    4132             :       // DNA - A5
    4133           0 :     } else if(Rname=="DA5") {
    4134           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4135           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    4136           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4137           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4138           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4139             :           Aname=="H5T" ) {
    4140           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    4141           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    4142           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    4143           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    4144           0 :                 Aname=="H61" || Aname=="H62" ) {
    4145           0 :         atoi[residue_atom[i]]=BASE_A;
    4146             :       } else {
    4147           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4148             :       }
    4149             :       // DNA - C
    4150           0 :     } else if(Rname=="DC") {
    4151           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4152           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4153           0 :         atoi [residue_atom[i]]=BB_PO2;
    4154           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4155           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4156           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4157           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4158           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    4159           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    4160           0 :         atoi[residue_atom[i]]=BB_DNA;
    4161           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4162           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4163           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4164           0 :         atoi[residue_atom[i]]=BASE_C;
    4165             :       } else {
    4166           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4167             :       }
    4168             :       // DNA - C3
    4169           0 :     } else if(Rname=="DC3") {
    4170           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    4171           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    4172           0 :         atoi [residue_atom[i]]=BB_PO2;
    4173           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4174           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    4175           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4176           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    4177           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4178             :                 Aname=="H3T" ) {
    4179           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    4180           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4181           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4182           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4183           0 :         atoi[residue_atom[i]]=BASE_C;
    4184             :       } else {
    4185           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4186             :       }
    4187             :       // DNA - C5
    4188           0 :     } else if(Rname=="DC5") {
    4189           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    4190           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    4191           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    4192           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    4193           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    4194             :           Aname=="H5T" ) {
    4195           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    4196           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    4197           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    4198           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    4199           0 :         atoi[residue_atom[i]]=BASE_C;
    4200             :       } else {
    4201           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    4202             :       }
    4203             :     } else {
    4204           0 :       error("Residue not known: "+Rname);
    4205             :     }
    4206             :   }
    4207           6 : }
    4208             : 
    4209           4 : 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) {
    4210           4 :   parameter_solv_H[TRP].push_back(60737.60249988011);
    4211           4 :   parameter_solv_H[TRP].push_back(-77.77344118516487);
    4212           4 :   parameter_solv_H[TRP].push_back(-205962.80436572764);
    4213           4 :   parameter_solv_H[TRP].push_back(-62014.18523271781);
    4214           4 :   parameter_solv_H[TRP].push_back(680712.0512548896);
    4215           4 :   parameter_solv_H[TRP].push_back(-681337.967312983);
    4216           4 :   parameter_solv_H[TRP].push_back(211474.00338118695);
    4217             : 
    4218           4 :   parameter_solv_H[TYR].push_back(46250.803599880084);
    4219           4 :   parameter_solv_H[TYR].push_back(-45.827646837514614);
    4220           4 :   parameter_solv_H[TYR].push_back(-143872.94597686914);
    4221           4 :   parameter_solv_H[TYR].push_back(-39049.51580628132);
    4222           4 :   parameter_solv_H[TYR].push_back(441321.31246635393);
    4223           4 :   parameter_solv_H[TYR].push_back(-434477.6826175059);
    4224           4 :   parameter_solv_H[TYR].push_back(133179.21673104732);
    4225             : 
    4226           4 :   parameter_solv_H[PHE].push_back(42407.164900118914);
    4227           4 :   parameter_solv_H[PHE].push_back(-159.20054549009086);
    4228           4 :   parameter_solv_H[PHE].push_back(-123847.83591352346);
    4229           4 :   parameter_solv_H[PHE].push_back(-41797.78884558073);
    4230           4 :   parameter_solv_H[PHE].push_back(380283.87543872406);
    4231           4 :   parameter_solv_H[PHE].push_back(-361432.81356389285);
    4232           4 :   parameter_solv_H[PHE].push_back(107750.69385054041);
    4233             : 
    4234           4 :   parameter_solv_H[HIP].push_back(24473.473600119047);
    4235           4 :   parameter_solv_H[HIP].push_back(-111.6412807124612);
    4236           4 :   parameter_solv_H[HIP].push_back(-65826.17293437096);
    4237           4 :   parameter_solv_H[HIP].push_back(-23305.902022201855);
    4238           4 :   parameter_solv_H[HIP].push_back(194795.09953510275);
    4239           4 :   parameter_solv_H[HIP].push_back(-180454.47859494278);
    4240           4 :   parameter_solv_H[HIP].push_back(52699.36922660704);
    4241             : 
    4242           4 :   parameter_solv_H[ARG].push_back(34106.70239988039);
    4243           4 :   parameter_solv_H[ARG].push_back(152.74468231268114);
    4244           4 :   parameter_solv_H[ARG].push_back(-117086.46040369231);
    4245           4 :   parameter_solv_H[ARG].push_back(-19664.37512726012);
    4246           4 :   parameter_solv_H[ARG].push_back(364454.3721646173);
    4247           4 :   parameter_solv_H[ARG].push_back(-382076.05102190404);
    4248           4 :   parameter_solv_H[ARG].push_back(122775.83306003918);
    4249             : 
    4250           4 :   parameter_solv_H[LYS].push_back(32292.09000011877);
    4251           4 :   parameter_solv_H[LYS].push_back(-111.97888350941923);
    4252           4 :   parameter_solv_H[LYS].push_back(-91953.05212591762);
    4253           4 :   parameter_solv_H[LYS].push_back(-30691.03615444628);
    4254           4 :   parameter_solv_H[LYS].push_back(282092.82233263896);
    4255           4 :   parameter_solv_H[LYS].push_back(-269503.6095978623);
    4256           4 :   parameter_solv_H[LYS].push_back(80777.92760273012);
    4257             : 
    4258           4 :   parameter_solv_H[CYS].push_back(11352.902500119093);
    4259           4 :   parameter_solv_H[CYS].push_back(-45.52255488723637);
    4260           4 :   parameter_solv_H[CYS].push_back(-20925.086525675117);
    4261           4 :   parameter_solv_H[CYS].push_back(-5662.681335644281);
    4262           4 :   parameter_solv_H[CYS].push_back(38559.09602816144);
    4263           4 :   parameter_solv_H[CYS].push_back(-27885.22747486708);
    4264           4 :   parameter_solv_H[CYS].push_back(6280.148346561226);
    4265             : 
    4266           4 :   parameter_solv_H[ASP].push_back(13511.73760011933);
    4267           4 :   parameter_solv_H[ASP].push_back(-59.92934247210642);
    4268           4 :   parameter_solv_H[ASP].push_back(-25849.867077822244);
    4269           4 :   parameter_solv_H[ASP].push_back(-7541.679510407563);
    4270           4 :   parameter_solv_H[ASP].push_back(50760.93853987092);
    4271           4 :   parameter_solv_H[ASP].push_back(-37677.89102528413);
    4272           4 :   parameter_solv_H[ASP].push_back(8745.710458140105);
    4273             : 
    4274           4 :   parameter_solv_H[GLU].push_back(20443.280400119456);
    4275           4 :   parameter_solv_H[GLU].push_back(-113.77513581661388);
    4276           4 :   parameter_solv_H[GLU].push_back(-45587.79863958479);
    4277           4 :   parameter_solv_H[GLU].push_back(-16187.534798976243);
    4278           4 :   parameter_solv_H[GLU].push_back(112609.61802147207);
    4279           4 :   parameter_solv_H[GLU].push_back(-93362.01894077536);
    4280           4 :   parameter_solv_H[GLU].push_back(24519.546829431332);
    4281             : 
    4282           4 :   parameter_solv_H[ILE].push_back(27858.948100119596);
    4283           4 :   parameter_solv_H[ILE].push_back(-159.27394962770595);
    4284           4 :   parameter_solv_H[ILE].push_back(-61571.43025249802);
    4285           4 :   parameter_solv_H[ILE].push_back(-21324.89659912433);
    4286           4 :   parameter_solv_H[ILE].push_back(144070.7880009225);
    4287           4 :   parameter_solv_H[ILE].push_back(-115021.84534734003);
    4288           4 :   parameter_solv_H[ILE].push_back(28939.093300284097);
    4289             : 
    4290           4 :   parameter_solv_H[LEU].push_back(27858.948100119596);
    4291           4 :   parameter_solv_H[LEU].push_back(-165.61872365361);
    4292           4 :   parameter_solv_H[LEU].push_back(-62564.5706162518);
    4293           4 :   parameter_solv_H[LEU].push_back(-22465.325666767214);
    4294           4 :   parameter_solv_H[LEU].push_back(151616.7844050042);
    4295           4 :   parameter_solv_H[LEU].push_back(-122905.60389771541);
    4296           4 :   parameter_solv_H[LEU].push_back(31436.66201442061);
    4297             : 
    4298           4 :   parameter_solv_H[MET].push_back(25609.60090011981);
    4299           4 :   parameter_solv_H[MET].push_back(-135.38816369794569);
    4300           4 :   parameter_solv_H[MET].push_back(-67771.01548433342);
    4301           4 :   parameter_solv_H[MET].push_back(-25228.91756660071);
    4302           4 :   parameter_solv_H[MET].push_back(199649.92084565928);
    4303           4 :   parameter_solv_H[MET].push_back(-182251.9246506795);
    4304           4 :   parameter_solv_H[MET].push_back(52502.876819125115);
    4305             : 
    4306           4 :   parameter_solv_H[ASN].push_back(14376.010000119095);
    4307           4 :   parameter_solv_H[ASN].push_back(-67.65587848183215);
    4308           4 :   parameter_solv_H[ASN].push_back(-28302.877059425664);
    4309           4 :   parameter_solv_H[ASN].push_back(-8577.444107282141);
    4310           4 :   parameter_solv_H[ASN].push_back(57532.88704197217);
    4311           4 :   parameter_solv_H[ASN].push_back(-43261.79974462857);
    4312           4 :   parameter_solv_H[ASN].push_back(10186.450874679671);
    4313             : 
    4314           4 :   parameter_solv_H[PRO].push_back(16866.21690011944);
    4315           4 :   parameter_solv_H[PRO].push_back(-70.84312112734995);
    4316           4 :   parameter_solv_H[PRO].push_back(-31465.8423531932);
    4317           4 :   parameter_solv_H[PRO].push_back(-8653.362744540535);
    4318           4 :   parameter_solv_H[PRO].push_back(58032.27079924916);
    4319           4 :   parameter_solv_H[PRO].push_back(-41521.001733021694);
    4320           4 :   parameter_solv_H[PRO].push_back(9184.527523759205);
    4321             : 
    4322           4 :   parameter_solv_H[GLN].push_back(21503.289600119);
    4323           4 :   parameter_solv_H[GLN].push_back(-121.3012777474678);
    4324           4 :   parameter_solv_H[GLN].push_back(-50468.58503443957);
    4325           4 :   parameter_solv_H[GLN].push_back(-18462.47495329696);
    4326           4 :   parameter_solv_H[GLN].push_back(132718.42007501892);
    4327           4 :   parameter_solv_H[GLN].push_back(-113787.20224345029);
    4328           4 :   parameter_solv_H[GLN].push_back(30920.340813688686);
    4329             : 
    4330           4 :   parameter_solv_H[SER].push_back(9181.47240011935);
    4331           4 :   parameter_solv_H[SER].push_back(-28.775273124392083);
    4332           4 :   parameter_solv_H[SER].push_back(-15205.54229808512);
    4333           4 :   parameter_solv_H[SER].push_back(-3377.785599913673);
    4334           4 :   parameter_solv_H[SER].push_back(23345.562090489493);
    4335           4 :   parameter_solv_H[SER].push_back(-15312.699787471944);
    4336           4 :   parameter_solv_H[SER].push_back(3013.844610647712);
    4337             : 
    4338           4 :   parameter_solv_H[THR].push_back(15020.953600119403);
    4339           4 :   parameter_solv_H[THR].push_back(-61.909951810375105);
    4340           4 :   parameter_solv_H[THR].push_back(-27814.538986050964);
    4341           4 :   parameter_solv_H[THR].push_back(-7532.222992514079);
    4342           4 :   parameter_solv_H[THR].push_back(50586.29804970814);
    4343           4 :   parameter_solv_H[THR].push_back(-35943.85986777198);
    4344           4 :   parameter_solv_H[THR].push_back(7880.091610023207);
    4345             : 
    4346           4 :   parameter_solv_H[VAL].push_back(19647.628900119355);
    4347           4 :   parameter_solv_H[VAL].push_back(-89.04968136833762);
    4348           4 :   parameter_solv_H[VAL].push_back(-38050.10118919102);
    4349           4 :   parameter_solv_H[VAL].push_back(-10921.421066774372);
    4350           4 :   parameter_solv_H[VAL].push_back(72774.31277743122);
    4351           4 :   parameter_solv_H[VAL].push_back(-52689.05168504517);
    4352           4 :   parameter_solv_H[VAL].push_back(11806.48989635518);
    4353             : 
    4354           4 :   parameter_solv_H[ALA].push_back(7515.156100119273);
    4355           4 :   parameter_solv_H[ALA].push_back(-20.226317591188526);
    4356           4 :   parameter_solv_H[ALA].push_back(-11761.841775007797);
    4357           4 :   parameter_solv_H[ALA].push_back(-2341.4903622033885);
    4358           4 :   parameter_solv_H[ALA].push_back(16545.381259883452);
    4359           4 :   parameter_solv_H[ALA].push_back(-10397.171546969075);
    4360           4 :   parameter_solv_H[ALA].push_back(1921.5253045340198);
    4361             : 
    4362           4 :   parameter_solv_H[GLY].push_back(3594.002500119159);
    4363           4 :   parameter_solv_H[GLY].push_back(-6.910832388009796);
    4364           4 :   parameter_solv_H[GLY].push_back(-4937.3542895091905);
    4365           4 :   parameter_solv_H[GLY].push_back(-785.4545979203357);
    4366           4 :   parameter_solv_H[GLY].push_back(5852.853693316741);
    4367           4 :   parameter_solv_H[GLY].push_back(-3391.2920205126734);
    4368           4 :   parameter_solv_H[GLY].push_back(552.3278183161507);
    4369             : 
    4370           4 :   parameter_solv_H[HIS].push_back(22888.664100119073);
    4371           4 :   parameter_solv_H[HIS].push_back(-133.86281863999585);
    4372           4 :   parameter_solv_H[HIS].push_back(-57533.51412287858);
    4373           4 :   parameter_solv_H[HIS].push_back(-21767.300111408193);
    4374           4 :   parameter_solv_H[HIS].push_back(161255.15347073504);
    4375           4 :   parameter_solv_H[HIS].push_back(-142176.65100718598);
    4376           4 :   parameter_solv_H[HIS].push_back(39642.61507384587);
    4377             : 
    4378           4 :   parameter_mix_H[TRP].push_back(2974.6515001192306);
    4379           4 :   parameter_mix_H[TRP].push_back(-18.361939022074825);
    4380           4 :   parameter_mix_H[TRP].push_back(-7284.637435770752);
    4381           4 :   parameter_mix_H[TRP].push_back(-2945.7969900381895);
    4382           4 :   parameter_mix_H[TRP].push_back(21235.01878657283);
    4383           4 :   parameter_mix_H[TRP].push_back(-18909.7406035548);
    4384           4 :   parameter_mix_H[TRP].push_back(5324.324204245179);
    4385             : 
    4386           4 :   parameter_mix_H[TYR].push_back(2029.7362801192114);
    4387           4 :   parameter_mix_H[TYR].push_back(-6.983186065527884);
    4388           4 :   parameter_mix_H[TYR].push_back(-5041.996113037476);
    4389           4 :   parameter_mix_H[TYR].push_back(-1744.5213085724158);
    4390           4 :   parameter_mix_H[TYR].push_back(15329.420227814338);
    4391           4 :   parameter_mix_H[TYR].push_back(-14648.322529889958);
    4392           4 :   parameter_mix_H[TYR].push_back(4405.608657083287);
    4393             : 
    4394           4 :   parameter_mix_H[PHE].push_back(1704.6885401192117);
    4395           4 :   parameter_mix_H[PHE].push_back(-10.077274979133408);
    4396           4 :   parameter_mix_H[PHE].push_back(-3769.440088334303);
    4397           4 :   parameter_mix_H[PHE].push_back(-1574.6255694551546);
    4398           4 :   parameter_mix_H[PHE].push_back(10996.32497868798);
    4399           4 :   parameter_mix_H[PHE].push_back(-9840.68281283696);
    4400           4 :   parameter_mix_H[PHE].push_back(2792.098605716682);
    4401             : 
    4402           4 :   parameter_mix_H[HIP].push_back(1376.0462401192394);
    4403           4 :   parameter_mix_H[HIP].push_back(-8.576320475413144);
    4404           4 :   parameter_mix_H[HIP].push_back(-2796.8327726392167);
    4405           4 :   parameter_mix_H[HIP].push_back(-1165.0473128576);
    4406           4 :   parameter_mix_H[HIP].push_back(7495.063650365717);
    4407           4 :   parameter_mix_H[HIP].push_back(-6331.20422098132);
    4408           4 :   parameter_mix_H[HIP].push_back(1692.637366093312);
    4409             : 
    4410           4 :   parameter_mix_H[ARG].push_back(1280.940480119178);
    4411           4 :   parameter_mix_H[ARG].push_back(-7.411214928783748);
    4412           4 :   parameter_mix_H[ARG].push_back(-3747.6200569785033);
    4413           4 :   parameter_mix_H[ARG].push_back(-1766.5282176004569);
    4414           4 :   parameter_mix_H[ARG].push_back(14307.817638456267);
    4415           4 :   parameter_mix_H[ARG].push_back(-14297.104122885643);
    4416           4 :   parameter_mix_H[ARG].push_back(4450.526244207772);
    4417             : 
    4418           4 :   parameter_mix_H[LYS].push_back(570.7272001192143);
    4419           4 :   parameter_mix_H[LYS].push_back(-5.371742288956095);
    4420           4 :   parameter_mix_H[LYS].push_back(-1255.9868267793006);
    4421           4 :   parameter_mix_H[LYS].push_back(-748.3071074443138);
    4422           4 :   parameter_mix_H[LYS].push_back(4534.824932304509);
    4423           4 :   parameter_mix_H[LYS].push_back(-4125.307867230812);
    4424           4 :   parameter_mix_H[LYS].push_back(1178.781491068295);
    4425             : 
    4426           4 :   parameter_mix_H[CYS].push_back(410.21750011921864);
    4427           4 :   parameter_mix_H[CYS].push_back(-0.7655651758449595);
    4428           4 :   parameter_mix_H[CYS].push_back(-523.8897033718782);
    4429           4 :   parameter_mix_H[CYS].push_back(-89.88478273744425);
    4430           4 :   parameter_mix_H[CYS].push_back(655.3313542467919);
    4431           4 :   parameter_mix_H[CYS].push_back(-407.87897719750896);
    4432           4 :   parameter_mix_H[CYS].push_back(76.50541508448237);
    4433             : 
    4434           4 :   parameter_mix_H[ASP].push_back(893.6531201192147);
    4435           4 :   parameter_mix_H[ASP].push_back(-3.0756255172248874);
    4436           4 :   parameter_mix_H[ASP].push_back(-1453.1760425275006);
    4437           4 :   parameter_mix_H[ASP].push_back(-365.0424824614137);
    4438           4 :   parameter_mix_H[ASP].push_back(2443.570600976796);
    4439           4 :   parameter_mix_H[ASP].push_back(-1679.8996339740277);
    4440           4 :   parameter_mix_H[ASP].push_back(352.33054461512455);
    4441             : 
    4442           4 :   parameter_mix_H[GLU].push_back(1075.4955601191884);
    4443           4 :   parameter_mix_H[GLU].push_back(-6.917429973203965);
    4444           4 :   parameter_mix_H[GLU].push_back(-2262.861870389347);
    4445           4 :   parameter_mix_H[GLU].push_back(-909.8078514527992);
    4446           4 :   parameter_mix_H[GLU].push_back(5841.923857549836);
    4447           4 :   parameter_mix_H[GLU].push_back(-4784.620969556751);
    4448           4 :   parameter_mix_H[GLU].push_back(1230.873134652953);
    4449             : 
    4450           4 :   parameter_mix_H[ILE].push_back(466.0127201192081);
    4451           4 :   parameter_mix_H[ILE].push_back(-0.9323443258150218);
    4452           4 :   parameter_mix_H[ILE].push_back(-576.7178005955719);
    4453           4 :   parameter_mix_H[ILE].push_back(-103.03003361062478);
    4454           4 :   parameter_mix_H[ILE].push_back(706.4269951176641);
    4455           4 :   parameter_mix_H[ILE].push_back(-420.4412859632717);
    4456           4 :   parameter_mix_H[ILE].push_back(71.53175726608731);
    4457             : 
    4458           4 :   parameter_mix_H[LEU].push_back(466.0127201192081);
    4459           4 :   parameter_mix_H[LEU].push_back(-1.9793605752606065);
    4460           4 :   parameter_mix_H[LEU].push_back(-718.3988478701591);
    4461           4 :   parameter_mix_H[LEU].push_back(-227.36409339012113);
    4462           4 :   parameter_mix_H[LEU].push_back(1389.2058254917304);
    4463           4 :   parameter_mix_H[LEU].push_back(-990.0033118748643);
    4464           4 :   parameter_mix_H[LEU].push_back(213.15736815883042);
    4465             : 
    4466           4 :   parameter_mix_H[MET].push_back(562.9855401192196);
    4467           4 :   parameter_mix_H[MET].push_back(-3.7994094933771643);
    4468           4 :   parameter_mix_H[MET].push_back(-1139.6331862451661);
    4469           4 :   parameter_mix_H[MET].push_back(-516.6313269725724);
    4470           4 :   parameter_mix_H[MET].push_back(3268.957245190869);
    4471           4 :   parameter_mix_H[MET].push_back(-2809.178864807947);
    4472           4 :   parameter_mix_H[MET].push_back(761.4832732100416);
    4473             : 
    4474           4 :   parameter_mix_H[ASN].push_back(828.7488001191887);
    4475           4 :   parameter_mix_H[ASN].push_back(-2.1275493073799625);
    4476           4 :   parameter_mix_H[ASN].push_back(-1222.248291388804);
    4477           4 :   parameter_mix_H[ASN].push_back(-238.94210659613537);
    4478           4 :   parameter_mix_H[ASN].push_back(1660.8322402171973);
    4479           4 :   parameter_mix_H[ASN].push_back(-1008.7934996077323);
    4480           4 :   parameter_mix_H[ASN].push_back(173.6082238625797);
    4481             : 
    4482           4 :   parameter_mix_H[PRO].push_back(578.4409801192146);
    4483           4 :   parameter_mix_H[PRO].push_back(-0.5379505780909722);
    4484           4 :   parameter_mix_H[PRO].push_back(-648.146493857212);
    4485           4 :   parameter_mix_H[PRO].push_back(-56.67223895342921);
    4486           4 :   parameter_mix_H[PRO].push_back(509.88860586987437);
    4487           4 :   parameter_mix_H[PRO].push_back(-214.57871784725265);
    4488           4 :   parameter_mix_H[PRO].push_back(11.99659463759968);
    4489             : 
    4490           4 :   parameter_mix_H[GLN].push_back(989.2334401191976);
    4491           4 :   parameter_mix_H[GLN].push_back(-6.307760694331967);
    4492           4 :   parameter_mix_H[GLN].push_back(-1971.7067150503622);
    4493           4 :   parameter_mix_H[GLN].push_back(-791.333088386235);
    4494           4 :   parameter_mix_H[GLN].push_back(4900.009768434847);
    4495           4 :   parameter_mix_H[GLN].push_back(-3909.7740976374153);
    4496           4 :   parameter_mix_H[GLN].push_back(975.4952613244343);
    4497             : 
    4498           4 :   parameter_mix_H[SER].push_back(426.39900011920196);
    4499           4 :   parameter_mix_H[SER].push_back(-0.42304498358319664);
    4500           4 :   parameter_mix_H[SER].push_back(-484.2066027682147);
    4501           4 :   parameter_mix_H[SER].push_back(-45.38968988754228);
    4502           4 :   parameter_mix_H[SER].push_back(401.3420977115044);
    4503           4 :   parameter_mix_H[SER].push_back(-178.0861461692512);
    4504           4 :   parameter_mix_H[SER].push_back(13.540349238730284);
    4505             : 
    4506           4 :   parameter_mix_H[THR].push_back(525.0470401191992);
    4507           4 :   parameter_mix_H[THR].push_back(-0.7419102811534484);
    4508           4 :   parameter_mix_H[THR].push_back(-652.7134808154495);
    4509           4 :   parameter_mix_H[THR].push_back(-80.39481224407903);
    4510           4 :   parameter_mix_H[THR].push_back(641.5487902728123);
    4511           4 :   parameter_mix_H[THR].push_back(-320.4227667104819);
    4512           4 :   parameter_mix_H[THR].push_back(36.03558531183942);
    4513             : 
    4514           4 :   parameter_mix_H[VAL].push_back(414.6228601192123);
    4515           4 :   parameter_mix_H[VAL].push_back(-0.35889335250521337);
    4516           4 :   parameter_mix_H[VAL].push_back(-453.11631644097474);
    4517           4 :   parameter_mix_H[VAL].push_back(-36.402101097644284);
    4518           4 :   parameter_mix_H[VAL].push_back(336.24049431626804);
    4519           4 :   parameter_mix_H[VAL].push_back(-127.42235327515239);
    4520           4 :   parameter_mix_H[VAL].push_back(0.8013280923923705);
    4521             : 
    4522           4 :   parameter_mix_H[ALA].push_back(285.21010011920816);
    4523           4 :   parameter_mix_H[ALA].push_back(-0.1573012439142169);
    4524           4 :   parameter_mix_H[ALA].push_back(-282.8945838800694);
    4525           4 :   parameter_mix_H[ALA].push_back(-16.32030056827785);
    4526           4 :   parameter_mix_H[ALA].push_back(178.065895049598);
    4527           4 :   parameter_mix_H[ALA].push_back(-60.27423229179658);
    4528           4 :   parameter_mix_H[ALA].push_back(-1.4695219304131588);
    4529             : 
    4530           4 :   parameter_mix_H[GLY].push_back(207.18720011920414);
    4531           4 :   parameter_mix_H[GLY].push_back(-0.1036587134183235);
    4532           4 :   parameter_mix_H[GLY].push_back(-185.70794948240638);
    4533           4 :   parameter_mix_H[GLY].push_back(-11.008101039836257);
    4534           4 :   parameter_mix_H[GLY].push_back(115.30600405624061);
    4535           4 :   parameter_mix_H[GLY].push_back(-42.46629718037158);
    4536           4 :   parameter_mix_H[GLY].push_back(0.9238928987070913);
    4537             : 
    4538           4 :   parameter_mix_H[HIS].push_back(1443.9117601192354);
    4539           4 :   parameter_mix_H[HIS].push_back(-7.478618745973115);
    4540           4 :   parameter_mix_H[HIS].push_back(-2715.0835155803215);
    4541           4 :   parameter_mix_H[HIS].push_back(-918.5243015382779);
    4542           4 :   parameter_mix_H[HIS].push_back(5821.6258431396);
    4543           4 :   parameter_mix_H[HIS].push_back(-4415.32722209556);
    4544           4 :   parameter_mix_H[HIS].push_back(1044.7044029209756);
    4545           4 :   parameter_vac_H[TRP].push_back(36.42122511920832);
    4546           4 :   parameter_vac_H[TRP].push_back(-0.36925500341767903);
    4547           4 :   parameter_vac_H[TRP].push_back(-51.34228792835503);
    4548           4 :   parameter_vac_H[TRP].push_back(-34.10021080004831);
    4549           4 :   parameter_vac_H[TRP].push_back(132.647034983933);
    4550           4 :   parameter_vac_H[TRP].push_back(-82.89152328934257);
    4551           4 :   parameter_vac_H[TRP].push_back(13.029994092013231);
    4552             : 
    4553           4 :   parameter_vac_H[TYR].push_back(22.268961119209557);
    4554           4 :   parameter_vac_H[TYR].push_back(-0.1995573892347673);
    4555           4 :   parameter_vac_H[TYR].push_back(-36.54202179838511);
    4556           4 :   parameter_vac_H[TYR].push_back(-23.820801043096694);
    4557           4 :   parameter_vac_H[TYR].push_back(127.46799692275353);
    4558           4 :   parameter_vac_H[TYR].push_back(-107.63783234245744);
    4559           4 :   parameter_vac_H[TYR].push_back(28.180858902960775);
    4560             : 
    4561           4 :   parameter_vac_H[PHE].push_back(17.131321119209627);
    4562           4 :   parameter_vac_H[PHE].push_back(-0.15766725674246446);
    4563           4 :   parameter_vac_H[PHE].push_back(-19.19964432024534);
    4564           4 :   parameter_vac_H[PHE].push_back(-12.34326882843138);
    4565           4 :   parameter_vac_H[PHE].push_back(38.17216645824474);
    4566           4 :   parameter_vac_H[PHE].push_back(-11.245288857407298);
    4567           4 :   parameter_vac_H[PHE].push_back(-3.8114731300899343);
    4568             : 
    4569           4 :   parameter_vac_H[HIP].push_back(19.34240411920875);
    4570           4 :   parameter_vac_H[HIP].push_back(-0.13533410292592593);
    4571           4 :   parameter_vac_H[HIP].push_back(-25.924121027387276);
    4572           4 :   parameter_vac_H[HIP].push_back(-12.36586927492752);
    4573           4 :   parameter_vac_H[HIP].push_back(56.75268702111191);
    4574           4 :   parameter_vac_H[HIP].push_back(-31.126240293638094);
    4575           4 :   parameter_vac_H[HIP].push_back(2.749811579250848);
    4576             : 
    4577           4 :   parameter_vac_H[ARG].push_back(12.027024119209557);
    4578           4 :   parameter_vac_H[ARG].push_back(-0.41927538341868287);
    4579           4 :   parameter_vac_H[ARG].push_back(-22.137566939867042);
    4580           4 :   parameter_vac_H[ARG].push_back(-43.22615008762667);
    4581           4 :   parameter_vac_H[ARG].push_back(165.77466655520323);
    4582           4 :   parameter_vac_H[ARG].push_back(-140.68664871425898);
    4583           4 :   parameter_vac_H[ARG].push_back(36.67401195170306);
    4584             : 
    4585           4 :   parameter_vac_H[LYS].push_back(2.5217441192093717);
    4586           4 :   parameter_vac_H[LYS].push_back(-0.0032825476242835413);
    4587           4 :   parameter_vac_H[LYS].push_back(14.019071697737793);
    4588           4 :   parameter_vac_H[LYS].push_back(7.8634074595069245);
    4589           4 :   parameter_vac_H[LYS].push_back(-82.44639716451474);
    4590           4 :   parameter_vac_H[LYS].push_back(94.32937851921197);
    4591           4 :   parameter_vac_H[LYS].push_back(-32.324473823417);
    4592             : 
    4593           4 :   parameter_vac_H[CYS].push_back(3.705624880856525);
    4594           4 :   parameter_vac_H[CYS].push_back(0.005214780840206113);
    4595           4 :   parameter_vac_H[CYS].push_back(1.25680902661715);
    4596           4 :   parameter_vac_H[CYS].push_back(0.5779209425501814);
    4597           4 :   parameter_vac_H[CYS].push_back(-3.716408071089366);
    4598           4 :   parameter_vac_H[CYS].push_back(2.3947518943233117);
    4599           4 :   parameter_vac_H[CYS].push_back(-0.40204949737133333);
    4600             : 
    4601           4 :   parameter_vac_H[ASP].push_back(14.776336119209605);
    4602           4 :   parameter_vac_H[ASP].push_back(-0.037351220316916435);
    4603           4 :   parameter_vac_H[ASP].push_back(-18.556358387626286);
    4604           4 :   parameter_vac_H[ASP].push_back(-4.1737354794552886);
    4605           4 :   parameter_vac_H[ASP].push_back(28.424721213037405);
    4606           4 :   parameter_vac_H[ASP].push_back(-17.51389895324883);
    4607           4 :   parameter_vac_H[ASP].push_back(2.9729111724708597);
    4608             : 
    4609           4 :   parameter_vac_H[GLU].push_back(14.145121119208973);
    4610           4 :   parameter_vac_H[GLU].push_back(-0.11468766098213011);
    4611           4 :   parameter_vac_H[GLU].push_back(-26.272637652294613);
    4612           4 :   parameter_vac_H[GLU].push_back(-13.769758826440151);
    4613           4 :   parameter_vac_H[GLU].push_back(80.4575683578491);
    4614           4 :   parameter_vac_H[GLU].push_back(-64.19346347075);
    4615           4 :   parameter_vac_H[GLU].push_back(15.545440117656236);
    4616             : 
    4617           4 :   parameter_vac_H[ILE].push_back(1.9488158808808775);
    4618           4 :   parameter_vac_H[ILE].push_back(0.05873132133874459);
    4619           4 :   parameter_vac_H[ILE].push_back(12.032778845884135);
    4620           4 :   parameter_vac_H[ILE].push_back(7.148416980612881);
    4621           4 :   parameter_vac_H[ILE].push_back(-41.87377843832961);
    4622           4 :   parameter_vac_H[ILE].push_back(33.96120749582283);
    4623           4 :   parameter_vac_H[ILE].push_back(-8.362535852631256);
    4624             : 
    4625           4 :   parameter_vac_H[LEU].push_back(1.9488158808977816);
    4626           4 :   parameter_vac_H[LEU].push_back(0.0778305500414777);
    4627           4 :   parameter_vac_H[LEU].push_back(12.333370614594);
    4628           4 :   parameter_vac_H[LEU].push_back(9.449427967560764);
    4629           4 :   parameter_vac_H[LEU].push_back(-52.65457680603262);
    4630           4 :   parameter_vac_H[LEU].push_back(44.681877289399615);
    4631           4 :   parameter_vac_H[LEU].push_back(-11.460498338671227);
    4632             : 
    4633           4 :   parameter_vac_H[MET].push_back(3.0940808808117652);
    4634           4 :   parameter_vac_H[MET].push_back(0.04903755678213222);
    4635           4 :   parameter_vac_H[MET].push_back(8.981927022922049);
    4636           4 :   parameter_vac_H[MET].push_back(8.654862771879014);
    4637           4 :   parameter_vac_H[MET].push_back(-57.09889409156816);
    4638           4 :   parameter_vac_H[MET].push_back(58.87704775164829);
    4639           4 :   parameter_vac_H[MET].push_back(-18.60431990258862);
    4640             : 
    4641           4 :   parameter_vac_H[ASN].push_back(11.943936119209074);
    4642           4 :   parameter_vac_H[ASN].push_back(-0.0005000836239497835);
    4643           4 :   parameter_vac_H[ASN].push_back(-9.581236453763157);
    4644           4 :   parameter_vac_H[ASN].push_back(0.16244025786232308);
    4645           4 :   parameter_vac_H[ASN].push_back(2.9276580099749574);
    4646           4 :   parameter_vac_H[ASN].push_back(2.133535783835143);
    4647           4 :   parameter_vac_H[ASN].push_back(-1.5709968820975018);
    4648             : 
    4649           4 :   parameter_vac_H[PRO].push_back(4.9595288808229245);
    4650           4 :   parameter_vac_H[PRO].push_back(0.017853932680793515);
    4651           4 :   parameter_vac_H[PRO].push_back(4.5421559293101605);
    4652           4 :   parameter_vac_H[PRO].push_back(2.008455612787203);
    4653           4 :   parameter_vac_H[PRO].push_back(-12.444117841318494);
    4654           4 :   parameter_vac_H[PRO].push_back(8.511723688836447);
    4655           4 :   parameter_vac_H[PRO].push_back(-1.6337543903496765);
    4656             : 
    4657           4 :   parameter_vac_H[GLN].push_back(11.377129119208574);
    4658           4 :   parameter_vac_H[GLN].push_back(-0.0674805307761209);
    4659           4 :   parameter_vac_H[GLN].push_back(-16.56692720411458);
    4660           4 :   parameter_vac_H[GLN].push_back(-6.477707440126834);
    4661           4 :   parameter_vac_H[GLN].push_back(34.78232259512621);
    4662           4 :   parameter_vac_H[GLN].push_back(-19.450886909938312);
    4663           4 :   parameter_vac_H[GLN].push_back(1.944286925108988);
    4664             : 
    4665           4 :   parameter_vac_H[SER].push_back(4.95062488096605);
    4666           4 :   parameter_vac_H[SER].push_back(0.004676435440506079);
    4667           4 :   parameter_vac_H[SER].push_back(-0.1896653085608564);
    4668           4 :   parameter_vac_H[SER].push_back(0.5142284931977218);
    4669           4 :   parameter_vac_H[SER].push_back(-2.8946087252759893);
    4670           4 :   parameter_vac_H[SER].push_back(2.1031239401634836);
    4671           4 :   parameter_vac_H[SER].push_back(-0.38226443516361713);
    4672             : 
    4673           4 :   parameter_vac_H[THR].push_back(4.588163880808971);
    4674           4 :   parameter_vac_H[THR].push_back(0.018587905993982613);
    4675           4 :   parameter_vac_H[THR].push_back(3.5289861308270214);
    4676           4 :   parameter_vac_H[THR].push_back(2.0780583604591567);
    4677           4 :   parameter_vac_H[THR].push_back(-12.3802007068414);
    4678           4 :   parameter_vac_H[THR].push_back(8.720986674116094);
    4679           4 :   parameter_vac_H[THR].push_back(-1.683256475122275);
    4680             : 
    4681           4 :   parameter_vac_H[VAL].push_back(2.187440880853519);
    4682           4 :   parameter_vac_H[VAL].push_back(0.028351524826584255);
    4683           4 :   parameter_vac_H[VAL].push_back(8.36584512491955);
    4684           4 :   parameter_vac_H[VAL].push_back(3.1686206615123926);
    4685           4 :   parameter_vac_H[VAL].push_back(-19.81959917770108);
    4686           4 :   parameter_vac_H[VAL].push_back(13.293003038570571);
    4687           4 :   parameter_vac_H[VAL].push_back(-2.4595257726774125);
    4688             : 
    4689           4 :   parameter_vac_H[ALA].push_back(2.7060248808167935);
    4690           4 :   parameter_vac_H[ALA].push_back(0.004618897267213416);
    4691           4 :   parameter_vac_H[ALA].push_back(2.4990261487383947);
    4692           4 :   parameter_vac_H[ALA].push_back(0.49579332664340864);
    4693           4 :   parameter_vac_H[ALA].push_back(-3.850400071630347);
    4694           4 :   parameter_vac_H[ALA].push_back(1.9501161562030942);
    4695           4 :   parameter_vac_H[ALA].push_back(-0.18332582719788362);
    4696             : 
    4697           4 :   parameter_vac_H[GLY].push_back(2.985983880876256);
    4698           4 :   parameter_vac_H[GLY].push_back(0.0005033131808079042);
    4699           4 :   parameter_vac_H[GLY].push_back(-0.42250170279962684);
    4700           4 :   parameter_vac_H[GLY].push_back(0.05620517453257455);
    4701           4 :   parameter_vac_H[GLY].push_back(-0.16801962822020733);
    4702           4 :   parameter_vac_H[GLY].push_back(0.23635459648780555);
    4703           4 :   parameter_vac_H[GLY].push_back(-0.06585244715658795);
    4704             : 
    4705           4 :   parameter_vac_H[HIS].push_back(22.77198411920933);
    4706           4 :   parameter_vac_H[HIS].push_back(-0.06607491006655417);
    4707           4 :   parameter_vac_H[HIS].push_back(-27.277710268717247);
    4708           4 :   parameter_vac_H[HIS].push_back(-5.674444390934355);
    4709           4 :   parameter_vac_H[HIS].push_back(33.4059567406171);
    4710           4 :   parameter_vac_H[HIS].push_back(-11.60826210271092);
    4711           4 :   parameter_vac_H[HIS].push_back(-1.7359607560773076);
    4712             : 
    4713             :   // NUCLEIC ACIDS
    4714             : 
    4715             :   // BB_PO2 H and D parameters are identical as there is no H or D in the bead.
    4716           4 :   parameter_solv_H[BB_PO2].push_back(575.5201001192197);
    4717           4 :   parameter_solv_H[BB_PO2].push_back(-0.6126595489733864);
    4718           4 :   parameter_solv_H[BB_PO2].push_back(-623.3371092254899);
    4719           4 :   parameter_solv_H[BB_PO2].push_back(-68.05795957022144);
    4720           4 :   parameter_solv_H[BB_PO2].push_back(561.8052621243661);
    4721           4 :   parameter_solv_H[BB_PO2].push_back(-283.39573309540276);
    4722           4 :   parameter_solv_H[BB_PO2].push_back(35.550016980100295);
    4723             : 
    4724           4 :   parameter_solv_H[BB_DNA].push_back(21211.009600118316);
    4725           4 :   parameter_solv_H[BB_DNA].push_back(-90.18805990529991);
    4726           4 :   parameter_solv_H[BB_DNA].push_back(-39731.13373512149);
    4727           4 :   parameter_solv_H[BB_DNA].push_back(-10920.373563712872);
    4728           4 :   parameter_solv_H[BB_DNA].push_back(72882.21702424981);
    4729           4 :   parameter_solv_H[BB_DNA].push_back(-51747.487078112776);
    4730           4 :   parameter_solv_H[BB_DNA].push_back(11308.678429018755);
    4731             : 
    4732           4 :   parameter_solv_H[BB_DNA_5].push_back(22737.624100119025);
    4733           4 :   parameter_solv_H[BB_DNA_5].push_back(-102.72714886664161);
    4734           4 :   parameter_solv_H[BB_DNA_5].push_back(-43685.329677789734);
    4735           4 :   parameter_solv_H[BB_DNA_5].push_back(-12564.25937409345);
    4736           4 :   parameter_solv_H[BB_DNA_5].push_back(83454.87540484878);
    4737           4 :   parameter_solv_H[BB_DNA_5].push_back(-60367.15652138887);
    4738           4 :   parameter_solv_H[BB_DNA_5].push_back(13507.333729868991);
    4739             : 
    4740           4 :   parameter_solv_H[BB_DNA_3].push_back(22737.62410011902);
    4741           4 :   parameter_solv_H[BB_DNA_3].push_back(-101.57816684452251);
    4742           4 :   parameter_solv_H[BB_DNA_3].push_back(-43488.536705576145);
    4743           4 :   parameter_solv_H[BB_DNA_3].push_back(-12345.056184958425);
    4744           4 :   parameter_solv_H[BB_DNA_3].push_back(81963.52364114887);
    4745           4 :   parameter_solv_H[BB_DNA_3].push_back(-58791.59443618196);
    4746           4 :   parameter_solv_H[BB_DNA_3].push_back(13003.199362335583);
    4747             : 
    4748           4 :   parameter_solv_H[BB_RNA].push_back(23953.752900120977);
    4749           4 :   parameter_solv_H[BB_RNA].push_back(-117.35779348824417);
    4750           4 :   parameter_solv_H[BB_RNA].push_back(-47644.41735332843);
    4751           4 :   parameter_solv_H[BB_RNA].push_back(-14641.556643789861);
    4752           4 :   parameter_solv_H[BB_RNA].push_back(96893.48627050371);
    4753           4 :   parameter_solv_H[BB_RNA].push_back(-72249.62534169303);
    4754           4 :   parameter_solv_H[BB_RNA].push_back(16792.055521055358);
    4755             : 
    4756           4 :   parameter_solv_H[BB_RNA_5].push_back(25574.406400119024);
    4757           4 :   parameter_solv_H[BB_RNA_5].push_back(-131.99642772933734);
    4758           4 :   parameter_solv_H[BB_RNA_5].push_back(-52136.51404531251);
    4759           4 :   parameter_solv_H[BB_RNA_5].push_back(-16682.14273917604);
    4760           4 :   parameter_solv_H[BB_RNA_5].push_back(110278.01921639398);
    4761           4 :   parameter_solv_H[BB_RNA_5].push_back(-83715.92027818544);
    4762           4 :   parameter_solv_H[BB_RNA_5].push_back(19875.89133770605);
    4763             : 
    4764           4 :   parameter_solv_H[BB_RNA_3].push_back(25574.406400119027);
    4765           4 :   parameter_solv_H[BB_RNA_3].push_back(-127.96875237036166);
    4766           4 :   parameter_solv_H[BB_RNA_3].push_back(-51407.18391758439);
    4767           4 :   parameter_solv_H[BB_RNA_3].push_back(-15922.900669975606);
    4768           4 :   parameter_solv_H[BB_RNA_3].push_back(105078.5888910626);
    4769           4 :   parameter_solv_H[BB_RNA_3].push_back(-78289.16276190645);
    4770           4 :   parameter_solv_H[BB_RNA_3].push_back(18156.832143441192);
    4771             : 
    4772           4 :   parameter_solv_H[BASE_A].push_back(13282.562500119211);
    4773           4 :   parameter_solv_H[BASE_A].push_back(-76.45124168404048);
    4774           4 :   parameter_solv_H[BASE_A].push_back(-28376.06994108963);
    4775           4 :   parameter_solv_H[BASE_A].push_back(-9972.910773722022);
    4776           4 :   parameter_solv_H[BASE_A].push_back(65873.86341939073);
    4777           4 :   parameter_solv_H[BASE_A].push_back(-52064.33492910885);
    4778           4 :   parameter_solv_H[BASE_A].push_back(12931.608989412513);
    4779             : 
    4780           4 :   parameter_solv_H[BASE_C].push_back(10600.76160011891);
    4781           4 :   parameter_solv_H[BASE_C].push_back(-49.1670871249108);
    4782           4 :   parameter_solv_H[BASE_C].push_back(-20239.818742072875);
    4783           4 :   parameter_solv_H[BASE_C].push_back(-6020.278780090207);
    4784           4 :   parameter_solv_H[BASE_C].push_back(39632.13288981881);
    4785           4 :   parameter_solv_H[BASE_C].push_back(-28954.779736165576);
    4786           4 :   parameter_solv_H[BASE_C].push_back(6551.541109526305);
    4787             : 
    4788           4 :   parameter_solv_H[BASE_G].push_back(15470.384400119934);
    4789           4 :   parameter_solv_H[BASE_G].push_back(-93.8013620200972);
    4790           4 :   parameter_solv_H[BASE_G].push_back(-36188.29687013545);
    4791           4 :   parameter_solv_H[BASE_G].push_back(-13717.685098209471);
    4792           4 :   parameter_solv_H[BASE_G].push_back(95658.18473657136);
    4793           4 :   parameter_solv_H[BASE_G].push_back(-81262.37811451119);
    4794           4 :   parameter_solv_H[BASE_G].push_back(21841.903930943085);
    4795             : 
    4796           4 :   parameter_solv_H[BASE_T].push_back(17210.81610011936);
    4797           4 :   parameter_solv_H[BASE_T].push_back(-93.10189802920208);
    4798           4 :   parameter_solv_H[BASE_T].push_back(-36466.51927689957);
    4799           4 :   parameter_solv_H[BASE_T].push_back(-12425.55615716932);
    4800           4 :   parameter_solv_H[BASE_T].push_back(83847.427808925);
    4801           4 :   parameter_solv_H[BASE_T].push_back(-66735.64997846584);
    4802           4 :   parameter_solv_H[BASE_T].push_back(16757.3463987507);
    4803             : 
    4804           4 :   parameter_solv_H[BASE_U].push_back(10909.802500119395);
    4805           4 :   parameter_solv_H[BASE_U].push_back(-46.17712672768298);
    4806           4 :   parameter_solv_H[BASE_U].push_back(-20149.67695512526);
    4807           4 :   parameter_solv_H[BASE_U].push_back(-5590.242961204435);
    4808           4 :   parameter_solv_H[BASE_U].push_back(37169.2740983132);
    4809           4 :   parameter_solv_H[BASE_U].push_back(-26475.631627167604);
    4810           4 :   parameter_solv_H[BASE_U].push_back(5808.201015156168);
    4811             : 
    4812           4 :   parameter_mix_H[BB_PO2].push_back(80.12660011920252);
    4813           4 :   parameter_mix_H[BB_PO2].push_back(-0.0278885551982023);
    4814           4 :   parameter_mix_H[BB_PO2].push_back(-60.532194918222984);
    4815           4 :   parameter_mix_H[BB_PO2].push_back(-2.976882903409687);
    4816           4 :   parameter_mix_H[BB_PO2].push_back(33.30645116638125);
    4817           4 :   parameter_mix_H[BB_PO2].push_back(-11.601573219761374);
    4818           4 :   parameter_mix_H[BB_PO2].push_back(0.12551046492022422);
    4819             : 
    4820           4 :   parameter_mix_H[BB_DNA].push_back(712.7621601191935);
    4821           4 :   parameter_mix_H[BB_DNA].push_back(-0.3228709821198571);
    4822           4 :   parameter_mix_H[BB_DNA].push_back(-784.5118228559945);
    4823           4 :   parameter_mix_H[BB_DNA].push_back(-27.196125702249613);
    4824           4 :   parameter_mix_H[BB_DNA].push_back(410.0185035102729);
    4825           4 :   parameter_mix_H[BB_DNA].push_back(-54.453513369320355);
    4826           4 :   parameter_mix_H[BB_DNA].push_back(-44.85506789237683);
    4827             : 
    4828           4 :   parameter_mix_H[BB_DNA_5].push_back(625.175339965785);
    4829           4 :   parameter_mix_H[BB_DNA_5].push_back(0.2691706617748245);
    4830           4 :   parameter_mix_H[BB_DNA_5].push_back(-582.8721350420001);
    4831           4 :   parameter_mix_H[BB_DNA_5].push_back(46.512408351374326);
    4832           4 :   parameter_mix_H[BB_DNA_5].push_back(-58.93886949899108);
    4833           4 :   parameter_mix_H[BB_DNA_5].push_back(307.29720336085046);
    4834           4 :   parameter_mix_H[BB_DNA_5].push_back(-131.71996309259953);
    4835             : 
    4836           4 :   parameter_mix_H[BB_DNA_3].push_back(625.1753399401266);
    4837           4 :   parameter_mix_H[BB_DNA_3].push_back(0.08763234414546289);
    4838           4 :   parameter_mix_H[BB_DNA_3].push_back(-606.8067575087485);
    4839           4 :   parameter_mix_H[BB_DNA_3].push_back(20.84427254872218);
    4840           4 :   parameter_mix_H[BB_DNA_3].push_back(92.53523123608991);
    4841           4 :   parameter_mix_H[BB_DNA_3].push_back(162.04688035654937);
    4842           4 :   parameter_mix_H[BB_DNA_3].push_back(-89.13571774638052);
    4843             : 
    4844           4 :   parameter_mix_H[BB_RNA].push_back(936.9775801191857);
    4845           4 :   parameter_mix_H[BB_RNA].push_back(-1.3233686929680253);
    4846           4 :   parameter_mix_H[BB_RNA].push_back(-1212.1627155263773);
    4847           4 :   parameter_mix_H[BB_RNA].push_back(-141.35324744384351);
    4848           4 :   parameter_mix_H[BB_RNA].push_back(1155.8281658363026);
    4849           4 :   parameter_mix_H[BB_RNA].push_back(-548.9340055857343);
    4850           4 :   parameter_mix_H[BB_RNA].push_back(50.81734777881503);
    4851             : 
    4852           4 :   parameter_mix_H[BB_RNA_5].push_back(848.5355201165631);
    4853           4 :   parameter_mix_H[BB_RNA_5].push_back(-0.49570338490120175);
    4854           4 :   parameter_mix_H[BB_RNA_5].push_back(-976.1033073783973);
    4855           4 :   parameter_mix_H[BB_RNA_5].push_back(-32.943532187986605);
    4856           4 :   parameter_mix_H[BB_RNA_5].push_back(475.66177061923884);
    4857           4 :   parameter_mix_H[BB_RNA_5].push_back(17.51955845824258);
    4858           4 :   parameter_mix_H[BB_RNA_5].push_back(-96.74451972314769);
    4859             : 
    4860           4 :   parameter_mix_H[BB_RNA_3].push_back(848.5355201192122);
    4861           4 :   parameter_mix_H[BB_RNA_3].push_back(-0.8301109354355396);
    4862           4 :   parameter_mix_H[BB_RNA_3].push_back(-1019.9524389785406);
    4863           4 :   parameter_mix_H[BB_RNA_3].push_back(-84.1388451424885);
    4864           4 :   parameter_mix_H[BB_RNA_3].push_back(787.1277245040931);
    4865           4 :   parameter_mix_H[BB_RNA_3].push_back(-294.67807432795627);
    4866           4 :   parameter_mix_H[BB_RNA_3].push_back(-1.3214626461251089);
    4867             : 
    4868           4 :   parameter_mix_H[BASE_A].push_back(1504.9345001191857);
    4869           4 :   parameter_mix_H[BASE_A].push_back(-3.5306888452552663);
    4870           4 :   parameter_mix_H[BASE_A].push_back(-2234.3933572775572);
    4871           4 :   parameter_mix_H[BASE_A].push_back(-380.0255208494757);
    4872           4 :   parameter_mix_H[BASE_A].push_back(2726.27802432048);
    4873           4 :   parameter_mix_H[BASE_A].push_back(-1490.8825754968443);
    4874           4 :   parameter_mix_H[BASE_A].push_back(199.7501110740159);
    4875             : 
    4876           4 :   parameter_mix_H[BASE_C].push_back(939.8188801192172);
    4877           4 :   parameter_mix_H[BASE_C].push_back(-1.489638186262854);
    4878           4 :   parameter_mix_H[BASE_C].push_back(-1244.5515798554075);
    4879           4 :   parameter_mix_H[BASE_C].push_back(-161.3972705672055);
    4880           4 :   parameter_mix_H[BASE_C].push_back(1276.3568466722545);
    4881           4 :   parameter_mix_H[BASE_C].push_back(-643.3057776225742);
    4882           4 :   parameter_mix_H[BASE_C].push_back(72.75963113826273);
    4883             : 
    4884           4 :   parameter_mix_H[BASE_G].push_back(1768.434840119199);
    4885           4 :   parameter_mix_H[BASE_G].push_back(-6.505347007077434);
    4886           4 :   parameter_mix_H[BASE_G].push_back(-2919.3856777898427);
    4887           4 :   parameter_mix_H[BASE_G].push_back(-701.2456464463938);
    4888           4 :   parameter_mix_H[BASE_G].push_back(4464.594230284102);
    4889           4 :   parameter_mix_H[BASE_G].push_back(-2733.138521295608);
    4890           4 :   parameter_mix_H[BASE_G].push_back(458.1177706235891);
    4891             : 
    4892           4 :   parameter_mix_H[BASE_T].push_back(1179.3981001192033);
    4893           4 :   parameter_mix_H[BASE_T].push_back(-3.2037849252756527);
    4894           4 :   parameter_mix_H[BASE_T].push_back(-1821.255498763799);
    4895           4 :   parameter_mix_H[BASE_T].push_back(-371.01993266441303);
    4896           4 :   parameter_mix_H[BASE_T].push_back(2604.074226688971);
    4897           4 :   parameter_mix_H[BASE_T].push_back(-1648.1965787713084);
    4898           4 :   parameter_mix_H[BASE_T].push_back(307.2962186436368);
    4899             : 
    4900           4 :   parameter_mix_H[BASE_U].push_back(956.3442001192266);
    4901           4 :   parameter_mix_H[BASE_U].push_back(-1.724458000760567);
    4902           4 :   parameter_mix_H[BASE_U].push_back(-1287.9746970192687);
    4903           4 :   parameter_mix_H[BASE_U].push_back(-192.74748379510373);
    4904           4 :   parameter_mix_H[BASE_U].push_back(1459.0789258833893);
    4905           4 :   parameter_mix_H[BASE_U].push_back(-810.0763075080915);
    4906           4 :   parameter_mix_H[BASE_U].push_back(119.81810290248339);
    4907             : 
    4908           4 :   parameter_vac_H[BB_PO2].push_back(2.7889001116093275);
    4909           4 :   parameter_vac_H[BB_PO2].push_back(-0.00011178884266113128);
    4910           4 :   parameter_vac_H[BB_PO2].push_back(-1.1702605818380667);
    4911           4 :   parameter_vac_H[BB_PO2].push_back(-0.011278044036819933);
    4912           4 :   parameter_vac_H[BB_PO2].push_back(0.3214006584089025);
    4913           4 :   parameter_vac_H[BB_PO2].push_back(-0.04097165983591666);
    4914           4 :   parameter_vac_H[BB_PO2].push_back(-0.017525098100539722);
    4915             : 
    4916           4 :   parameter_vac_H[BB_DNA].push_back(5.987809026456476);
    4917           4 :   parameter_vac_H[BB_DNA].push_back(9.945454528827912e-05);
    4918           4 :   parameter_vac_H[BB_DNA].push_back(-1.1884708569330031);
    4919           4 :   parameter_vac_H[BB_DNA].push_back(-0.007457733256362841);
    4920           4 :   parameter_vac_H[BB_DNA].push_back(0.05666858781418339);
    4921           4 :   parameter_vac_H[BB_DNA].push_back(-0.15158797629971757);
    4922           4 :   parameter_vac_H[BB_DNA].push_back(0.11642340861329734);
    4923             : 
    4924           4 :   parameter_vac_H[BB_DNA_5].push_back(4.297328944539055);
    4925           4 :   parameter_vac_H[BB_DNA_5].push_back(0.0014793971885106831);
    4926           4 :   parameter_vac_H[BB_DNA_5].push_back(1.3961088365255605);
    4927           4 :   parameter_vac_H[BB_DNA_5].push_back(0.08974639858979384);
    4928           4 :   parameter_vac_H[BB_DNA_5].push_back(-1.5198099705167643);
    4929           4 :   parameter_vac_H[BB_DNA_5].push_back(-0.12127122359433733);
    4930           4 :   parameter_vac_H[BB_DNA_5].push_back(0.4134601046223601);
    4931             : 
    4932           4 :   parameter_vac_H[BB_DNA_3].push_back(4.297328886488132);
    4933           4 :   parameter_vac_H[BB_DNA_3].push_back(0.0041802954281271905);
    4934           4 :   parameter_vac_H[BB_DNA_3].push_back(1.6065462295705266);
    4935           4 :   parameter_vac_H[BB_DNA_3].push_back(0.4399805535688805);
    4936           4 :   parameter_vac_H[BB_DNA_3].push_back(-3.3806711791929804);
    4937           4 :   parameter_vac_H[BB_DNA_3].push_back(1.6729551563628675);
    4938           4 :   parameter_vac_H[BB_DNA_3].push_back(-0.10911063067909885);
    4939             : 
    4940           4 :   parameter_vac_H[BB_RNA].push_back(9.162728984394093);
    4941           4 :   parameter_vac_H[BB_RNA].push_back(0.00019952321584579868);
    4942           4 :   parameter_vac_H[BB_RNA].push_back(-4.744748946331966);
    4943           4 :   parameter_vac_H[BB_RNA].push_back(0.025106563403946364);
    4944           4 :   parameter_vac_H[BB_RNA].push_back(1.2302956694109803);
    4945           4 :   parameter_vac_H[BB_RNA].push_back(0.12359062278096915);
    4946           4 :   parameter_vac_H[BB_RNA].push_back(-0.1725633367685285);
    4947             : 
    4948           4 :   parameter_vac_H[BB_RNA_5].push_back(7.038408898671503);
    4949           4 :   parameter_vac_H[BB_RNA_5].push_back(0.005106788424920148);
    4950           4 :   parameter_vac_H[BB_RNA_5].push_back(-0.8981588221803118);
    4951           4 :   parameter_vac_H[BB_RNA_5].push_back(0.4922588155214312);
    4952           4 :   parameter_vac_H[BB_RNA_5].push_back(-2.6667853454023644);
    4953           4 :   parameter_vac_H[BB_RNA_5].push_back(1.533316567240718);
    4954           4 :   parameter_vac_H[BB_RNA_5].push_back(-0.07199604869737707);
    4955             : 
    4956           4 :   parameter_vac_H[BB_RNA_3].push_back(7.038408892621863);
    4957           4 :   parameter_vac_H[BB_RNA_3].push_back(0.002993083907266898);
    4958           4 :   parameter_vac_H[BB_RNA_3].push_back(-1.3626596831098492);
    4959           4 :   parameter_vac_H[BB_RNA_3].push_back(0.3138856961130113);
    4960           4 :   parameter_vac_H[BB_RNA_3].push_back(-1.684185014289391);
    4961           4 :   parameter_vac_H[BB_RNA_3].push_back(1.1862168720864616);
    4962           4 :   parameter_vac_H[BB_RNA_3].push_back(-0.1443894172417523);
    4963             : 
    4964           4 :   parameter_vac_H[BASE_A].push_back(42.62784088079008);
    4965           4 :   parameter_vac_H[BASE_A].push_back(0.02302908536431516);
    4966           4 :   parameter_vac_H[BASE_A].push_back(-33.22707177297222);
    4967           4 :   parameter_vac_H[BASE_A].push_back(2.6853748424439834);
    4968           4 :   parameter_vac_H[BASE_A].push_back(-1.6632902891624768);
    4969           4 :   parameter_vac_H[BASE_A].push_back(11.905766349515268);
    4970           4 :   parameter_vac_H[BASE_A].push_back(-4.547083454788805);
    4971             : 
    4972           4 :   parameter_vac_H[BASE_C].push_back(20.83009588079022);
    4973           4 :   parameter_vac_H[BASE_C].push_back(0.017055822321768378);
    4974           4 :   parameter_vac_H[BASE_C].push_back(-8.349634734370916);
    4975           4 :   parameter_vac_H[BASE_C].push_back(1.9324634367723073);
    4976           4 :   parameter_vac_H[BASE_C].push_back(-8.435199734060882);
    4977           4 :   parameter_vac_H[BASE_C].push_back(8.272798368731268);
    4978           4 :   parameter_vac_H[BASE_C].push_back(-1.986671440757263);
    4979             : 
    4980           4 :   parameter_vac_H[BASE_G].push_back(50.53788088079374);
    4981           4 :   parameter_vac_H[BASE_G].push_back(0.024035597617780367);
    4982           4 :   parameter_vac_H[BASE_G].push_back(-47.94916639302998);
    4983           4 :   parameter_vac_H[BASE_G].push_back(3.143375731466498);
    4984           4 :   parameter_vac_H[BASE_G].push_back(4.297009866708155);
    4985           4 :   parameter_vac_H[BASE_G].push_back(15.855448505050578);
    4986           4 :   parameter_vac_H[BASE_G].push_back(-7.827484135873966);
    4987             : 
    4988           4 :   parameter_vac_H[BASE_T].push_back(20.20502488079069);
    4989           4 :   parameter_vac_H[BASE_T].push_back(0.033659966153300002);
    4990           4 :   parameter_vac_H[BASE_T].push_back(-6.057999187718758);
    4991           4 :   parameter_vac_H[BASE_T].push_back(4.146969282504351);
    4992           4 :   parameter_vac_H[BASE_T].push_back(-20.664315319574357);
    4993           4 :   parameter_vac_H[BASE_T].push_back(19.982178623201648);
    4994           4 :   parameter_vac_H[BASE_T].push_back(-5.440921587349456);
    4995             : 
    4996           4 :   parameter_vac_H[BASE_U].push_back(20.958084119209754);
    4997           4 :   parameter_vac_H[BASE_U].push_back(-0.005164660707148803);
    4998           4 :   parameter_vac_H[BASE_U].push_back(-14.53831312442302);
    4999           4 :   parameter_vac_H[BASE_U].push_back(-0.5276995756310442);
    5000           4 :   parameter_vac_H[BASE_U].push_back(7.060900707522138);
    5001           4 :   parameter_vac_H[BASE_U].push_back(-1.8988408480951036);
    5002           4 :   parameter_vac_H[BASE_U].push_back(-0.215000567681094);
    5003             : 
    5004       14298 :   for(unsigned i=0; i<atoms.size(); ++i) {
    5005       14294 :     std::string Aname = pdb.getAtomName(atoms[i]);
    5006       14294 :     std::string Rname = pdb.getResidueName(atoms[i]);
    5007       14294 :     Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
    5008       14294 :     if(Rname=="ALA") {
    5009         732 :       atoi[residue_atom[i]]=ALA;
    5010       13562 :     } else if(Rname=="ARG") {
    5011         864 :       atoi[residue_atom[i]]=ARG;
    5012       12698 :     } else if(Rname=="ASN") {
    5013         720 :       atoi[residue_atom[i]]=ASN;
    5014       11978 :     } else if(Rname=="ASP") {
    5015         624 :       atoi[residue_atom[i]]=ASP;
    5016       11354 :     } else if(Rname=="CYS") {
    5017          48 :       atoi[residue_atom[i]]=CYS;
    5018       11306 :     } else if(Rname=="GLN") {
    5019        1064 :       atoi[residue_atom[i]]=GLN;
    5020       10242 :     } else if(Rname=="GLU") {
    5021         476 :       atoi[residue_atom[i]]=GLU;
    5022        9766 :     } else if(Rname=="GLY") {
    5023         648 :       atoi[residue_atom[i]]=GLY;
    5024        9118 :     } else if(Rname=="HIS") {
    5025           0 :       atoi[residue_atom[i]]=HIS;
    5026        9118 :     } else if(Rname=="HID") {
    5027           0 :       atoi[residue_atom[i]]=HIS;
    5028        9118 :     } else if(Rname=="HIE") {
    5029         144 :       atoi[residue_atom[i]]=HIS;
    5030        8974 :     } else if(Rname=="HIP") {
    5031           0 :       atoi[residue_atom[i]]=HIP;
    5032             :       // CHARMM NAMING FOR PROTONATION STATES OF HISTIDINE
    5033        8974 :     } else if(Rname=="HSD") {
    5034           0 :       atoi[residue_atom[i]]=HIS;
    5035        8974 :     } else if(Rname=="HSE") {
    5036           0 :       atoi[residue_atom[i]]=HIS;
    5037        8974 :     } else if(Rname=="HSP") {
    5038           0 :       atoi[residue_atom[i]]=HIP;
    5039        8974 :     } else if(Rname=="ILE") {
    5040         864 :       atoi[residue_atom[i]]=ILE;
    5041        8110 :     } else if(Rname=="LEU") {
    5042        1520 :       atoi[residue_atom[i]]=LEU;
    5043        6590 :     } else if(Rname=="LYS") {
    5044        1040 :       atoi[residue_atom[i]]=LYS;
    5045        5550 :     } else if(Rname=="MET") {
    5046         608 :       atoi[residue_atom[i]]=MET;
    5047        4942 :     } else if(Rname=="PHE") {
    5048        1008 :       atoi[residue_atom[i]]=PHE;
    5049        3934 :     } else if(Rname=="PRO") {
    5050         748 :       atoi[residue_atom[i]]=PRO;
    5051        3186 :     } else if(Rname=="SER") {
    5052         528 :       atoi[residue_atom[i]]=SER;
    5053        2658 :     } else if(Rname=="THR") {
    5054         504 :       atoi[residue_atom[i]]=THR;
    5055        2154 :     } else if(Rname=="TRP") {
    5056           0 :       atoi[residue_atom[i]]=TRP;
    5057        2154 :     } else if(Rname=="TYR") {
    5058         528 :       atoi[residue_atom[i]]=TYR;
    5059        1626 :     } else if(Rname=="VAL") {
    5060        1088 :       atoi[residue_atom[i]]=VAL;
    5061             :     }
    5062             :     // NUCLEIC ACIDS
    5063             :     // nucleobases are not automatically populated as an additional check on the health of the PDB.
    5064             :     // RNA - G
    5065         538 :     else if(Rname=="G") {
    5066           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5067           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5068           0 :         atoi [residue_atom[i]]=BB_PO2;
    5069           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5070           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5071           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5072           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5073           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5074           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5075           0 :         atoi[residue_atom[i]]=BB_RNA;
    5076           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5077           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5078           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5079           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5080           0 :         atoi[residue_atom[i]]=BASE_G;
    5081             :       } else {
    5082           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5083             :       }
    5084             :       // RNA - G3
    5085         538 :     } else if(Rname=="G3") {
    5086           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5087           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5088           0 :         atoi [residue_atom[i]]=BB_PO2;
    5089           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    5090           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    5091           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    5092           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    5093           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    5094           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    5095           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    5096           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5097           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5098           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5099           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5100           0 :         atoi[residue_atom[i]]=BASE_G;
    5101             :       } else {
    5102           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5103             :       }
    5104             :       // RNA - G5
    5105         538 :     } else if(Rname=="G5") {
    5106           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5107           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5108           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5109           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    5110           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    5111           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    5112           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    5113           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5114           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5115           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5116           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5117           0 :         atoi[residue_atom[i]]=BASE_G;
    5118             :       } else {
    5119           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5120             :       }
    5121             :       // RNA - U
    5122         538 :     } else if(Rname=="U") {
    5123        1554 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5124        1176 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5125          42 :         atoi [residue_atom[i]]=BB_PO2;
    5126        1372 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5127        1148 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5128         924 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5129         714 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5130         644 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5131         840 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5132         224 :         atoi[residue_atom[i]]=BB_RNA;
    5133         476 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    5134         252 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    5135         196 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    5136         154 :         atoi[residue_atom[i]]=BASE_U;
    5137             :       } else {
    5138           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5139             :       }
    5140             :       // RNA - U3
    5141         118 :     } else if(Rname=="U3") {
    5142         230 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5143         174 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5144           6 :         atoi [residue_atom[i]]=BB_PO2;
    5145         204 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    5146         172 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    5147         140 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    5148         110 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    5149          94 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    5150          78 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    5151          34 :         atoi[residue_atom[i]]=BB_RNA_3;
    5152          68 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    5153          36 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    5154          28 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    5155          22 :         atoi[residue_atom[i]]=BASE_U;
    5156             :       } else {
    5157           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5158             :       }
    5159             :       // RNA - U5
    5160          56 :     } else if(Rname=="U5") {
    5161         204 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5162         172 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5163         140 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5164         108 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    5165          88 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    5166          78 :           Aname=="H2'1" || Aname=="H5T" ) {
    5167          34 :         atoi[residue_atom[i]]=BB_RNA_5;
    5168          68 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    5169          36 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    5170          28 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    5171          22 :         atoi[residue_atom[i]]=BASE_U;
    5172             :       } else {
    5173           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5174             :       }
    5175             :       // RNA - A
    5176           0 :     } else if(Rname=="A") {
    5177           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5178           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5179           0 :         atoi [residue_atom[i]]=BB_PO2;
    5180           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5181           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5182           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5183           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5184           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5185           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5186           0 :         atoi[residue_atom[i]]=BB_RNA;
    5187           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5188           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5189           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5190           0 :                 Aname=="H61" || Aname=="H62" ) {
    5191           0 :         atoi[residue_atom[i]]=BASE_A;
    5192             :       } else {
    5193           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5194             :       }
    5195             :       // RNA - A3
    5196           0 :     } else if(Rname=="A3") {
    5197           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5198           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5199           0 :         atoi [residue_atom[i]]=BB_PO2;
    5200           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    5201           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    5202           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    5203           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    5204           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    5205           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    5206           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    5207           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5208           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5209           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5210           0 :                 Aname=="H61" || Aname=="H62" ) {
    5211           0 :         atoi[residue_atom[i]]=BASE_A;
    5212             :       } else {
    5213           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5214             :       }
    5215             :       // RNA - A5
    5216           0 :     } else if(Rname=="A5") {
    5217           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5218           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5219           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5220           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    5221           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    5222           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    5223           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    5224           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5225           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5226           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5227           0 :                 Aname=="H61" || Aname=="H62" ) {
    5228           0 :         atoi[residue_atom[i]]=BASE_A;
    5229             :       } else {
    5230           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5231             :       }
    5232             :       // RNA - C
    5233           0 :     } else if(Rname=="C") {
    5234           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5235           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5236           0 :         atoi [residue_atom[i]]=BB_PO2;
    5237           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5238           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5239           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5240           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    5241           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    5242           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    5243           0 :         atoi[residue_atom[i]]=BB_RNA;
    5244           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5245           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5246           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5247           0 :         atoi[residue_atom[i]]=BASE_C;
    5248             :       } else {
    5249           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5250             :       }
    5251             :       // RNA - C3
    5252           0 :     } else if(Rname=="C3") {
    5253           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5254           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5255           0 :         atoi [residue_atom[i]]=BB_PO2;
    5256           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    5257           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    5258           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    5259           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    5260           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    5261           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    5262           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    5263           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5264           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5265           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5266           0 :         atoi[residue_atom[i]]=BASE_C;
    5267             :       } else {
    5268           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5269             :       }
    5270             :       // RNA - C5
    5271           0 :     } else if(Rname=="C5") {
    5272           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5273           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    5274           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    5275           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    5276           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    5277           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    5278           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    5279           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5280           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5281           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5282           0 :         atoi[residue_atom[i]]=BASE_C;
    5283             :       } else {
    5284           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5285             :       }
    5286             :       // DNA - G
    5287           0 :     } else if(Rname=="DG") {
    5288           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5289           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5290           0 :         atoi [residue_atom[i]]=BB_PO2;
    5291           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5292           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5293           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5294           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5295           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    5296           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    5297           0 :         atoi[residue_atom[i]]=BB_DNA;
    5298           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5299           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5300           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5301           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5302           0 :         atoi[residue_atom[i]]=BASE_G;
    5303             :       } else {
    5304           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5305             :       }
    5306             :       // DNA - G3
    5307           0 :     } else if(Rname=="DG3") {
    5308           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5309           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5310           0 :         atoi [residue_atom[i]]=BB_PO2;
    5311           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5312           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5313           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5314           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    5315           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5316             :                 Aname=="H3T" ) {
    5317           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    5318           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5319           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5320           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5321           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5322           0 :         atoi[residue_atom[i]]=BASE_G;
    5323             :       } else {
    5324           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5325             :       }
    5326             :       // DNA - G5
    5327           0 :     } else if(Rname=="DG5") {
    5328           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5329           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    5330           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5331           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5332           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5333             :           Aname=="H5T" ) {
    5334           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    5335           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    5336           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    5337           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    5338           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    5339           0 :         atoi[residue_atom[i]]=BASE_G;
    5340             :       } else {
    5341           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5342             :       }
    5343             :       // DNA - T
    5344           0 :     } else if(Rname=="DT") {
    5345           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5346           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5347           0 :         atoi [residue_atom[i]]=BB_PO2;
    5348           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5349           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5350           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5351           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5352           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    5353           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    5354           0 :         atoi[residue_atom[i]]=BB_DNA;
    5355           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    5356           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    5357           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    5358           0 :                 Aname=="H72" || Aname=="H73" ) {
    5359           0 :         atoi[residue_atom[i]]=BASE_T;
    5360             :       } else {
    5361           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5362             :       }
    5363             :       // DNA - T3
    5364           0 :     } else if(Rname=="DT3") {
    5365           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5366           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5367           0 :         atoi [residue_atom[i]]=BB_PO2;
    5368           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5369           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5370           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5371           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    5372           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5373             :                 Aname=="H3T" ) {
    5374           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    5375           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    5376           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    5377           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    5378           0 :                 Aname=="H72" || Aname=="H73" ) {
    5379           0 :         atoi[residue_atom[i]]=BASE_T;
    5380             :       } else {
    5381           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5382             :       }
    5383             :       // DNA - T5
    5384           0 :     } else if(Rname=="DT5") {
    5385           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5386           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    5387           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5388           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5389           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5390             :           Aname=="H5T" ) {
    5391           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    5392           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    5393           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    5394           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    5395           0 :                 Aname=="H72" || Aname=="H73" ) {
    5396           0 :         atoi[residue_atom[i]]=BASE_T;
    5397             :       } else {
    5398           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5399             :       }
    5400             :       // DNA - A
    5401           0 :     } else if(Rname=="DA") {
    5402           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5403           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5404           0 :         atoi [residue_atom[i]]=BB_PO2;
    5405           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5406           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5407           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5408           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5409           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    5410           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    5411           0 :         atoi[residue_atom[i]]=BB_DNA;
    5412           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5413           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5414           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5415           0 :                 Aname=="H61" || Aname=="H62" ) {
    5416           0 :         atoi[residue_atom[i]]=BASE_A;
    5417             :       } else {
    5418           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5419             :       }
    5420             :       // DNA - A3
    5421           0 :     } else if(Rname=="DA3") {
    5422           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5423           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5424           0 :         atoi [residue_atom[i]]=BB_PO2;
    5425           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5426           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5427           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5428           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    5429           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5430             :                 Aname=="H3T" ) {
    5431           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    5432           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5433           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5434           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5435           0 :                 Aname=="H61" || Aname=="H62" ) {
    5436           0 :         atoi[residue_atom[i]]=BASE_A;
    5437             :       } else {
    5438           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5439             :       }
    5440             :       // DNA - A5
    5441           0 :     } else if(Rname=="DA5") {
    5442           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5443           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    5444           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5445           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5446           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5447             :           Aname=="H5T" ) {
    5448           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    5449           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    5450           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    5451           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    5452           0 :                 Aname=="H61" || Aname=="H62" ) {
    5453           0 :         atoi[residue_atom[i]]=BASE_A;
    5454             :       } else {
    5455           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5456             :       }
    5457             :       // DNA - C
    5458           0 :     } else if(Rname=="DC") {
    5459           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5460           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5461           0 :         atoi [residue_atom[i]]=BB_PO2;
    5462           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5463           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5464           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5465           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5466           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    5467           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    5468           0 :         atoi[residue_atom[i]]=BB_DNA;
    5469           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5470           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5471           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5472           0 :         atoi[residue_atom[i]]=BASE_C;
    5473             :       } else {
    5474           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5475             :       }
    5476             :       // DNA - C3
    5477           0 :     } else if(Rname=="DC3") {
    5478           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    5479           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    5480           0 :         atoi [residue_atom[i]]=BB_PO2;
    5481           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5482           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    5483           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5484           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    5485           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5486             :                 Aname=="H3T" ) {
    5487           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    5488           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5489           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5490           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5491           0 :         atoi[residue_atom[i]]=BASE_C;
    5492             :       } else {
    5493           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5494             :       }
    5495             :       // DNA - C5
    5496           0 :     } else if(Rname=="DC5") {
    5497           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    5498           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    5499           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    5500           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    5501           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    5502             :           Aname=="H5T" ) {
    5503           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    5504           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    5505           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    5506           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    5507           0 :         atoi[residue_atom[i]]=BASE_C;
    5508             :       } else {
    5509           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    5510             :       }
    5511             :     } else {
    5512           0 :       error("Residue not known: "+Rname);
    5513             :     }
    5514             :   }
    5515           4 : }
    5516             : 
    5517           4 : 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) {
    5518             :   // 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.
    5519           4 :   parameter_mix_D[TRP].push_back(8105.740500119327);
    5520           4 :   parameter_mix_D[TRP].push_back(-41.785616935469804);
    5521           4 :   parameter_mix_D[TRP].push_back(-25456.92790554363);
    5522           4 :   parameter_mix_D[TRP].push_back(-10058.20599969184);
    5523           4 :   parameter_mix_D[TRP].push_back(86171.76479108425);
    5524           4 :   parameter_mix_D[TRP].push_back(-83227.63139882773);
    5525           4 :   parameter_mix_D[TRP].push_back(25121.390436258724);
    5526             : 
    5527           4 :   parameter_mix_D[TYR].push_back(6059.530560118732);
    5528           4 :   parameter_mix_D[TYR].push_back(-24.522695525705736);
    5529           4 :   parameter_mix_D[TYR].push_back(-17180.858815360847);
    5530           4 :   parameter_mix_D[TYR].push_back(-5990.1358528219325);
    5531           4 :   parameter_mix_D[TYR].push_back(52936.46126637543);
    5532           4 :   parameter_mix_D[TYR].push_back(-50150.0042622683);
    5533           4 :   parameter_mix_D[TYR].push_back(14914.553672440441);
    5534             : 
    5535           4 :   parameter_mix_D[PHE].push_back(5563.404880119222);
    5536           4 :   parameter_mix_D[PHE].push_back(-33.609784645922794);
    5537           4 :   parameter_mix_D[PHE].push_back(-14576.935030777448);
    5538           4 :   parameter_mix_D[PHE].push_back(-5759.170105553782);
    5539           4 :   parameter_mix_D[PHE].push_back(43316.895956549866);
    5540           4 :   parameter_mix_D[PHE].push_back(-39106.58694570862);
    5541           4 :   parameter_mix_D[PHE].push_back(11143.375742877468);
    5542             : 
    5543           4 :   parameter_mix_D[HIP].push_back(3981.7108801192553);
    5544           4 :   parameter_mix_D[HIP].push_back(-23.788371565946427);
    5545           4 :   parameter_mix_D[HIP].push_back(-9471.73953776056);
    5546           4 :   parameter_mix_D[HIP].push_back(-3690.3981577198365);
    5547           4 :   parameter_mix_D[HIP].push_back(26365.958584217453);
    5548           4 :   parameter_mix_D[HIP].push_back(-23067.58974902849);
    5549           4 :   parameter_mix_D[HIP].push_back(6390.507451097114);
    5550             : 
    5551           4 :   parameter_mix_D[ARG].push_back(6279.489359881259);
    5552           4 :   parameter_mix_D[ARG].push_back(1.2061878338083583);
    5553           4 :   parameter_mix_D[ARG].push_back(-20305.413937989913);
    5554           4 :   parameter_mix_D[ARG].push_back(-5621.666335222669);
    5555           4 :   parameter_mix_D[ARG].push_back(67341.96785520067);
    5556           4 :   parameter_mix_D[ARG].push_back(-68849.15464591733);
    5557           4 :   parameter_mix_D[ARG].push_back(21773.0630363882);
    5558             : 
    5559           4 :   parameter_mix_D[LYS].push_back(5434.487400119193);
    5560           4 :   parameter_mix_D[LYS].push_back(-29.32356328987909);
    5561           4 :   parameter_mix_D[LYS].push_back(-14363.66155749977);
    5562           4 :   parameter_mix_D[LYS].push_back(-5650.383128516514);
    5563           4 :   parameter_mix_D[LYS].push_back(44573.73888236887);
    5564           4 :   parameter_mix_D[LYS].push_back(-41515.980945300485);
    5565           4 :   parameter_mix_D[LYS].push_back(12181.965046747513);
    5566             : 
    5567           4 :   parameter_mix_D[CYS].push_back(1519.4030001192032);
    5568           4 :   parameter_mix_D[CYS].push_back(-3.564386334921097);
    5569           4 :   parameter_mix_D[CYS].push_back(-2275.813167459516);
    5570           4 :   parameter_mix_D[CYS].push_back(-409.54431591328125);
    5571           4 :   parameter_mix_D[CYS].push_back(2969.5412742839258);
    5572           4 :   parameter_mix_D[CYS].push_back(-1798.3157146799638);
    5573           4 :   parameter_mix_D[CYS].push_back(314.568167888235);
    5574             : 
    5575           4 :   parameter_mix_D[ASP].push_back(1861.6998401191709);
    5576           4 :   parameter_mix_D[ASP].push_back(-5.349780637260551);
    5577           4 :   parameter_mix_D[ASP].push_back(-2960.36741510377);
    5578           4 :   parameter_mix_D[ASP].push_back(-621.8270745040523);
    5579           4 :   parameter_mix_D[ASP].push_back(4334.798300452934);
    5580           4 :   parameter_mix_D[ASP].push_back(-2776.8560521554878);
    5581           4 :   parameter_mix_D[ASP].push_back(527.9777182094936);
    5582             : 
    5583           4 :   parameter_mix_D[GLU].push_back(2861.6017201192253);
    5584           4 :   parameter_mix_D[GLU].push_back(-13.146456903921809);
    5585           4 :   parameter_mix_D[GLU].push_back(-5393.408563875243);
    5586           4 :   parameter_mix_D[GLU].push_back(-1646.460570818364);
    5587           4 :   parameter_mix_D[GLU].push_back(10884.544923253858);
    5588           4 :   parameter_mix_D[GLU].push_back(-8159.923373048856);
    5589           4 :   parameter_mix_D[GLU].push_back(1914.545660397314);
    5590             : 
    5591           4 :   parameter_mix_D[ILE].push_back(4288.585540119189);
    5592           4 :   parameter_mix_D[ILE].push_back(-19.937215352880365);
    5593           4 :   parameter_mix_D[ILE].push_back(-8324.540144463375);
    5594           4 :   parameter_mix_D[ILE].push_back(-2431.835931316717);
    5595           4 :   parameter_mix_D[ILE].push_back(16079.9912986194);
    5596           4 :   parameter_mix_D[ILE].push_back(-11637.693060394462);
    5597           4 :   parameter_mix_D[ILE].push_back(2600.8258068480495);
    5598             : 
    5599           4 :   parameter_mix_D[LEU].push_back(4288.585540119186);
    5600           4 :   parameter_mix_D[LEU].push_back(-21.50343599461759);
    5601           4 :   parameter_mix_D[LEU].push_back(-8479.703435720274);
    5602           4 :   parameter_mix_D[LEU].push_back(-2647.8693829269596);
    5603           4 :   parameter_mix_D[LEU].push_back(17297.18115838578);
    5604           4 :   parameter_mix_D[LEU].push_back(-12826.972408323161);
    5605           4 :   parameter_mix_D[LEU].push_back(2953.1262521615645);
    5606             : 
    5607           4 :   parameter_mix_D[MET].push_back(3561.6276801191552);
    5608           4 :   parameter_mix_D[MET].push_back(-22.19323392975885);
    5609           4 :   parameter_mix_D[MET].push_back(-8348.33907053846);
    5610           4 :   parameter_mix_D[MET].push_back(-3323.053272414289);
    5611           4 :   parameter_mix_D[MET].push_back(23153.238909304255);
    5612           4 :   parameter_mix_D[MET].push_back(-20091.960440908682);
    5613           4 :   parameter_mix_D[MET].push_back(5518.759669687693);
    5614             : 
    5615           4 :   parameter_mix_D[ASN].push_back(2326.5396001192003);
    5616           4 :   parameter_mix_D[ASN].push_back(-8.634908921289112);
    5617           4 :   parameter_mix_D[ASN].push_back(-4057.4552636749636);
    5618           4 :   parameter_mix_D[ASN].push_back(-1032.743130124821);
    5619           4 :   parameter_mix_D[ASN].push_back(6957.141592429445);
    5620           4 :   parameter_mix_D[ASN].push_back(-4808.265318722317);
    5621           4 :   parameter_mix_D[ASN].push_back(1016.3944815533755);
    5622             : 
    5623           4 :   parameter_mix_D[PRO].push_back(2471.1663601191985);
    5624           4 :   parameter_mix_D[PRO].push_back(-6.360795284260088);
    5625           4 :   parameter_mix_D[PRO].push_back(-3825.4533158429153);
    5626           4 :   parameter_mix_D[PRO].push_back(-728.7164844824666);
    5627           4 :   parameter_mix_D[PRO].push_back(5195.036303827973);
    5628           4 :   parameter_mix_D[PRO].push_back(-3183.733716480742);
    5629           4 :   parameter_mix_D[PRO].push_back(563.2376162754107);
    5630             : 
    5631           4 :   parameter_mix_D[GLN].push_back(3431.669280119236);
    5632           4 :   parameter_mix_D[GLN].push_back(-19.412747205646166);
    5633           4 :   parameter_mix_D[GLN].push_back(-7298.017973002134);
    5634           4 :   parameter_mix_D[GLN].push_back(-2659.3014182337706);
    5635           4 :   parameter_mix_D[GLN].push_back(17890.76595805173);
    5636           4 :   parameter_mix_D[GLN].push_back(-14684.603067192957);
    5637           4 :   parameter_mix_D[GLN].push_back(3814.338335151394);
    5638             : 
    5639           4 :   parameter_mix_D[SER].push_back(1423.885200119192);
    5640           4 :   parameter_mix_D[SER].push_back(-2.586428606204385);
    5641           4 :   parameter_mix_D[SER].push_back(-1966.7369507188134);
    5642           4 :   parameter_mix_D[SER].push_back(-289.17277383434106);
    5643           4 :   parameter_mix_D[SER].push_back(2209.478296043199);
    5644           4 :   parameter_mix_D[SER].push_back(-1216.1521614944);
    5645           4 :   parameter_mix_D[SER].push_back(177.0615931546754);
    5646             : 
    5647           4 :   parameter_mix_D[THR].push_back(2311.2364801191825);
    5648           4 :   parameter_mix_D[THR].push_back(-6.258071321531929);
    5649           4 :   parameter_mix_D[THR].push_back(-3656.295629081312);
    5650           4 :   parameter_mix_D[THR].push_back(-716.4013890357804);
    5651           4 :   parameter_mix_D[THR].push_back(5071.656317108832);
    5652           4 :   parameter_mix_D[THR].push_back(-3125.8076789667816);
    5653           4 :   parameter_mix_D[THR].push_back(555.9775741081131);
    5654             : 
    5655           4 :   parameter_mix_D[VAL].push_back(3041.128320119224);
    5656           4 :   parameter_mix_D[VAL].push_back(-9.314034190716423);
    5657           4 :   parameter_mix_D[VAL].push_back(-5075.684780220629);
    5658           4 :   parameter_mix_D[VAL].push_back(-1070.7083380665008);
    5659           4 :   parameter_mix_D[VAL].push_back(7455.654515006894);
    5660           4 :   parameter_mix_D[VAL].push_back(-4701.19187164774);
    5661           4 :   parameter_mix_D[VAL].push_back(863.4906179388547);
    5662             : 
    5663           4 :   parameter_mix_D[ALA].push_back(1187.65300011922);
    5664           4 :   parameter_mix_D[ALA].push_back(-1.7011187932116822);
    5665           4 :   parameter_mix_D[ALA].push_back(-1521.0113615359212);
    5666           4 :   parameter_mix_D[ALA].push_back(-187.93745840575576);
    5667           4 :   parameter_mix_D[ALA].push_back(1514.6745873304449);
    5668           4 :   parameter_mix_D[ALA].push_back(-775.3890045113897);
    5669           4 :   parameter_mix_D[ALA].push_back(96.41428177656567);
    5670             : 
    5671           4 :   parameter_mix_D[GLY].push_back(581.6349001192067);
    5672           4 :   parameter_mix_D[GLY].push_back(-0.5877833598361395);
    5673           4 :   parameter_mix_D[GLY].push_back(-640.0421286186524);
    5674           4 :   parameter_mix_D[GLY].push_back(-64.58515074152534);
    5675           4 :   parameter_mix_D[GLY].push_back(551.9509853583185);
    5676           4 :   parameter_mix_D[GLY].push_back(-264.1522021146006);
    5677           4 :   parameter_mix_D[GLY].push_back(28.36986478439301);
    5678             : 
    5679           4 :   parameter_mix_D[HIS].push_back(3648.812220119277);
    5680           4 :   parameter_mix_D[HIS].push_back(-22.703075403555548);
    5681           4 :   parameter_mix_D[HIS].push_back(-8260.235189881098);
    5682           4 :   parameter_mix_D[HIS].push_back(-3190.3176569039265);
    5683           4 :   parameter_mix_D[HIS].push_back(21589.074332364213);
    5684           4 :   parameter_mix_D[HIS].push_back(-18108.640157613925);
    5685           4 :   parameter_mix_D[HIS].push_back(4801.237639634437);
    5686             : 
    5687           4 :   parameter_vac_D[TRP].push_back(270.43802511921314);
    5688           4 :   parameter_vac_D[TRP].push_back(-2.196022464340772);
    5689           4 :   parameter_vac_D[TRP].push_back(-780.9546710244318);
    5690           4 :   parameter_vac_D[TRP].push_back(-371.1573508312626);
    5691           4 :   parameter_vac_D[TRP].push_back(2668.7678731652445);
    5692           4 :   parameter_vac_D[TRP].push_back(-2478.2920954223678);
    5693           4 :   parameter_vac_D[TRP].push_back(722.3731624901676);
    5694             : 
    5695           4 :   parameter_vac_D[TYR].push_back(198.471744119211);
    5696           4 :   parameter_vac_D[TYR].push_back(-1.236792846228289);
    5697           4 :   parameter_vac_D[TYR].push_back(-508.0448711054671);
    5698           4 :   parameter_vac_D[TYR].push_back(-210.55908129481216);
    5699           4 :   parameter_vac_D[TYR].push_back(1558.3884734212413);
    5700           4 :   parameter_vac_D[TYR].push_back(-1418.36319255665);
    5701           4 :   parameter_vac_D[TYR].push_back(407.21567613893296);
    5702             : 
    5703           4 :   parameter_vac_D[PHE].push_back(182.46606411921402);
    5704           4 :   parameter_vac_D[PHE].push_back(-1.2708008333861447);
    5705           4 :   parameter_vac_D[PHE].push_back(-424.50905926426054);
    5706           4 :   parameter_vac_D[PHE].push_back(-177.97207825696387);
    5707           4 :   parameter_vac_D[PHE].push_back(1180.839971941918);
    5708           4 :   parameter_vac_D[PHE].push_back(-1004.004765231886);
    5709           4 :   parameter_vac_D[PHE].push_back(269.34384064610344);
    5710             : 
    5711           4 :   parameter_vac_D[HIP].push_back(161.95107611920753);
    5712           4 :   parameter_vac_D[HIP].push_back(-0.9661246983835707);
    5713           4 :   parameter_vac_D[HIP].push_back(-332.04673226423995);
    5714           4 :   parameter_vac_D[HIP].push_back(-125.41755194926544);
    5715           4 :   parameter_vac_D[HIP].push_back(808.705672166199);
    5716           4 :   parameter_vac_D[HIP].push_back(-648.8340711218191);
    5717           4 :   parameter_vac_D[HIP].push_back(163.71251277400307);
    5718             : 
    5719           4 :   parameter_vac_D[ARG].push_back(289.0340011192071);
    5720           4 :   parameter_vac_D[ARG].push_back(-1.4195753436279361);
    5721           4 :   parameter_vac_D[ARG].push_back(-836.3864005546434);
    5722           4 :   parameter_vac_D[ARG].push_back(-346.7081039129904);
    5723           4 :   parameter_vac_D[ARG].push_back(2922.003491580559);
    5724           4 :   parameter_vac_D[ARG].push_back(-2864.816533173085);
    5725           4 :   parameter_vac_D[ARG].push_back(877.9525045072293);
    5726             : 
    5727           4 :   parameter_vac_D[LYS].push_back(228.64464111920753);
    5728           4 :   parameter_vac_D[LYS].push_back(-1.686580749083617);
    5729           4 :   parameter_vac_D[LYS].push_back(-544.8870548339771);
    5730           4 :   parameter_vac_D[LYS].push_back(-252.11087773186324);
    5731           4 :   parameter_vac_D[LYS].push_back(1693.784850493428);
    5732           4 :   parameter_vac_D[LYS].push_back(-1514.2375008160348);
    5733           4 :   parameter_vac_D[LYS].push_back(427.0713155512121);
    5734             : 
    5735           4 :   parameter_vac_D[CYS].push_back(50.836900116324315);
    5736           4 :   parameter_vac_D[CYS].push_back(-0.040204572899665315);
    5737           4 :   parameter_vac_D[CYS].push_back(-55.592868149339424);
    5738           4 :   parameter_vac_D[CYS].push_back(-4.341359624977117);
    5739           4 :   parameter_vac_D[CYS].push_back(41.55290573185214);
    5740           4 :   parameter_vac_D[CYS].push_back(-17.248208429078456);
    5741           4 :   parameter_vac_D[CYS].push_back(1.0736187172140528);
    5742             : 
    5743           4 :   parameter_vac_D[ASP].push_back(64.12806411920792);
    5744           4 :   parameter_vac_D[ASP].push_back(-0.08245818875074411);
    5745           4 :   parameter_vac_D[ASP].push_back(-78.95500211069523);
    5746           4 :   parameter_vac_D[ASP].push_back(-9.030157332821238);
    5747           4 :   parameter_vac_D[ASP].push_back(74.72033164806712);
    5748           4 :   parameter_vac_D[ASP].push_back(-36.71042192737952);
    5749           4 :   parameter_vac_D[ASP].push_back(4.0989206257493676);
    5750             : 
    5751           4 :   parameter_vac_D[GLU].push_back(100.14004911920799);
    5752           4 :   parameter_vac_D[GLU].push_back(-0.28685123265362006);
    5753           4 :   parameter_vac_D[GLU].push_back(-152.44619103423773);
    5754           4 :   parameter_vac_D[GLU].push_back(-32.99432901288321);
    5755           4 :   parameter_vac_D[GLU].push_back(225.5853175183811);
    5756           4 :   parameter_vac_D[GLU].push_back(-144.8489352831419);
    5757           4 :   parameter_vac_D[GLU].push_back(27.49692658880534);
    5758             : 
    5759           4 :   parameter_vac_D[ILE].push_back(165.04540911921134);
    5760           4 :   parameter_vac_D[ILE].push_back(-0.5061553029227089);
    5761           4 :   parameter_vac_D[ILE].push_back(-275.1890586090823);
    5762           4 :   parameter_vac_D[ILE].push_back(-57.288063177375356);
    5763           4 :   parameter_vac_D[ILE].push_back(398.9780357099449);
    5764           4 :   parameter_vac_D[ILE].push_back(-245.42678814428692);
    5765           4 :   parameter_vac_D[ILE].push_back(42.72941025472001);
    5766             : 
    5767           4 :   parameter_vac_D[LEU].push_back(165.04540911921134);
    5768           4 :   parameter_vac_D[LEU].push_back(-0.580034983510499);
    5769           4 :   parameter_vac_D[LEU].push_back(-281.30910057877514);
    5770           4 :   parameter_vac_D[LEU].push_back(-66.19427345166183);
    5771           4 :   parameter_vac_D[LEU].push_back(445.19214155995115);
    5772           4 :   parameter_vac_D[LEU].push_back(-287.0653610399624);
    5773           4 :   parameter_vac_D[LEU].push_back(53.86626261066706);
    5774             : 
    5775           4 :   parameter_vac_D[MET].push_back(123.83238411920684);
    5776           4 :   parameter_vac_D[MET].push_back(-0.7698672022751385);
    5777           4 :   parameter_vac_D[MET].push_back(-251.2481622173618);
    5778           4 :   parameter_vac_D[MET].push_back(-100.67742019193848);
    5779           4 :   parameter_vac_D[MET].push_back(641.1563254731632);
    5780           4 :   parameter_vac_D[MET].push_back(-524.8742634212379);
    5781           4 :   parameter_vac_D[MET].push_back(135.36487813767542);
    5782             : 
    5783           4 :   parameter_vac_D[ASN].push_back(94.12880411921148);
    5784           4 :   parameter_vac_D[ASN].push_back(-0.22986194121078912);
    5785           4 :   parameter_vac_D[ASN].push_back(-138.78769705028003);
    5786           4 :   parameter_vac_D[ASN].push_back(-25.896846049402594);
    5787           4 :   parameter_vac_D[ASN].push_back(184.55609781654326);
    5788           4 :   parameter_vac_D[ASN].push_back(-110.14043851975404);
    5789           4 :   parameter_vac_D[ASN].push_back(18.388834098004153);
    5790             : 
    5791           4 :   parameter_vac_D[PRO].push_back(90.51619611920745);
    5792           4 :   parameter_vac_D[PRO].push_back(-0.0977238494110807);
    5793           4 :   parameter_vac_D[PRO].push_back(-109.43531311067846);
    5794           4 :   parameter_vac_D[PRO].push_back(-10.592981104983805);
    5795           4 :   parameter_vac_D[PRO].push_back(93.64863466237733);
    5796           4 :   parameter_vac_D[PRO].push_back(-42.348197720920865);
    5797           4 :   parameter_vac_D[PRO].push_back(3.5854078482704574);
    5798             : 
    5799           4 :   parameter_vac_D[GLN].push_back(136.91340111920806);
    5800           4 :   parameter_vac_D[GLN].push_back(-0.7259026842220699);
    5801           4 :   parameter_vac_D[GLN].push_back(-257.0347011897067);
    5802           4 :   parameter_vac_D[GLN].push_back(-89.99600255417684);
    5803           4 :   parameter_vac_D[GLN].push_back(570.3890595917421);
    5804           4 :   parameter_vac_D[GLN].push_back(-438.8977029769549);
    5805           4 :   parameter_vac_D[GLN].push_back(105.48846039376491);
    5806             : 
    5807           4 :   parameter_vac_D[SER].push_back(55.20490011583253);
    5808           4 :   parameter_vac_D[SER].push_back(-0.038078030710377984);
    5809           4 :   parameter_vac_D[SER].push_back(-58.79085960838952);
    5810           4 :   parameter_vac_D[SER].push_back(-4.067364063406562);
    5811           4 :   parameter_vac_D[SER].push_back(41.319899403658475);
    5812           4 :   parameter_vac_D[SER].push_back(-15.865682241288962);
    5813           4 :   parameter_vac_D[SER].push_back(0.5028409006168431);
    5814             : 
    5815           4 :   parameter_vac_D[THR].push_back(88.90604111920842);
    5816           4 :   parameter_vac_D[THR].push_back(-0.11566717587697625);
    5817           4 :   parameter_vac_D[THR].push_back(-114.4541243837681);
    5818           4 :   parameter_vac_D[THR].push_back(-12.541537413808342);
    5819           4 :   parameter_vac_D[THR].push_back(106.4974738790947);
    5820           4 :   parameter_vac_D[THR].push_back(-50.15009912825225);
    5821           4 :   parameter_vac_D[THR].push_back(4.719349514074467);
    5822             : 
    5823           4 :   parameter_vac_D[VAL].push_back(117.67910411920792);
    5824           4 :   parameter_vac_D[VAL].push_back(-0.18187311248567883);
    5825           4 :   parameter_vac_D[VAL].push_back(-162.8697844894754);
    5826           4 :   parameter_vac_D[VAL].push_back(-19.769248288711825);
    5827           4 :   parameter_vac_D[VAL].push_back(162.59270939168965);
    5828           4 :   parameter_vac_D[VAL].push_back(-79.37261506441627);
    5829           4 :   parameter_vac_D[VAL].push_back(8.230771959393175);
    5830             : 
    5831           4 :   parameter_vac_D[ALA].push_back(46.92250011448002);
    5832           4 :   parameter_vac_D[ALA].push_back(-0.020339064649444412);
    5833           4 :   parameter_vac_D[ALA].push_back(-44.41584945233503);
    5834           4 :   parameter_vac_D[ALA].push_back(-2.1483754537886113);
    5835           4 :   parameter_vac_D[ALA].push_back(25.713667829058785);
    5836           4 :   parameter_vac_D[ALA].push_back(-8.222782061575268);
    5837           4 :   parameter_vac_D[ALA].push_back(-0.2521732728817875);
    5838             : 
    5839           4 :   parameter_vac_D[GLY].push_back(23.532201119209795);
    5840           4 :   parameter_vac_D[GLY].push_back(-0.00628609590047614);
    5841           4 :   parameter_vac_D[GLY].push_back(-17.28421910139733);
    5842           4 :   parameter_vac_D[GLY].push_back(-0.6641226821159686);
    5843           4 :   parameter_vac_D[GLY].push_back(8.536119110048007);
    5844           4 :   parameter_vac_D[GLY].push_back(-2.5438638688361466);
    5845           4 :   parameter_vac_D[GLY].push_back(-0.11165675928832643);
    5846             : 
    5847           4 :   parameter_vac_D[HIS].push_back(145.41948111920982);
    5848           4 :   parameter_vac_D[HIS].push_back(-0.8548328183368781);
    5849           4 :   parameter_vac_D[HIS].push_back(-290.8653238004162);
    5850           4 :   parameter_vac_D[HIS].push_back(-107.85375269366395);
    5851           4 :   parameter_vac_D[HIS].push_back(685.7025818759361);
    5852           4 :   parameter_vac_D[HIS].push_back(-538.2592043545858);
    5853           4 :   parameter_vac_D[HIS].push_back(132.17357375729733);
    5854             : 
    5855             :   // NUCLEIC ACIDS
    5856             : 
    5857           4 :   parameter_mix_D[BB_PO2].push_back(80.12660011920252);
    5858           4 :   parameter_mix_D[BB_PO2].push_back(-0.02788855519820236);
    5859           4 :   parameter_mix_D[BB_PO2].push_back(-60.53219491822279);
    5860           4 :   parameter_mix_D[BB_PO2].push_back(-2.9768829034096806);
    5861           4 :   parameter_mix_D[BB_PO2].push_back(33.30645116638123);
    5862           4 :   parameter_mix_D[BB_PO2].push_back(-11.601573219761375);
    5863           4 :   parameter_mix_D[BB_PO2].push_back(0.12551046492022438);
    5864             : 
    5865           4 :   parameter_mix_D[BB_DNA].push_back(2835.3195201193003);
    5866           4 :   parameter_mix_D[BB_DNA].push_back(-7.954301723608173);
    5867           4 :   parameter_mix_D[BB_DNA].push_back(-4509.325563460958);
    5868           4 :   parameter_mix_D[BB_DNA].push_back(-909.1870692311344);
    5869           4 :   parameter_mix_D[BB_DNA].push_back(6375.156903893768);
    5870           4 :   parameter_mix_D[BB_DNA].push_back(-3956.4787847570715);
    5871           4 :   parameter_mix_D[BB_DNA].push_back(708.9872879613656);
    5872             : 
    5873           4 :   parameter_mix_D[BB_DNA_5].push_back(3136.73358011921);
    5874           4 :   parameter_mix_D[BB_DNA_5].push_back(-10.023435855160427);
    5875           4 :   parameter_mix_D[BB_DNA_5].push_back(-5208.921666368173);
    5876           4 :   parameter_mix_D[BB_DNA_5].push_back(-1160.4403539440214);
    5877           4 :   parameter_mix_D[BB_DNA_5].push_back(7962.598421448727);
    5878           4 :   parameter_mix_D[BB_DNA_5].push_back(-5149.059857691847);
    5879           4 :   parameter_mix_D[BB_DNA_5].push_back(984.5217027570121);
    5880             : 
    5881           4 :   parameter_mix_D[BB_DNA_3].push_back(3136.73358011921);
    5882           4 :   parameter_mix_D[BB_DNA_3].push_back(-9.618834865806274);
    5883           4 :   parameter_mix_D[BB_DNA_3].push_back(-5164.249220443828);
    5884           4 :   parameter_mix_D[BB_DNA_3].push_back(-1103.2721475326382);
    5885           4 :   parameter_mix_D[BB_DNA_3].push_back(7633.46089052312);
    5886           4 :   parameter_mix_D[BB_DNA_3].push_back(-4826.171688395644);
    5887           4 :   parameter_mix_D[BB_DNA_3].push_back(888.1820863683546);
    5888             : 
    5889           4 :   parameter_mix_D[BB_RNA].push_back(3192.5955601188807);
    5890           4 :   parameter_mix_D[BB_RNA].push_back(-11.475781582628308);
    5891           4 :   parameter_mix_D[BB_RNA].push_back(-5486.264576931735);
    5892           4 :   parameter_mix_D[BB_RNA].push_back(-1344.2878288415961);
    5893           4 :   parameter_mix_D[BB_RNA].push_back(9035.26109892441);
    5894           4 :   parameter_mix_D[BB_RNA].push_back(-6068.471909763036);
    5895           4 :   parameter_mix_D[BB_RNA].push_back(1226.3696076463866);
    5896             : 
    5897           4 :   parameter_mix_D[BB_RNA_5].push_back(3512.1630401192215);
    5898           4 :   parameter_mix_D[BB_RNA_5].push_back(-14.191020069433975);
    5899           4 :   parameter_mix_D[BB_RNA_5].push_back(-6293.687102187508);
    5900           4 :   parameter_mix_D[BB_RNA_5].push_back(-1689.3688494490984);
    5901           4 :   parameter_mix_D[BB_RNA_5].push_back(11193.448566821942);
    5902           4 :   parameter_mix_D[BB_RNA_5].push_back(-7806.9064399949375);
    5903           4 :   parameter_mix_D[BB_RNA_5].push_back(1662.4594983069844);
    5904             : 
    5905           4 :   parameter_mix_D[BB_RNA_3].push_back(3512.1630401192215);
    5906           4 :   parameter_mix_D[BB_RNA_3].push_back(-12.978118135595812);
    5907           4 :   parameter_mix_D[BB_RNA_3].push_back(-6149.290195451877);
    5908           4 :   parameter_mix_D[BB_RNA_3].push_back(-1515.8309761505627);
    5909           4 :   parameter_mix_D[BB_RNA_3].push_back(10176.605450440278);
    5910           4 :   parameter_mix_D[BB_RNA_3].push_back(-6813.250569884159);
    5911           4 :   parameter_mix_D[BB_RNA_3].push_back(1366.823518955858);
    5912             : 
    5913           4 :   parameter_mix_D[BASE_A].push_back(2464.736500119229);
    5914           4 :   parameter_mix_D[BASE_A].push_back(-12.127452038444783);
    5915           4 :   parameter_mix_D[BASE_A].push_back(-4710.661256689607);
    5916           4 :   parameter_mix_D[BASE_A].push_back(-1462.6964141954452);
    5917           4 :   parameter_mix_D[BASE_A].push_back(9451.725575888277);
    5918           4 :   parameter_mix_D[BASE_A].push_back(-6883.018479948857);
    5919           4 :   parameter_mix_D[BASE_A].push_back(1540.1526599737797);
    5920             : 
    5921           4 :   parameter_mix_D[BASE_C].push_back(1797.2697601191685);
    5922           4 :   parameter_mix_D[BASE_C].push_back(-5.963855532295215);
    5923           4 :   parameter_mix_D[BASE_C].push_back(-2955.077717756034);
    5924           4 :   parameter_mix_D[BASE_C].push_back(-689.4543508746372);
    5925           4 :   parameter_mix_D[BASE_C].push_back(4665.914740532565);
    5926           4 :   parameter_mix_D[BASE_C].push_back(-3051.4605913706982);
    5927           4 :   parameter_mix_D[BASE_C].push_back(590.2201952719585);
    5928             : 
    5929           4 :   parameter_mix_D[BASE_G].push_back(2804.271480119049);
    5930           4 :   parameter_mix_D[BASE_G].push_back(-16.928072935469974);
    5931           4 :   parameter_mix_D[BASE_G].push_back(-5989.82519987899);
    5932           4 :   parameter_mix_D[BASE_G].push_back(-2275.490326521775);
    5933           4 :   parameter_mix_D[BASE_G].push_back(15007.832401865428);
    5934           4 :   parameter_mix_D[BASE_G].push_back(-12287.520690325606);
    5935           4 :   parameter_mix_D[BASE_G].push_back(3172.98306575258);
    5936             : 
    5937           4 :   parameter_mix_D[BASE_T].push_back(2545.0860001192113);
    5938           4 :   parameter_mix_D[BASE_T].push_back(-10.975141620541738);
    5939           4 :   parameter_mix_D[BASE_T].push_back(-4636.058358764447);
    5940           4 :   parameter_mix_D[BASE_T].push_back(-1340.3746388296138);
    5941           4 :   parameter_mix_D[BASE_T].push_back(8850.604320505428);
    5942           4 :   parameter_mix_D[BASE_T].push_back(-6421.852532013674);
    5943           4 :   parameter_mix_D[BASE_T].push_back(1443.371517335904);
    5944             : 
    5945           4 :   parameter_mix_D[BASE_U].push_back(1608.7389001192062);
    5946           4 :   parameter_mix_D[BASE_U].push_back(-3.9816849036181434);
    5947           4 :   parameter_mix_D[BASE_U].push_back(-2411.056432130769);
    5948           4 :   parameter_mix_D[BASE_U].push_back(-451.8236361945487);
    5949           4 :   parameter_mix_D[BASE_U].push_back(3220.4418252803644);
    5950           4 :   parameter_mix_D[BASE_U].push_back(-1944.2515577994325);
    5951           4 :   parameter_mix_D[BASE_U].push_back(332.9259542628691);
    5952             : 
    5953           4 :   parameter_vac_D[BB_PO2].push_back(2.7889001116093284);
    5954           4 :   parameter_vac_D[BB_PO2].push_back(-0.00011178884266113128);
    5955           4 :   parameter_vac_D[BB_PO2].push_back(-1.1702605818380654);
    5956           4 :   parameter_vac_D[BB_PO2].push_back(-0.011278044036819927);
    5957           4 :   parameter_vac_D[BB_PO2].push_back(0.3214006584089024);
    5958           4 :   parameter_vac_D[BB_PO2].push_back(-0.04097165983591666);
    5959           4 :   parameter_vac_D[BB_PO2].push_back(-0.017525098100539684);
    5960             : 
    5961           4 :   parameter_vac_D[BB_DNA].push_back(94.75075611920529);
    5962           4 :   parameter_vac_D[BB_DNA].push_back(-0.13973533952241124);
    5963           4 :   parameter_vac_D[BB_DNA].push_back(-123.45402430039046);
    5964           4 :   parameter_vac_D[BB_DNA].push_back(-15.19494522082691);
    5965           4 :   parameter_vac_D[BB_DNA].push_back(123.34749914811465);
    5966           4 :   parameter_vac_D[BB_DNA].push_back(-61.038507985345504);
    5967           4 :   parameter_vac_D[BB_DNA].push_back(6.601587478585944);
    5968             : 
    5969           4 :   parameter_vac_D[BB_DNA_5].push_back(108.18080111920679);
    5970           4 :   parameter_vac_D[BB_DNA_5].push_back(-0.2055953690887981);
    5971           4 :   parameter_vac_D[BB_DNA_5].push_back(-150.7924892157235);
    5972           4 :   parameter_vac_D[BB_DNA_5].push_back(-22.700459516383198);
    5973           4 :   parameter_vac_D[BB_DNA_5].push_back(172.2599851655527);
    5974           4 :   parameter_vac_D[BB_DNA_5].push_back(-93.4983124807692);
    5975           4 :   parameter_vac_D[BB_DNA_5].push_back(12.867661230942868);
    5976             : 
    5977           4 :   parameter_vac_D[BB_DNA_3].push_back(108.18080111920537);
    5978           4 :   parameter_vac_D[BB_DNA_3].push_back(-0.18263717534168372);
    5979           4 :   parameter_vac_D[BB_DNA_3].push_back(-148.5918817744255);
    5980           4 :   parameter_vac_D[BB_DNA_3].push_back(-19.90799847398835);
    5981           4 :   parameter_vac_D[BB_DNA_3].push_back(157.55184203379557);
    5982           4 :   parameter_vac_D[BB_DNA_3].push_back(-80.28471270058103);
    5983           4 :   parameter_vac_D[BB_DNA_3].push_back(9.313712500298278);
    5984             : 
    5985           4 :   parameter_vac_D[BB_RNA].push_back(106.37859611922117);
    5986           4 :   parameter_vac_D[BB_RNA].push_back(-0.2380766148121975);
    5987           4 :   parameter_vac_D[BB_RNA].push_back(-153.74131338570024);
    5988           4 :   parameter_vac_D[BB_RNA].push_back(-26.415436217574932);
    5989           4 :   parameter_vac_D[BB_RNA].push_back(191.90585451112776);
    5990           4 :   parameter_vac_D[BB_RNA].push_back(-109.61737794316868);
    5991           4 :   parameter_vac_D[BB_RNA].push_back(16.663804191332204);
    5992             : 
    5993           4 :   parameter_vac_D[BB_RNA_5].push_back(120.58236111920618);
    5994           4 :   parameter_vac_D[BB_RNA_5].push_back(-0.340258533619014);
    5995           4 :   parameter_vac_D[BB_RNA_5].push_back(-186.08333929996334);
    5996           4 :   parameter_vac_D[BB_RNA_5].push_back(-38.493337147644795);
    5997           4 :   parameter_vac_D[BB_RNA_5].push_back(266.2262415641144);
    5998           4 :   parameter_vac_D[BB_RNA_5].push_back(-164.73088478359585);
    5999           4 :   parameter_vac_D[BB_RNA_5].push_back(29.07014157680879);
    6000             : 
    6001           4 :   parameter_vac_D[BB_RNA_3].push_back(120.5823611192099);
    6002           4 :   parameter_vac_D[BB_RNA_3].push_back(-0.274146129206928);
    6003           4 :   parameter_vac_D[BB_RNA_3].push_back(-179.24499182395388);
    6004           4 :   parameter_vac_D[BB_RNA_3].push_back(-30.315729372259426);
    6005           4 :   parameter_vac_D[BB_RNA_3].push_back(222.2645581367648);
    6006           4 :   parameter_vac_D[BB_RNA_3].push_back(-125.13581171514033);
    6007           4 :   parameter_vac_D[BB_RNA_3].push_back(18.350308154920107);
    6008             : 
    6009           4 :   parameter_vac_D[BASE_A].push_back(114.34024911921);
    6010           4 :   parameter_vac_D[BASE_A].push_back(-0.4136665918383359);
    6011           4 :   parameter_vac_D[BASE_A].push_back(-192.33138384655922);
    6012           4 :   parameter_vac_D[BASE_A].push_back(-46.74428306691412);
    6013           4 :   parameter_vac_D[BASE_A].push_back(312.9511030981905);
    6014           4 :   parameter_vac_D[BASE_A].push_back(-199.6349962647333);
    6015           4 :   parameter_vac_D[BASE_A].push_back(36.15938693202153);
    6016             : 
    6017           4 :   parameter_vac_D[BASE_C].push_back(76.17798411921166);
    6018           4 :   parameter_vac_D[BASE_C].push_back(-0.1444475142707445);
    6019           4 :   parameter_vac_D[BASE_C].push_back(-102.66873668949485);
    6020           4 :   parameter_vac_D[BASE_C].push_back(-15.813768367725821);
    6021           4 :   parameter_vac_D[BASE_C].push_back(119.63436338715553);
    6022           4 :   parameter_vac_D[BASE_C].push_back(-64.22251971660583);
    6023           4 :   parameter_vac_D[BASE_C].push_back(8.351952332828862);
    6024             : 
    6025           4 :   parameter_vac_D[BASE_G].push_back(127.08052911921965);
    6026           4 :   parameter_vac_D[BASE_G].push_back(-0.7137457014712297);
    6027           4 :   parameter_vac_D[BASE_G].push_back(-239.67686838772786);
    6028           4 :   parameter_vac_D[BASE_G].push_back(-88.53661981200943);
    6029           4 :   parameter_vac_D[BASE_G].push_back(556.7254485453866);
    6030           4 :   parameter_vac_D[BASE_G].push_back(-432.0234649577737);
    6031           4 :   parameter_vac_D[BASE_G].push_back(104.407200463848);
    6032             : 
    6033           4 :   parameter_vac_D[BASE_T].push_back(94.09000011920868);
    6034           4 :   parameter_vac_D[BASE_T].push_back(-0.27147149980458524);
    6035           4 :   parameter_vac_D[BASE_T].push_back(-143.65649702254174);
    6036           4 :   parameter_vac_D[BASE_T].push_back(-30.861235738371892);
    6037           4 :   parameter_vac_D[BASE_T].push_back(212.3643014774958);
    6038           4 :   parameter_vac_D[BASE_T].push_back(-133.06675501066275);
    6039           4 :   parameter_vac_D[BASE_T].push_back(23.951588200687073);
    6040             : 
    6041           4 :   parameter_vac_D[BASE_U].push_back(59.30540111665979);
    6042           4 :   parameter_vac_D[BASE_U].push_back(-0.06146929846591808);
    6043           4 :   parameter_vac_D[BASE_U].push_back(-67.43680950211682);
    6044           4 :   parameter_vac_D[BASE_U].push_back(-6.625289749170134);
    6045           4 :   parameter_vac_D[BASE_U].push_back(58.37012229348065);
    6046           4 :   parameter_vac_D[BASE_U].push_back(-26.23044613101723);
    6047           4 :   parameter_vac_D[BASE_U].push_back(2.061238351422343);
    6048             : 
    6049       14298 :   for(unsigned i=0; i<atoms.size(); ++i) {
    6050       14294 :     std::string Aname = pdb.getAtomName(atoms[i]);
    6051       14294 :     std::string Rname = pdb.getResidueName(atoms[i]);
    6052       14294 :     Rname.erase(std::remove_if(Rname.begin(), Rname.end(), ::isspace),Rname.end());
    6053       14294 :     if(Rname=="ALA") {
    6054         732 :       atoi[residue_atom[i]]=ALA;
    6055       13562 :     } else if(Rname=="ARG") {
    6056         864 :       atoi[residue_atom[i]]=ARG;
    6057       12698 :     } else if(Rname=="ASN") {
    6058         720 :       atoi[residue_atom[i]]=ASN;
    6059       11978 :     } else if(Rname=="ASP") {
    6060         624 :       atoi[residue_atom[i]]=ASP;
    6061       11354 :     } else if(Rname=="CYS") {
    6062          48 :       atoi[residue_atom[i]]=CYS;
    6063       11306 :     } else if(Rname=="GLN") {
    6064        1064 :       atoi[residue_atom[i]]=GLN;
    6065       10242 :     } else if(Rname=="GLU") {
    6066         476 :       atoi[residue_atom[i]]=GLU;
    6067        9766 :     } else if(Rname=="GLY") {
    6068         648 :       atoi[residue_atom[i]]=GLY;
    6069        9118 :     } else if(Rname=="HIS") {
    6070           0 :       atoi[residue_atom[i]]=HIS;
    6071        9118 :     } else if(Rname=="HID") {
    6072           0 :       atoi[residue_atom[i]]=HIS;
    6073        9118 :     } else if(Rname=="HIE") {
    6074         144 :       atoi[residue_atom[i]]=HIS;
    6075        8974 :     } else if(Rname=="HIP") {
    6076           0 :       atoi[residue_atom[i]]=HIP;
    6077             :       // CHARMM NAMING FOR PROTONATION STATES OF HISTIDINE
    6078        8974 :     } else if(Rname=="HSD") {
    6079           0 :       atoi[residue_atom[i]]=HIS;
    6080        8974 :     } else if(Rname=="HSE") {
    6081           0 :       atoi[residue_atom[i]]=HIS;
    6082        8974 :     } else if(Rname=="HSP") {
    6083           0 :       atoi[residue_atom[i]]=HIP;
    6084        8974 :     } else if(Rname=="ILE") {
    6085         864 :       atoi[residue_atom[i]]=ILE;
    6086        8110 :     } else if(Rname=="LEU") {
    6087        1520 :       atoi[residue_atom[i]]=LEU;
    6088        6590 :     } else if(Rname=="LYS") {
    6089        1040 :       atoi[residue_atom[i]]=LYS;
    6090        5550 :     } else if(Rname=="MET") {
    6091         608 :       atoi[residue_atom[i]]=MET;
    6092        4942 :     } else if(Rname=="PHE") {
    6093        1008 :       atoi[residue_atom[i]]=PHE;
    6094        3934 :     } else if(Rname=="PRO") {
    6095         748 :       atoi[residue_atom[i]]=PRO;
    6096        3186 :     } else if(Rname=="SER") {
    6097         528 :       atoi[residue_atom[i]]=SER;
    6098        2658 :     } else if(Rname=="THR") {
    6099         504 :       atoi[residue_atom[i]]=THR;
    6100        2154 :     } else if(Rname=="TRP") {
    6101           0 :       atoi[residue_atom[i]]=TRP;
    6102        2154 :     } else if(Rname=="TYR") {
    6103         528 :       atoi[residue_atom[i]]=TYR;
    6104        1626 :     } else if(Rname=="VAL") {
    6105        1088 :       atoi[residue_atom[i]]=VAL;
    6106             :     }
    6107             :     // NUCLEIC ACIDS
    6108             :     // nucleobases are not automatically populated as an additional check on the health of the PDB.
    6109             :     // RNA - G
    6110         538 :     else if(Rname=="G") {
    6111           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6112           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6113           0 :         atoi [residue_atom[i]]=BB_PO2;
    6114           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6115           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6116           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6117           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6118           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6119           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6120           0 :         atoi[residue_atom[i]]=BB_RNA;
    6121           0 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6122           0 :                  Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6123           0 :                  Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6124           0 :                  Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6125           0 :         atoi[residue_atom[i]]=BASE_G;
    6126             :       } else {
    6127           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6128             :       }
    6129             :       // RNA - G3
    6130         538 :     } else if(Rname=="G3") {
    6131           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6132           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6133           0 :         atoi [residue_atom[i]]=BB_PO2;
    6134           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    6135           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    6136           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    6137           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    6138           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    6139           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    6140           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    6141           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6142           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6143           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6144           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6145           0 :         atoi[residue_atom[i]]=BASE_G;
    6146             :       } else {
    6147           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6148             :       }
    6149             :       // RNA - G5
    6150         538 :     } else if(Rname=="G5") {
    6151           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6152           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6153           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6154           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    6155           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    6156           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    6157           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    6158           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6159           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6160           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6161           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6162           0 :         atoi[residue_atom[i]]=BASE_G;
    6163             :       } else {
    6164           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6165             :       }
    6166             :       // RNA - U
    6167         538 :     } else if(Rname=="U") {
    6168        1554 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6169        1176 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6170          42 :         atoi [residue_atom[i]]=BB_PO2;
    6171        1372 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6172        1148 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6173         924 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6174         714 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6175         644 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6176         840 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6177         224 :         atoi[residue_atom[i]]=BB_RNA;
    6178         476 :       } else if( Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    6179         252 :                  Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    6180         196 :                  Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    6181         154 :         atoi[residue_atom[i]]=BASE_U;
    6182             :       } else {
    6183           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6184             :       }
    6185             :       // RNA - U3
    6186         118 :     } else if(Rname=="U3") {
    6187         230 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6188         174 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6189           6 :         atoi [residue_atom[i]]=BB_PO2;
    6190         204 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    6191         172 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    6192         140 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    6193         110 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    6194          94 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    6195          78 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    6196          34 :         atoi[residue_atom[i]]=BB_RNA_3;
    6197          68 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    6198          36 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    6199          28 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    6200          22 :         atoi[residue_atom[i]]=BASE_U;
    6201             :       } else {
    6202           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6203             :       }
    6204             :       // RNA - U5
    6205          56 :     } else if(Rname=="U5") {
    6206         204 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6207         172 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6208         140 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6209         108 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    6210          88 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    6211          78 :           Aname=="H2'1" || Aname=="H5T" ) {
    6212          34 :         atoi[residue_atom[i]]=BB_RNA_5;
    6213          68 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="O2" || Aname=="N3" ||
    6214          36 :                 Aname=="C4" || Aname=="O4"  || Aname=="C5" || Aname=="C6" ||
    6215          28 :                 Aname=="H3" || Aname=="H5"  || Aname=="H6") {
    6216          22 :         atoi[residue_atom[i]]=BASE_U;
    6217             :       } else {
    6218           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6219             :       }
    6220             :       // RNA - A
    6221           0 :     } else if(Rname=="A") {
    6222           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6223           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6224           0 :         atoi [residue_atom[i]]=BB_PO2;
    6225           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6226           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6227           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6228           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6229           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6230           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6231           0 :         atoi[residue_atom[i]]=BB_RNA;
    6232           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6233           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6234           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6235           0 :                 Aname=="H61" || Aname=="H62" ) {
    6236           0 :         atoi[residue_atom[i]]=BASE_A;
    6237             :       } else {
    6238           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6239             :       }
    6240             :       // RNA - A3
    6241           0 :     } else if(Rname=="A3") {
    6242           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6243           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6244           0 :         atoi [residue_atom[i]]=BB_PO2;
    6245           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    6246           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    6247           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    6248           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    6249           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    6250           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    6251           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    6252           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6253           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6254           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6255           0 :                 Aname=="H61" || Aname=="H62" ) {
    6256           0 :         atoi[residue_atom[i]]=BASE_A;
    6257             :       } else {
    6258           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6259             :       }
    6260             :       // RNA - A5
    6261           0 :     } else if(Rname=="A5") {
    6262           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6263           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6264           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6265           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    6266           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    6267           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    6268           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    6269           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6270           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6271           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6272           0 :                 Aname=="H61" || Aname=="H62" ) {
    6273           0 :         atoi[residue_atom[i]]=BASE_A;
    6274             :       } else {
    6275           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6276             :       }
    6277             :       // RNA - C
    6278           0 :     } else if(Rname=="C") {
    6279           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6280           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6281           0 :         atoi [residue_atom[i]]=BB_PO2;
    6282           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6283           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6284           0 :                 Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6285           0 :                 Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="H3T"  ||
    6286           0 :                 Aname=="HO5'" || Aname=="HO3'" || Aname=="HO2'" || Aname=="H5'1" ||
    6287           0 :                 Aname=="H5'2" || Aname=="HO'2" || Aname=="H2'1" || Aname=="H5T" ) {
    6288           0 :         atoi[residue_atom[i]]=BB_RNA;
    6289           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6290           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6291           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6292           0 :         atoi[residue_atom[i]]=BASE_C;
    6293             :       } else {
    6294           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6295             :       }
    6296             :       // RNA - C3
    6297           0 :     } else if(Rname=="C3") {
    6298           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6299           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6300           0 :         atoi [residue_atom[i]]=BB_PO2;
    6301           0 :       } else if(Aname=="O5'"  || Aname=="C5'" || Aname=="O4'"  || Aname=="C4'"  ||
    6302           0 :                 Aname=="O3'"  || Aname=="C3'" || Aname=="O2'"  || Aname=="C2'"  ||
    6303           0 :                 Aname=="C1'"  || Aname=="H5'" || Aname=="H5''" || Aname=="H4'"  ||
    6304           0 :                 Aname=="H3'"  || Aname=="H2'" || Aname=="H1'"  || Aname=="H3T"  ||
    6305           0 :                 Aname=="H2'1" || Aname=="HO3'"|| Aname=="HO2'" || Aname=="H5'1" ||
    6306           0 :                 Aname=="H5'2" || Aname=="HO'2" ) {
    6307           0 :         atoi[residue_atom[i]]=BB_RNA_3;
    6308           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6309           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6310           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6311           0 :         atoi[residue_atom[i]]=BASE_C;
    6312             :       } else {
    6313           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6314             :       }
    6315             :       // RNA - C5
    6316           0 :     } else if(Rname=="C5") {
    6317           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6318           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="O2'"  || Aname=="C2'"  ||
    6319           0 :           Aname=="C1'"  || Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  ||
    6320           0 :           Aname=="H3'"  || Aname=="H2'"  || Aname=="H1'"  || Aname=="HO5'" ||
    6321           0 :           Aname=="HO2'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="HO'2" ||
    6322           0 :           Aname=="H2'1" || Aname=="H5T" ) {
    6323           0 :         atoi[residue_atom[i]]=BB_RNA_5;
    6324           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6325           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6326           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6327           0 :         atoi[residue_atom[i]]=BASE_C;
    6328             :       } else {
    6329           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6330             :       }
    6331             :       // DNA - G
    6332           0 :     } else if(Rname=="DG") {
    6333           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6334           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6335           0 :         atoi [residue_atom[i]]=BB_PO2;
    6336           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6337           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6338           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6339           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6340           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6341           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6342           0 :         atoi[residue_atom[i]]=BB_DNA;
    6343           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6344           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6345           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6346           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6347           0 :         atoi[residue_atom[i]]=BASE_G;
    6348             :       } else {
    6349           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6350             :       }
    6351             :       // DNA - G3
    6352           0 :     } else if(Rname=="DG3") {
    6353           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6354           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6355           0 :         atoi [residue_atom[i]]=BB_PO2;
    6356           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6357           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6358           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6359           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    6360           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6361             :                 Aname=="H3T" ) {
    6362           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    6363           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6364           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6365           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6366           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6367           0 :         atoi[residue_atom[i]]=BASE_G;
    6368             :       } else {
    6369           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6370             :       }
    6371             :       // DNA - G5
    6372           0 :     } else if(Rname=="DG5") {
    6373           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6374           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    6375           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6376           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6377           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6378             :           Aname=="H5T" ) {
    6379           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    6380           0 :       } else if(Aname=="N1" || Aname=="C2"  || Aname=="N2" || Aname=="N3" ||
    6381           0 :                 Aname=="C4" || Aname=="C5"  || Aname=="C6" || Aname=="O6" ||
    6382           0 :                 Aname=="N7" || Aname=="C8"  || Aname=="N9" || Aname=="H1" ||
    6383           0 :                 Aname=="H8" || Aname=="H21" || Aname=="H22" ) {
    6384           0 :         atoi[residue_atom[i]]=BASE_G;
    6385             :       } else {
    6386           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6387             :       }
    6388             :       // DNA - T
    6389           0 :     } else if(Rname=="DT") {
    6390           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6391           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6392           0 :         atoi [residue_atom[i]]=BB_PO2;
    6393           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6394           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6395           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6396           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6397           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6398           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6399           0 :         atoi[residue_atom[i]]=BB_DNA;
    6400           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    6401           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    6402           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    6403           0 :                 Aname=="H72" || Aname=="H73" ) {
    6404           0 :         atoi[residue_atom[i]]=BASE_T;
    6405             :       } else {
    6406           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6407             :       }
    6408             :       // DNA - T3
    6409           0 :     } else if(Rname=="DT3") {
    6410           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6411           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6412           0 :         atoi [residue_atom[i]]=BB_PO2;
    6413           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6414           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6415           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6416           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    6417           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6418             :                 Aname=="H3T" ) {
    6419           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    6420           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    6421           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    6422           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    6423           0 :                 Aname=="H72" || Aname=="H73" ) {
    6424           0 :         atoi[residue_atom[i]]=BASE_T;
    6425             :       } else {
    6426           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6427             :       }
    6428             :       // DNA - T5
    6429           0 :     } else if(Rname=="DT5") {
    6430           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6431           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    6432           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6433           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6434           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6435             :           Aname=="H5T" ) {
    6436           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    6437           0 :       } else if(Aname=="N1"  || Aname=="C2"  || Aname=="O2"  || Aname=="N3"  ||
    6438           0 :                 Aname=="C4"  || Aname=="O4"  || Aname=="C5"  || Aname=="C6"  ||
    6439           0 :                 Aname=="C7"  || Aname=="H3"  || Aname=="H6"  || Aname=="H71" ||
    6440           0 :                 Aname=="H72" || Aname=="H73" ) {
    6441           0 :         atoi[residue_atom[i]]=BASE_T;
    6442             :       } else {
    6443           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6444             :       }
    6445             :       // DNA - A
    6446           0 :     } else if(Rname=="DA") {
    6447           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6448           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6449           0 :         atoi [residue_atom[i]]=BB_PO2;
    6450           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6451           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6452           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6453           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6454           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6455           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6456           0 :         atoi[residue_atom[i]]=BB_DNA;
    6457           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6458           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6459           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6460           0 :                 Aname=="H61" || Aname=="H62" ) {
    6461           0 :         atoi[residue_atom[i]]=BASE_A;
    6462             :       } else {
    6463           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6464             :       }
    6465             :       // DNA - A3
    6466           0 :     } else if(Rname=="DA3") {
    6467           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6468           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6469           0 :         atoi [residue_atom[i]]=BB_PO2;
    6470           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6471           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6472           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6473           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    6474           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6475             :                 Aname=="H3T" ) {
    6476           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    6477           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6478           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6479           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6480           0 :                 Aname=="H61" || Aname=="H62" ) {
    6481           0 :         atoi[residue_atom[i]]=BASE_A;
    6482             :       } else {
    6483           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6484             :       }
    6485             :       // DNA - A5
    6486           0 :     } else if(Rname=="DA5") {
    6487           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6488           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    6489           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6490           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6491           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6492             :           Aname=="H5T" ) {
    6493           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    6494           0 :       } else if(Aname=="N1"  || Aname=="C2" || Aname=="N3" || Aname=="C4" ||
    6495           0 :                 Aname=="C5"  || Aname=="C6" || Aname=="N6" || Aname=="N7" ||
    6496           0 :                 Aname=="C8"  || Aname=="N9" || Aname=="H2" || Aname=="H8" ||
    6497           0 :                 Aname=="H61" || Aname=="H62" ) {
    6498           0 :         atoi[residue_atom[i]]=BASE_A;
    6499             :       } else {
    6500           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6501             :       }
    6502             :       // DNA - C
    6503           0 :     } else if(Rname=="DC") {
    6504           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6505           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6506           0 :         atoi [residue_atom[i]]=BB_PO2;
    6507           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6508           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6509           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6510           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6511           0 :                 Aname=="HO3'" || Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" ||
    6512           0 :                 Aname=="H2'2" || Aname=="H5T"  || Aname=="H3T" ) {
    6513           0 :         atoi[residue_atom[i]]=BB_DNA;
    6514           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6515           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6516           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6517           0 :         atoi[residue_atom[i]]=BASE_C;
    6518             :       } else {
    6519           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6520             :       }
    6521             :       // DNA - C3
    6522           0 :     } else if(Rname=="DC3") {
    6523           0 :       if( Aname=="P"   || Aname=="OP1" || Aname=="OP2" || Aname=="OP3" ||
    6524           0 :           Aname=="O1P" || Aname=="O2P" || Aname=="O3P" ) {
    6525           0 :         atoi [residue_atom[i]]=BB_PO2;
    6526           0 :       } else if(Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6527           0 :                 Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  || Aname=="C1'"  ||
    6528           0 :                 Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6529           0 :                 Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO3'" ||
    6530           0 :                 Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6531             :                 Aname=="H3T" ) {
    6532           0 :         atoi[residue_atom[i]]=BB_DNA_3;
    6533           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6534           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6535           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6536           0 :         atoi[residue_atom[i]]=BASE_C;
    6537             :       } else {
    6538           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6539             :       }
    6540             :       // DNA - C5
    6541           0 :     } else if(Rname=="DC5") {
    6542           0 :       if( Aname=="O5'"  || Aname=="C5'"  || Aname=="O4'"  || Aname=="C4'"  ||
    6543           0 :           Aname=="O3'"  || Aname=="C3'"  || Aname=="C2'"  ||  Aname=="C1'" ||
    6544           0 :           Aname=="H5'"  || Aname=="H5''" || Aname=="H4'"  || Aname=="H3'"  ||
    6545           0 :           Aname=="H2'"  || Aname=="H2''" || Aname=="H1'"  || Aname=="HO5'" ||
    6546           0 :           Aname=="H5'1" || Aname=="H5'2" || Aname=="H2'1" || Aname=="H2'2" ||
    6547             :           Aname=="H5T" ) {
    6548           0 :         atoi[residue_atom[i]]=BB_DNA_5;
    6549           0 :       } else if(Aname=="N1" || Aname=="C2" || Aname=="O2"  || Aname=="N3" ||
    6550           0 :                 Aname=="C4" || Aname=="N4" || Aname=="C5"  || Aname=="C6" ||
    6551           0 :                 Aname=="H5" || Aname=="H6" || Aname=="H41" || Aname=="H42" ) {
    6552           0 :         atoi[residue_atom[i]]=BASE_C;
    6553             :       } else {
    6554           0 :         error("Atom name "+Aname+" is not defined for residue "+Rname+". Check the PDB.");
    6555             :       }
    6556             :     } else {
    6557           0 :       error("Residue not known: "+Rname);
    6558             :     }
    6559             :   }
    6560           4 : }
    6561             : 
    6562           4 : double SAXS::calculateAFF(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double rho) {
    6563             :   std::map<std::string, unsigned> AA_map;
    6564           4 :   AA_map["H"] = H;
    6565           4 :   AA_map["C"] = C;
    6566           4 :   AA_map["N"] = N;
    6567           4 :   AA_map["O"] = O;
    6568           4 :   AA_map["P"] = P;
    6569           4 :   AA_map["S"] = S;
    6570             : 
    6571             :   std::vector<std::vector<double> > param_a;
    6572             :   std::vector<std::vector<double> > param_b;
    6573             :   std::vector<double> param_c;
    6574             :   std::vector<double> param_v;
    6575             : 
    6576           4 :   param_a.resize(NTT, std::vector<double>(5));
    6577           4 :   param_b.resize(NTT, std::vector<double>(5));
    6578           4 :   param_c.resize(NTT);
    6579           4 :   param_v.resize(NTT);
    6580             : 
    6581           4 :   param_a[H][0] = 0.493002;
    6582           4 :   param_b[H][0] = 10.5109;
    6583           4 :   param_c[H] = 0.003038;
    6584           4 :   param_a[H][1] = 0.322912;
    6585           4 :   param_b[H][1] = 26.1257;
    6586           4 :   param_v[H] = 5.15;
    6587           4 :   param_a[H][2] = 0.140191;
    6588           4 :   param_b[H][2] = 3.14236;
    6589           4 :   param_a[H][3] = 0.040810;
    6590           4 :   param_b[H][3] = 57.7997;
    6591           4 :   param_a[H][4] = 0.0;
    6592           4 :   param_b[H][4] = 1.0;
    6593             : 
    6594           4 :   param_a[C][0] = 2.31000;
    6595           4 :   param_b[C][0] = 20.8439;
    6596           4 :   param_c[C] = 0.215600;
    6597           4 :   param_a[C][1] = 1.02000;
    6598           4 :   param_b[C][1] = 10.2075;
    6599           4 :   param_v[C] = 16.44;
    6600           4 :   param_a[C][2] = 1.58860;
    6601           4 :   param_b[C][2] = 0.56870;
    6602           4 :   param_a[C][3] = 0.86500;
    6603           4 :   param_b[C][3] = 51.6512;
    6604           4 :   param_a[C][4] = 0.0;
    6605           4 :   param_b[C][4] = 1.0;
    6606             : 
    6607           4 :   param_a[N][0] = 12.2126;
    6608           4 :   param_b[N][0] = 0.00570;
    6609           4 :   param_c[N] = -11.529;
    6610           4 :   param_a[N][1] = 3.13220;
    6611           4 :   param_b[N][1] = 9.89330;
    6612           4 :   param_v[N] = 2.49;
    6613           4 :   param_a[N][2] = 2.01250;
    6614           4 :   param_b[N][2] = 28.9975;
    6615           4 :   param_a[N][3] = 1.16630;
    6616           4 :   param_b[N][3] = 0.58260;
    6617           4 :   param_a[N][4] = 0.0;
    6618           4 :   param_b[N][4] = 1.0;
    6619             : 
    6620           4 :   param_a[O][0] = 3.04850;
    6621           4 :   param_b[O][0] = 13.2771;
    6622           4 :   param_c[O] = 0.250800 ;
    6623           4 :   param_a[O][1] = 2.28680;
    6624           4 :   param_b[O][1] = 5.70110;
    6625           4 :   param_v[O] = 9.13;
    6626           4 :   param_a[O][2] = 1.54630;
    6627           4 :   param_b[O][2] = 0.32390;
    6628           4 :   param_a[O][3] = 0.86700;
    6629           4 :   param_b[O][3] = 32.9089;
    6630           4 :   param_a[O][4] = 0.0;
    6631           4 :   param_b[O][4] = 1.0;
    6632             : 
    6633           4 :   param_a[P][0] = 6.43450;
    6634           4 :   param_b[P][0] = 1.90670;
    6635           4 :   param_c[P] = 1.11490;
    6636           4 :   param_a[P][1] = 4.17910;
    6637           4 :   param_b[P][1] = 27.1570;
    6638           4 :   param_v[P] = 5.73;
    6639           4 :   param_a[P][2] = 1.78000;
    6640           4 :   param_b[P][2] = 0.52600;
    6641           4 :   param_a[P][3] = 1.49080;
    6642           4 :   param_b[P][3] = 68.1645;
    6643           4 :   param_a[P][4] = 0.0;
    6644           4 :   param_b[P][4] = 1.0;
    6645             : 
    6646           4 :   param_a[S][0] = 6.90530;
    6647           4 :   param_b[S][0] = 1.46790;
    6648           4 :   param_c[S] = 0.866900;
    6649           4 :   param_a[S][1] = 5.20340;
    6650           4 :   param_b[S][1] = 22.2151;
    6651           4 :   param_v[S] = 19.86;
    6652           4 :   param_a[S][2] = 1.43790;
    6653           4 :   param_b[S][2] = 0.25360;
    6654           4 :   param_a[S][3] = 1.58630;
    6655           4 :   param_b[S][3] = 56.1720;
    6656           4 :   param_a[S][4] = 0.0;
    6657           4 :   param_b[S][4] = 1.0;
    6658             : 
    6659           4 :   auto* moldat=plumed.getActionSet().selectLatest<GenericMolInfo*>(this);
    6660             : 
    6661             :   double Iq0=0.;
    6662           4 :   if( moldat ) {
    6663             :     // cycle over the atom types
    6664          28 :     for(unsigned i=0; i<NTT; ++i) {
    6665          24 :       const double volr = std::pow(param_v[i], (2.0/3.0)) /(4. * M_PI);
    6666             :       // cycle over q
    6667         240 :       for(unsigned k=0; k<q_list.size(); ++k) {
    6668         216 :         const double q = q_list[k];
    6669         216 :         const double s = q / (4. * M_PI);
    6670         216 :         FF_tmp[k][i] = param_c[i];
    6671             :         // SUM [a_i * EXP( - b_i * (q/4pi)^2 )] Waasmaier and Kirfel (1995)
    6672        1080 :         for(unsigned j=0; j<4; ++j) {
    6673         864 :           FF_tmp[k][i] += param_a[i][j]*std::exp(-param_b[i][j]*s*s);
    6674             :         }
    6675             :         // subtract solvation: rho * v_i * EXP( (- v_i^(2/3) / (4pi)) * q^2  ) // since  D in Fraser 1978 is 2*s
    6676         216 :         FF_tmp[k][i] -= rho*param_v[i]*std::exp(-volr*q*q);
    6677             :       }
    6678             :     }
    6679             :     // cycle over the atoms to assign the atom type and calculate I0
    6680       14298 :     for(unsigned i=0; i<atoms.size(); ++i) {
    6681             :       // get atom name
    6682       14294 :       std::string name = moldat->getAtomName(atoms[i]);
    6683             :       char type;
    6684             :       // get atom type
    6685       14294 :       char first = name.at(0);
    6686             :       // GOLDEN RULE: type is first letter, if not a number
    6687       14294 :       if (!isdigit(first)) {
    6688             :         type = first;
    6689             :         // otherwise is the second
    6690             :       } else {
    6691           0 :         type = name.at(1);
    6692             :       }
    6693       14294 :       std::string type_s = std::string(1,type);
    6694       14294 :       if(AA_map.find(type_s) != AA_map.end()) {
    6695       14294 :         const unsigned index=AA_map[type_s];
    6696       14294 :         atoi[i] = AA_map[type_s];
    6697       71470 :         for(unsigned j=0; j<4; ++j) {
    6698       57176 :           Iq0 += param_a[index][j];
    6699             :         }
    6700       14294 :         Iq0 = Iq0 -rho*param_v[index] + param_c[index];
    6701             :       } else {
    6702           0 :         error("Wrong atom type "+type_s+" from atom name "+name+"\n");
    6703             :       }
    6704             :     }
    6705             :   } else {
    6706           0 :     error("MOLINFO DATA not found\n");
    6707             :   }
    6708             : 
    6709           4 :   return Iq0;
    6710           4 : }
    6711             : 
    6712           2 : double SAXS::calculateAFFsans(const std::vector<AtomNumber> &atoms, std::vector<std::vector<long double> > &FF_tmp, const double deuter_conc) {
    6713             :   std::map<std::string, unsigned> AA_map;
    6714           2 :   AA_map["H"] = H;
    6715           2 :   AA_map["C"] = C;
    6716           2 :   AA_map["N"] = N;
    6717           2 :   AA_map["O"] = O;
    6718           2 :   AA_map["P"] = P;
    6719           2 :   AA_map["S"] = S;
    6720             : 
    6721             :   std::vector<double> param_b;
    6722             :   std::vector<double> param_v;
    6723             : 
    6724           2 :   param_b.resize(NTT);
    6725           2 :   param_v.resize(NTT);
    6726             : 
    6727           2 :   param_b[H] = -0.374;
    6728           2 :   param_v[H] = 5.15;
    6729             :   // param_b[D] = 0.667;
    6730           2 :   param_b[C] =  0.665;
    6731           2 :   param_v[C] = 16.44;
    6732           2 :   param_b[N] =  0.94;
    6733           2 :   param_v[N] = 2.49;
    6734           2 :   param_b[O] =  0.580;
    6735           2 :   param_v[O] = 9.13;
    6736           2 :   param_b[P] =  0.51;
    6737           2 :   param_v[P] = 5.73;
    6738           2 :   param_b[S] =  0.28;
    6739           2 :   param_v[S] = 19.86;
    6740             : 
    6741           2 :   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)
    6742             : 
    6743           2 :   auto* moldat=plumed.getActionSet().selectLatest<GenericMolInfo*>(this);
    6744             : 
    6745             :   double Iq0=0.;
    6746           2 :   if( moldat ) {
    6747             :     // cycle over the atom types
    6748          14 :     for(unsigned i=0; i<NTT; ++i) {
    6749          12 :       double volr = std::pow(param_v[i], (2.0/3.0)) /(4. * M_PI);
    6750             :       // cycle over q
    6751         120 :       for(unsigned k=0; k<q_list.size(); ++k) {
    6752         108 :         const double q = q_list[k];
    6753         108 :         FF_tmp[k][i] = param_b[i];
    6754             :         // subtract solvation: rho * v_i * EXP( (- v_i^(2/3) / (4pi)) * q^2  ) // since  D in Fraser 1978 is 2*s
    6755         108 :         FF_tmp[k][i] -= solv_sc_length*rho*param_v[i]*std::exp(-volr*q*q);
    6756             :       }
    6757             :     }
    6758             :     // cycle over the atoms to assign the atom type and calculate I0
    6759        6880 :     for(unsigned i=0; i<atoms.size(); ++i) {
    6760             :       // get atom name
    6761        6878 :       std::string name = moldat->getAtomName(atoms[i]);
    6762             :       char type;
    6763             :       // get atom type
    6764        6878 :       char first = name.at(0);
    6765             :       // GOLDEN RULE: type is first letter, if not a number
    6766        6878 :       if (!isdigit(first)) {
    6767             :         type = first;
    6768             :         // otherwise is the second
    6769             :       } else {
    6770           0 :         type = name.at(1);
    6771             :       }
    6772        6878 :       std::string type_s = std::string(1,type);
    6773        6878 :       if(AA_map.find(type_s) != AA_map.end()) {
    6774        6878 :         const unsigned index=AA_map[type_s];
    6775        6878 :         atoi[i] = AA_map[type_s];
    6776        6878 :         Iq0 += param_b[index]-solv_sc_length*rho*param_v[index];
    6777             :       } else {
    6778           0 :         error("Wrong atom type "+type_s+" from atom name "+name+"\n");
    6779             :       }
    6780             :     }
    6781             :   } else {
    6782           0 :     error("MOLINFO DATA not found\n");
    6783             :   }
    6784             : 
    6785           2 :   return Iq0;
    6786             : }
    6787             : 
    6788          10 : std::map<std::string, std::vector<double> > SAXS::setupLCPOparam() {
    6789             :   std::map<std::string, std::vector<double> > lcpomap;
    6790             : 
    6791             :   // We arbitrarily set OC1/OT1 as the charged oxygen.
    6792             : 
    6793          10 :   lcpomap["ALA_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6794          10 :   lcpomap["ALA_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6795          10 :   lcpomap["ALA_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6796          10 :   lcpomap["ALA_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6797          10 :   lcpomap["ALA_CB"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    6798          10 :   lcpomap["ALA_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6799          10 :   lcpomap["ALA_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6800          10 :   lcpomap["ALA_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6801          10 :   lcpomap["ALA_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6802          10 :   lcpomap["ALA_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6803             : 
    6804          10 :   lcpomap["ASP_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6805          10 :   lcpomap["ASP_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6806          10 :   lcpomap["ASP_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6807          10 :   lcpomap["ASP_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6808          10 :   lcpomap["ASP_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6809          10 :   lcpomap["ASP_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6810          10 :   lcpomap["ASP_OD1"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    6811          10 :   lcpomap["ASP_OD2"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    6812          10 :   lcpomap["ASP_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6813          10 :   lcpomap["ASP_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6814          10 :   lcpomap["ASP_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6815          10 :   lcpomap["ASP_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6816          10 :   lcpomap["ASP_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6817             : 
    6818          10 :   lcpomap["ASN_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6819          10 :   lcpomap["ASN_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6820          10 :   lcpomap["ASN_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6821          10 :   lcpomap["ASN_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6822          10 :   lcpomap["ASN_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6823          10 :   lcpomap["ASN_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6824          10 :   lcpomap["ASN_OD1"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6825          10 :   lcpomap["ASN_ND2"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    6826          10 :   lcpomap["ASN_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6827          10 :   lcpomap["ASN_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6828          10 :   lcpomap["ASN_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6829          10 :   lcpomap["ASN_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6830          10 :   lcpomap["ASN_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6831             : 
    6832          10 :   lcpomap["ARG_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6833          10 :   lcpomap["ARG_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6834          10 :   lcpomap["ARG_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6835          10 :   lcpomap["ARG_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6836          10 :   lcpomap["ARG_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6837          10 :   lcpomap["ARG_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6838          10 :   lcpomap["ARG_CD"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6839          10 :   lcpomap["ARG_NE"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6840          10 :   lcpomap["ARG_NH1"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    6841          10 :   lcpomap["ARG_NH2"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    6842          10 :   lcpomap["ARG_CZ"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6843          10 :   lcpomap["ARG_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6844          10 :   lcpomap["ARG_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6845          10 :   lcpomap["ARG_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6846          10 :   lcpomap["ARG_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6847          10 :   lcpomap["ARG_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6848             : 
    6849          10 :   lcpomap["CYS_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6850          10 :   lcpomap["CYS_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6851          10 :   lcpomap["CYS_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6852          10 :   lcpomap["CYS_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6853          10 :   lcpomap["CYS_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6854          10 :   lcpomap["CYS_SG"] = { 1.9,  0.54581,  -0.19477,  -0.0012873,  0.00029247};
    6855          10 :   lcpomap["CYS_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6856          10 :   lcpomap["CYS_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6857          10 :   lcpomap["CYS_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6858          10 :   lcpomap["CYS_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6859          10 :   lcpomap["CYS_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6860             : 
    6861          10 :   lcpomap["GLU_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6862          10 :   lcpomap["GLU_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6863          10 :   lcpomap["GLU_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6864          10 :   lcpomap["GLU_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6865          10 :   lcpomap["GLU_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6866          10 :   lcpomap["GLU_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6867          10 :   lcpomap["GLU_CD"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6868          10 :   lcpomap["GLU_OE1"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    6869          10 :   lcpomap["GLU_OE2"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    6870          10 :   lcpomap["GLU_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6871          10 :   lcpomap["GLU_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6872          10 :   lcpomap["GLU_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6873          10 :   lcpomap["GLU_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6874          10 :   lcpomap["GLU_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6875             : 
    6876          10 :   lcpomap["GLN_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6877          10 :   lcpomap["GLN_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6878          10 :   lcpomap["GLN_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6879          10 :   lcpomap["GLN_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6880          10 :   lcpomap["GLN_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6881          10 :   lcpomap["GLN_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6882          10 :   lcpomap["GLN_CD"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6883          10 :   lcpomap["GLN_OE1"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6884          10 :   lcpomap["GLN_NE2"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    6885          10 :   lcpomap["GLN_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6886          10 :   lcpomap["GLN_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6887          10 :   lcpomap["GLN_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6888          10 :   lcpomap["GLN_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6889          10 :   lcpomap["GLN_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6890             : 
    6891          10 :   lcpomap["GLY_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6892          10 :   lcpomap["GLY_CA"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6893          10 :   lcpomap["GLY_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6894          10 :   lcpomap["GLY_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6895          10 :   lcpomap["GLY_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6896          10 :   lcpomap["GLY_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6897          10 :   lcpomap["GLY_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6898          10 :   lcpomap["GLY_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6899          10 :   lcpomap["GLY_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6900             : 
    6901          10 :   lcpomap["HIS_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6902          10 :   lcpomap["HIS_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6903          10 :   lcpomap["HIS_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6904          10 :   lcpomap["HIS_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6905          10 :   lcpomap["HIS_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6906          10 :   lcpomap["HIS_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6907          10 :   lcpomap["HIS_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6908          10 :   lcpomap["HIS_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6909          10 :   lcpomap["HIS_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6910          10 :   lcpomap["HIS_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6911          10 :   lcpomap["HIS_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6912          10 :   lcpomap["HIS_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6913          10 :   lcpomap["HIS_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6914             : 
    6915          10 :   lcpomap["HIE_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6916          10 :   lcpomap["HIE_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6917          10 :   lcpomap["HIE_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6918          10 :   lcpomap["HIE_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6919          10 :   lcpomap["HIE_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6920          10 :   lcpomap["HIE_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6921          10 :   lcpomap["HIE_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6922          10 :   lcpomap["HIE_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6923          10 :   lcpomap["HIE_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6924          10 :   lcpomap["HIE_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6925          10 :   lcpomap["HIE_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6926          10 :   lcpomap["HIE_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6927          10 :   lcpomap["HIE_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6928             : 
    6929          10 :   lcpomap["HSE_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6930          10 :   lcpomap["HSE_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6931          10 :   lcpomap["HSE_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6932          10 :   lcpomap["HSE_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6933          10 :   lcpomap["HSE_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6934          10 :   lcpomap["HSE_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6935          10 :   lcpomap["HSE_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6936          10 :   lcpomap["HSE_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6937          10 :   lcpomap["HSE_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6938          10 :   lcpomap["HSE_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6939          10 :   lcpomap["HSE_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6940          10 :   lcpomap["HSE_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6941          10 :   lcpomap["HSE_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6942             : 
    6943          10 :   lcpomap["HID_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6944          10 :   lcpomap["HID_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6945          10 :   lcpomap["HID_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6946          10 :   lcpomap["HID_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6947          10 :   lcpomap["HID_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6948          10 :   lcpomap["HID_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6949          10 :   lcpomap["HID_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6950          10 :   lcpomap["HID_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6951          10 :   lcpomap["HID_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6952          10 :   lcpomap["HID_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6953          10 :   lcpomap["HID_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6954          10 :   lcpomap["HID_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6955          10 :   lcpomap["HID_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6956             : 
    6957          10 :   lcpomap["HSD_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6958          10 :   lcpomap["HSD_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6959          10 :   lcpomap["HSD_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6960          10 :   lcpomap["HSD_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6961          10 :   lcpomap["HSD_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6962          10 :   lcpomap["HSD_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6963          10 :   lcpomap["HSD_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6964          10 :   lcpomap["HSD_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6965          10 :   lcpomap["HSD_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6966          10 :   lcpomap["HSD_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6967          10 :   lcpomap["HSD_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6968          10 :   lcpomap["HSD_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6969          10 :   lcpomap["HSD_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6970             : 
    6971          10 :   lcpomap["HIP_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6972          10 :   lcpomap["HIP_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6973          10 :   lcpomap["HIP_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6974          10 :   lcpomap["HIP_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6975          10 :   lcpomap["HIP_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6976          10 :   lcpomap["HIP_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6977          10 :   lcpomap["HIP_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6978          10 :   lcpomap["HIP_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6979          10 :   lcpomap["HIP_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6980          10 :   lcpomap["HIP_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6981          10 :   lcpomap["HIP_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6982          10 :   lcpomap["HIP_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6983          10 :   lcpomap["HIP_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6984             : 
    6985          10 :   lcpomap["HSP_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6986          10 :   lcpomap["HSP_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    6987          10 :   lcpomap["HSP_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6988          10 :   lcpomap["HSP_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6989          10 :   lcpomap["HSP_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    6990          10 :   lcpomap["HSP_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    6991          10 :   lcpomap["HSP_ND1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6992          10 :   lcpomap["HSP_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6993          10 :   lcpomap["HSP_NE2"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    6994          10 :   lcpomap["HSP_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    6995          10 :   lcpomap["HSP_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6996          10 :   lcpomap["HSP_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    6997          10 :   lcpomap["HSP_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    6998             : 
    6999          10 :   lcpomap["ILE_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7000          10 :   lcpomap["ILE_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7001          10 :   lcpomap["ILE_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7002          10 :   lcpomap["ILE_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7003          10 :   lcpomap["ILE_CB"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7004          10 :   lcpomap["ILE_CG2"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7005          10 :   lcpomap["ILE_CG1"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7006          10 :   lcpomap["ILE_CD1"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7007          10 :   lcpomap["ILE_CD"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7008          10 :   lcpomap["ILE_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7009          10 :   lcpomap["ILE_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7010          10 :   lcpomap["ILE_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7011          10 :   lcpomap["ILE_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7012          10 :   lcpomap["ILE_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7013             : 
    7014          10 :   lcpomap["LEU_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7015          10 :   lcpomap["LEU_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7016          10 :   lcpomap["LEU_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7017          10 :   lcpomap["LEU_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7018          10 :   lcpomap["LEU_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7019          10 :   lcpomap["LEU_CG"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7020          10 :   lcpomap["LEU_CD1"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7021          10 :   lcpomap["LEU_CD2"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7022          10 :   lcpomap["LEU_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7023          10 :   lcpomap["LEU_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7024          10 :   lcpomap["LEU_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7025          10 :   lcpomap["LEU_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7026          10 :   lcpomap["LEU_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7027             : 
    7028          10 :   lcpomap["LYS_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7029          10 :   lcpomap["LYS_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7030          10 :   lcpomap["LYS_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7031          10 :   lcpomap["LYS_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7032          10 :   lcpomap["LYS_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7033          10 :   lcpomap["LYS_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7034          10 :   lcpomap["LYS_CD"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7035          10 :   lcpomap["LYS_CE"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7036          10 :   lcpomap["LYS_NZ"] = { 1.65,  0.73511,  -0.22116,  -0.00089148,  0.0002523};
    7037          10 :   lcpomap["LYS_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7038          10 :   lcpomap["LYS_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7039          10 :   lcpomap["LYS_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7040          10 :   lcpomap["LYS_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7041          10 :   lcpomap["LYS_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7042             : 
    7043          10 :   lcpomap["MET_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7044          10 :   lcpomap["MET_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7045          10 :   lcpomap["MET_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7046          10 :   lcpomap["MET_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7047          10 :   lcpomap["MET_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7048          10 :   lcpomap["MET_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7049          10 :   lcpomap["MET_SD"] = { 1.9,  0.54581,  -0.19477,  -0.0012873,  0.00029247};
    7050          10 :   lcpomap["MET_CE"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7051          10 :   lcpomap["MET_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7052          10 :   lcpomap["MET_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7053          10 :   lcpomap["MET_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7054          10 :   lcpomap["MET_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7055          10 :   lcpomap["MET_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7056             : 
    7057          10 :   lcpomap["PHE_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7058          10 :   lcpomap["PHE_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7059          10 :   lcpomap["PHE_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7060          10 :   lcpomap["PHE_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7061          10 :   lcpomap["PHE_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7062          10 :   lcpomap["PHE_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7063          10 :   lcpomap["PHE_CD1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7064          10 :   lcpomap["PHE_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7065          10 :   lcpomap["PHE_CZ"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7066          10 :   lcpomap["PHE_CE2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7067          10 :   lcpomap["PHE_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7068          10 :   lcpomap["PHE_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7069          10 :   lcpomap["PHE_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7070          10 :   lcpomap["PHE_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7071          10 :   lcpomap["PHE_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7072          10 :   lcpomap["PHE_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7073             : 
    7074          10 :   lcpomap["PRO_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7075          10 :   lcpomap["PRO_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7076          10 :   lcpomap["PRO_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7077          10 :   lcpomap["PRO_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7078          10 :   lcpomap["PRO_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7079          10 :   lcpomap["PRO_CG"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7080          10 :   lcpomap["PRO_CD"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7081          10 :   lcpomap["PRO_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7082          10 :   lcpomap["PRO_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7083          10 :   lcpomap["PRO_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7084          10 :   lcpomap["PRO_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7085          10 :   lcpomap["PRO_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7086             : 
    7087          10 :   lcpomap["SER_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7088          10 :   lcpomap["SER_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7089          10 :   lcpomap["SER_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7090          10 :   lcpomap["SER_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7091          10 :   lcpomap["SER_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7092          10 :   lcpomap["SER_OG"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7093          10 :   lcpomap["SER_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7094          10 :   lcpomap["SER_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7095          10 :   lcpomap["SER_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7096          10 :   lcpomap["SER_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7097          10 :   lcpomap["SER_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7098             : 
    7099          10 :   lcpomap["THR_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7100          10 :   lcpomap["THR_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7101          10 :   lcpomap["THR_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7102          10 :   lcpomap["THR_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7103          10 :   lcpomap["THR_CB"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7104          10 :   lcpomap["THR_CG2"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7105          10 :   lcpomap["THR_OG1"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7106          10 :   lcpomap["THR_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7107          10 :   lcpomap["THR_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7108          10 :   lcpomap["THR_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7109          10 :   lcpomap["THR_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7110          10 :   lcpomap["THR_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7111             : 
    7112          10 :   lcpomap["TRP_N"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7113          10 :   lcpomap["TRP_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7114          10 :   lcpomap["TRP_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7115          10 :   lcpomap["TRP_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7116          10 :   lcpomap["TRP_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7117          10 :   lcpomap["TRP_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7118          10 :   lcpomap["TRP_CD1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7119          10 :   lcpomap["TRP_NE1"] = { 1.65,  0.41102,  -0.12254,  -7.5448e-05,  0.00011804};
    7120          10 :   lcpomap["TRP_CE2"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7121          10 :   lcpomap["TRP_CZ2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7122          10 :   lcpomap["TRP_CH2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7123          10 :   lcpomap["TRP_CZ3"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7124          10 :   lcpomap["TRP_CE3"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7125          10 :   lcpomap["TRP_CD2"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7126          10 :   lcpomap["TRP_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7127          10 :   lcpomap["TRP_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7128          10 :   lcpomap["TRP_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7129          10 :   lcpomap["TRP_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7130          10 :   lcpomap["TRP_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7131             : 
    7132          10 :   lcpomap["TYR_N"] = { 1.65,  0.062577,  -0.017874,  -8.312e-05,  1.9849e-05};
    7133          10 :   lcpomap["TYR_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7134          10 :   lcpomap["TYR_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7135          10 :   lcpomap["TYR_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7136          10 :   lcpomap["TYR_CB"] = { 1.7,  0.56482,  -0.19608,  -0.0010219,  0.0002658};
    7137          10 :   lcpomap["TYR_CG"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7138          10 :   lcpomap["TYR_CD1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7139          10 :   lcpomap["TYR_CE1"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7140          10 :   lcpomap["TYR_CZ"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7141          10 :   lcpomap["TYR_OH"] = { 1.6,  0.77914,  -0.25262,  -0.0016056,  0.00035071};
    7142          10 :   lcpomap["TYR_CE2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7143          10 :   lcpomap["TYR_CD2"] = { 1.7,  0.51245,  -0.15966,  -0.00019781,  0.00016392};
    7144          10 :   lcpomap["TYR_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7145          10 :   lcpomap["TYR_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7146          10 :   lcpomap["TYR_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7147          10 :   lcpomap["TYR_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7148          10 :   lcpomap["TYR_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7149             : 
    7150          10 :   lcpomap["VAL_N"] = { 1.65,  0.062577,  -0.017874,  -8.312e-05,  1.9849e-05};
    7151          10 :   lcpomap["VAL_CA"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7152          10 :   lcpomap["VAL_C"] = { 1.7,  0.070344,  -0.019015,  -2.2009e-05,  1.6875e-05};
    7153          10 :   lcpomap["VAL_O"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7154          10 :   lcpomap["VAL_CB"] = { 1.7,  0.23348,  -0.072627,  -0.00020079,  7.967e-05};
    7155          10 :   lcpomap["VAL_CG1"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7156          10 :   lcpomap["VAL_CG2"] = { 1.7,  0.77887,  -0.28063,  -0.0012968,  0.00039328};
    7157          10 :   lcpomap["VAL_OC1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7158          10 :   lcpomap["VAL_OC2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7159          10 :   lcpomap["VAL_OT1"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7160          10 :   lcpomap["VAL_OT2"] = { 1.6,  0.68563,  -0.1868,  -0.00135573,  0.00023743};
    7161          10 :   lcpomap["VAL_OXT"] = { 1.6,  0.88857,  -0.33421,  -0.0018683,  0.00049372};
    7162             : 
    7163             :   // nucleic acids - WARNING: ONLY AMBER (OL3-rna/ol15-dna) FORMAT
    7164             : 
    7165          10 :   lcpomap["A3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7166          10 :   lcpomap["A3_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7167          10 :   lcpomap["A3_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7168          10 :   lcpomap["A3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7169          10 :   lcpomap["A3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7170          10 :   lcpomap["A3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7171          10 :   lcpomap["A3_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7172          10 :   lcpomap["A3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7173          10 :   lcpomap["A3_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7174          10 :   lcpomap["A3_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7175          10 :   lcpomap["A3_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7176          10 :   lcpomap["A3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7177          10 :   lcpomap["A3_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7178          10 :   lcpomap["A3_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7179          10 :   lcpomap["A3_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7180          10 :   lcpomap["A3_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7181          10 :   lcpomap["A3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7182          10 :   lcpomap["A3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7183          10 :   lcpomap["A3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7184          10 :   lcpomap["A3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7185          10 :   lcpomap["A3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7186          10 :   lcpomap["A3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7187          10 :   lcpomap["A3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7188          10 :   lcpomap["A3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7189          10 :   lcpomap["A3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7190          10 :   lcpomap["A3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7191             : 
    7192          10 :   lcpomap["A5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7193          10 :   lcpomap["A5_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7194          10 :   lcpomap["A5_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7195          10 :   lcpomap["A5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7196          10 :   lcpomap["A5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7197          10 :   lcpomap["A5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7198          10 :   lcpomap["A5_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7199          10 :   lcpomap["A5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7200          10 :   lcpomap["A5_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7201          10 :   lcpomap["A5_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7202          10 :   lcpomap["A5_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7203          10 :   lcpomap["A5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7204          10 :   lcpomap["A5_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7205          10 :   lcpomap["A5_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7206          10 :   lcpomap["A5_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7207          10 :   lcpomap["A5_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7208          10 :   lcpomap["A5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7209          10 :   lcpomap["A5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7210          10 :   lcpomap["A5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7211          10 :   lcpomap["A5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7212          10 :   lcpomap["A5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7213          10 :   lcpomap["A5_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7214          10 :   lcpomap["A5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7215          10 :   lcpomap["A5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7216          10 :   lcpomap["A5_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7217          10 :   lcpomap["A5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7218             : 
    7219          10 :   lcpomap["A_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7220          10 :   lcpomap["A_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7221          10 :   lcpomap["A_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7222          10 :   lcpomap["A_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7223          10 :   lcpomap["A_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7224          10 :   lcpomap["A_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7225          10 :   lcpomap["A_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7226          10 :   lcpomap["A_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7227          10 :   lcpomap["A_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7228          10 :   lcpomap["A_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7229          10 :   lcpomap["A_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7230          10 :   lcpomap["A_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7231          10 :   lcpomap["A_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7232          10 :   lcpomap["A_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7233          10 :   lcpomap["A_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7234          10 :   lcpomap["A_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7235          10 :   lcpomap["A_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7236          10 :   lcpomap["A_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7237          10 :   lcpomap["A_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7238          10 :   lcpomap["A_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7239          10 :   lcpomap["A_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7240          10 :   lcpomap["A_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7241          10 :   lcpomap["A_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7242          10 :   lcpomap["A_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7243          10 :   lcpomap["A_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7244          10 :   lcpomap["A_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7245             : 
    7246          10 :   lcpomap["C3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7247          10 :   lcpomap["C3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7248          10 :   lcpomap["C3_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7249          10 :   lcpomap["C3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7250          10 :   lcpomap["C3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7251          10 :   lcpomap["C3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7252          10 :   lcpomap["C3_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7253          10 :   lcpomap["C3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7254          10 :   lcpomap["C3_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7255          10 :   lcpomap["C3_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7256          10 :   lcpomap["C3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7257          10 :   lcpomap["C3_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7258          10 :   lcpomap["C3_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7259          10 :   lcpomap["C3_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7260          10 :   lcpomap["C3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7261          10 :   lcpomap["C3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7262          10 :   lcpomap["C3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7263          10 :   lcpomap["C3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7264          10 :   lcpomap["C3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7265          10 :   lcpomap["C3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7266          10 :   lcpomap["C3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7267          10 :   lcpomap["C3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7268          10 :   lcpomap["C3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7269          10 :   lcpomap["C3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7270             : 
    7271          10 :   lcpomap["C5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7272          10 :   lcpomap["C5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7273          10 :   lcpomap["C5_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7274          10 :   lcpomap["C5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7275          10 :   lcpomap["C5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7276          10 :   lcpomap["C5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7277          10 :   lcpomap["C5_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7278          10 :   lcpomap["C5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7279          10 :   lcpomap["C5_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7280          10 :   lcpomap["C5_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7281          10 :   lcpomap["C5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7282          10 :   lcpomap["C5_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7283          10 :   lcpomap["C5_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7284          10 :   lcpomap["C5_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7285          10 :   lcpomap["C5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7286          10 :   lcpomap["C5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7287          10 :   lcpomap["C5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7288          10 :   lcpomap["C5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7289          10 :   lcpomap["C5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7290          10 :   lcpomap["C5_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7291          10 :   lcpomap["C5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7292          10 :   lcpomap["C5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7293          10 :   lcpomap["C5_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7294          10 :   lcpomap["C5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7295             : 
    7296          10 :   lcpomap["C_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7297          10 :   lcpomap["C_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7298          10 :   lcpomap["C_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7299          10 :   lcpomap["C_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7300          10 :   lcpomap["C_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7301          10 :   lcpomap["C_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7302          10 :   lcpomap["C_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7303          10 :   lcpomap["C_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7304          10 :   lcpomap["C_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7305          10 :   lcpomap["C_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7306          10 :   lcpomap["C_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7307          10 :   lcpomap["C_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7308          10 :   lcpomap["C_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7309          10 :   lcpomap["C_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7310          10 :   lcpomap["C_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7311          10 :   lcpomap["C_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7312          10 :   lcpomap["C_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7313          10 :   lcpomap["C_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7314          10 :   lcpomap["C_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7315          10 :   lcpomap["C_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7316          10 :   lcpomap["C_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7317          10 :   lcpomap["C_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7318          10 :   lcpomap["C_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7319          10 :   lcpomap["C_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7320             : 
    7321          10 :   lcpomap["DA3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7322          10 :   lcpomap["DA3_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7323          10 :   lcpomap["DA3_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7324          10 :   lcpomap["DA3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7325          10 :   lcpomap["DA3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7326          10 :   lcpomap["DA3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7327          10 :   lcpomap["DA3_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7328          10 :   lcpomap["DA3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7329          10 :   lcpomap["DA3_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7330          10 :   lcpomap["DA3_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7331          10 :   lcpomap["DA3_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7332          10 :   lcpomap["DA3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7333          10 :   lcpomap["DA3_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7334          10 :   lcpomap["DA3_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7335          10 :   lcpomap["DA3_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7336          10 :   lcpomap["DA3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7337          10 :   lcpomap["DA3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7338          10 :   lcpomap["DA3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7339          10 :   lcpomap["DA3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7340          10 :   lcpomap["DA3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7341          10 :   lcpomap["DA3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7342          10 :   lcpomap["DA3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7343          10 :   lcpomap["DA3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7344          10 :   lcpomap["DA3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7345          10 :   lcpomap["DA3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7346             : 
    7347          10 :   lcpomap["DA5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7348          10 :   lcpomap["DA5_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7349          10 :   lcpomap["DA5_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7350          10 :   lcpomap["DA5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7351          10 :   lcpomap["DA5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7352          10 :   lcpomap["DA5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7353          10 :   lcpomap["DA5_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7354          10 :   lcpomap["DA5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7355          10 :   lcpomap["DA5_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7356          10 :   lcpomap["DA5_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7357          10 :   lcpomap["DA5_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7358          10 :   lcpomap["DA5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7359          10 :   lcpomap["DA5_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7360          10 :   lcpomap["DA5_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7361          10 :   lcpomap["DA5_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7362          10 :   lcpomap["DA5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7363          10 :   lcpomap["DA5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7364          10 :   lcpomap["DA5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7365          10 :   lcpomap["DA5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7366          10 :   lcpomap["DA5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7367          10 :   lcpomap["DA5_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7368          10 :   lcpomap["DA5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7369          10 :   lcpomap["DA5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7370          10 :   lcpomap["DA5_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7371          10 :   lcpomap["DA5_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7372             : 
    7373          10 :   lcpomap["DA_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7374          10 :   lcpomap["DA_C2"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7375          10 :   lcpomap["DA_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7376          10 :   lcpomap["DA_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7377          10 :   lcpomap["DA_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7378          10 :   lcpomap["DA_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7379          10 :   lcpomap["DA_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7380          10 :   lcpomap["DA_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7381          10 :   lcpomap["DA_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7382          10 :   lcpomap["DA_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7383          10 :   lcpomap["DA_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7384          10 :   lcpomap["DA_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7385          10 :   lcpomap["DA_N6"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7386          10 :   lcpomap["DA_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7387          10 :   lcpomap["DA_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7388          10 :   lcpomap["DA_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7389          10 :   lcpomap["DA_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7390          10 :   lcpomap["DA_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7391          10 :   lcpomap["DA_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7392          10 :   lcpomap["DA_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7393          10 :   lcpomap["DA_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7394          10 :   lcpomap["DA_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7395          10 :   lcpomap["DA_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7396          10 :   lcpomap["DA_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7397          10 :   lcpomap["DA_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7398             : 
    7399          10 :   lcpomap["DC3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7400          10 :   lcpomap["DC3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7401          10 :   lcpomap["DC3_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7402          10 :   lcpomap["DC3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7403          10 :   lcpomap["DC3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7404          10 :   lcpomap["DC3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7405          10 :   lcpomap["DC3_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7406          10 :   lcpomap["DC3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7407          10 :   lcpomap["DC3_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7408          10 :   lcpomap["DC3_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7409          10 :   lcpomap["DC3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7410          10 :   lcpomap["DC3_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7411          10 :   lcpomap["DC3_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7412          10 :   lcpomap["DC3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7413          10 :   lcpomap["DC3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7414          10 :   lcpomap["DC3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7415          10 :   lcpomap["DC3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7416          10 :   lcpomap["DC3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7417          10 :   lcpomap["DC3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7418          10 :   lcpomap["DC3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7419          10 :   lcpomap["DC3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7420          10 :   lcpomap["DC3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7421          10 :   lcpomap["DC3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7422             : 
    7423          10 :   lcpomap["DC5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7424          10 :   lcpomap["DC5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7425          10 :   lcpomap["DC5_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7426          10 :   lcpomap["DC5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7427          10 :   lcpomap["DC5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7428          10 :   lcpomap["DC5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7429          10 :   lcpomap["DC5_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7430          10 :   lcpomap["DC5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7431          10 :   lcpomap["DC5_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7432          10 :   lcpomap["DC5_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7433          10 :   lcpomap["DC5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7434          10 :   lcpomap["DC5_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7435          10 :   lcpomap["DC5_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7436          10 :   lcpomap["DC5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7437          10 :   lcpomap["DC5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7438          10 :   lcpomap["DC5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7439          10 :   lcpomap["DC5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7440          10 :   lcpomap["DC5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7441          10 :   lcpomap["DC5_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7442          10 :   lcpomap["DC5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7443          10 :   lcpomap["DC5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7444          10 :   lcpomap["DC5_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7445          10 :   lcpomap["DC5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7446             : 
    7447          10 :   lcpomap["DC_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7448          10 :   lcpomap["DC_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7449          10 :   lcpomap["DC_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7450          10 :   lcpomap["DC_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7451          10 :   lcpomap["DC_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7452          10 :   lcpomap["DC_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7453          10 :   lcpomap["DC_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7454          10 :   lcpomap["DC_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7455          10 :   lcpomap["DC_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7456          10 :   lcpomap["DC_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7457          10 :   lcpomap["DC_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7458          10 :   lcpomap["DC_N4"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7459          10 :   lcpomap["DC_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7460          10 :   lcpomap["DC_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7461          10 :   lcpomap["DC_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7462          10 :   lcpomap["DC_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7463          10 :   lcpomap["DC_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7464          10 :   lcpomap["DC_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7465          10 :   lcpomap["DC_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7466          10 :   lcpomap["DC_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7467          10 :   lcpomap["DC_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7468          10 :   lcpomap["DC_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7469          10 :   lcpomap["DC_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7470             : 
    7471          10 :   lcpomap["DG3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7472          10 :   lcpomap["DG3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7473          10 :   lcpomap["DG3_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7474          10 :   lcpomap["DG3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7475          10 :   lcpomap["DG3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7476          10 :   lcpomap["DG3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7477          10 :   lcpomap["DG3_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7478          10 :   lcpomap["DG3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7479          10 :   lcpomap["DG3_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7480          10 :   lcpomap["DG3_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7481          10 :   lcpomap["DG3_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7482          10 :   lcpomap["DG3_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7483          10 :   lcpomap["DG3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7484          10 :   lcpomap["DG3_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7485          10 :   lcpomap["DG3_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7486          10 :   lcpomap["DG3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7487          10 :   lcpomap["DG3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7488          10 :   lcpomap["DG3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7489          10 :   lcpomap["DG3_O6"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7490          10 :   lcpomap["DG3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7491          10 :   lcpomap["DG3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7492          10 :   lcpomap["DG3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7493          10 :   lcpomap["DG3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7494          10 :   lcpomap["DG3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7495          10 :   lcpomap["DG3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7496          10 :   lcpomap["DG3_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7497             : 
    7498          10 :   lcpomap["DG5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7499          10 :   lcpomap["DG5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7500          10 :   lcpomap["DG5_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7501          10 :   lcpomap["DG5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7502          10 :   lcpomap["DG5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7503          10 :   lcpomap["DG5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7504          10 :   lcpomap["DG5_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7505          10 :   lcpomap["DG5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7506          10 :   lcpomap["DG5_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7507          10 :   lcpomap["DG5_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7508          10 :   lcpomap["DG5_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7509          10 :   lcpomap["DG5_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7510          10 :   lcpomap["DG5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7511          10 :   lcpomap["DG5_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7512          10 :   lcpomap["DG5_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7513          10 :   lcpomap["DG5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7514          10 :   lcpomap["DG5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7515          10 :   lcpomap["DG5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7516          10 :   lcpomap["DG5_O6"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7517          10 :   lcpomap["DG5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7518          10 :   lcpomap["DG5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7519          10 :   lcpomap["DG5_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7520          10 :   lcpomap["DG5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7521          10 :   lcpomap["DG5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7522          10 :   lcpomap["DG5_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7523          10 :   lcpomap["DG5_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7524             : 
    7525          10 :   lcpomap["DG_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7526          10 :   lcpomap["DG_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7527          10 :   lcpomap["DG_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7528          10 :   lcpomap["DG_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7529          10 :   lcpomap["DG_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7530          10 :   lcpomap["DG_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7531          10 :   lcpomap["DG_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7532          10 :   lcpomap["DG_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7533          10 :   lcpomap["DG_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7534          10 :   lcpomap["DG_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7535          10 :   lcpomap["DG_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7536          10 :   lcpomap["DG_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7537          10 :   lcpomap["DG_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7538          10 :   lcpomap["DG_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7539          10 :   lcpomap["DG_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7540          10 :   lcpomap["DG_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7541          10 :   lcpomap["DG_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7542          10 :   lcpomap["DG_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7543          10 :   lcpomap["DG_O6"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7544          10 :   lcpomap["DG_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7545          10 :   lcpomap["DG_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7546          10 :   lcpomap["DG_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7547          10 :   lcpomap["DG_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7548          10 :   lcpomap["DG_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7549          10 :   lcpomap["DG_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7550          10 :   lcpomap["DG_P"]   = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7551             : 
    7552          10 :   lcpomap["DT3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7553          10 :   lcpomap["DT3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7554          10 :   lcpomap["DT3_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7555          10 :   lcpomap["DT3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7556          10 :   lcpomap["DT3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7557          10 :   lcpomap["DT3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7558          10 :   lcpomap["DT3_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7559          10 :   lcpomap["DT3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7560          10 :   lcpomap["DT3_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7561          10 :   lcpomap["DT3_C7"]  = { 1.7,  0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
    7562          10 :   lcpomap["DT3_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7563          10 :   lcpomap["DT3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7564          10 :   lcpomap["DT3_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7565          10 :   lcpomap["DT3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7566          10 :   lcpomap["DT3_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7567          10 :   lcpomap["DT3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7568          10 :   lcpomap["DT3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7569          10 :   lcpomap["DT3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7570          10 :   lcpomap["DT3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7571          10 :   lcpomap["DT3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7572          10 :   lcpomap["DT3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7573          10 :   lcpomap["DT3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7574          10 :   lcpomap["DT3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7575          10 :   lcpomap["DT3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7576             : 
    7577          10 :   lcpomap["DT5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7578          10 :   lcpomap["DT5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7579          10 :   lcpomap["DT5_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7580          10 :   lcpomap["DT5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7581          10 :   lcpomap["DT5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7582          10 :   lcpomap["DT5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7583          10 :   lcpomap["DT5_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7584          10 :   lcpomap["DT5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7585          10 :   lcpomap["DT5_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7586          10 :   lcpomap["DT5_C7"]  = { 1.7,  0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
    7587          10 :   lcpomap["DT5_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7588          10 :   lcpomap["DT5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7589          10 :   lcpomap["DT5_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7590          10 :   lcpomap["DT5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7591          10 :   lcpomap["DT5_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7592          10 :   lcpomap["DT5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7593          10 :   lcpomap["DT5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7594          10 :   lcpomap["DT5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7595          10 :   lcpomap["DT5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7596          10 :   lcpomap["DT5_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7597          10 :   lcpomap["DT5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7598          10 :   lcpomap["DT5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7599          10 :   lcpomap["DT5_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7600          10 :   lcpomap["DT5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7601             : 
    7602          10 :   lcpomap["DT_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7603          10 :   lcpomap["DT_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7604          10 :   lcpomap["DT_C2'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7605          10 :   lcpomap["DT_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7606          10 :   lcpomap["DT_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7607          10 :   lcpomap["DT_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7608          10 :   lcpomap["DT_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7609          10 :   lcpomap["DT_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7610          10 :   lcpomap["DT_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7611          10 :   lcpomap["DT_C7"]  = { 1.7,  0.77887, -0.28063, -1.2968e-03, 3.9328e-04 };
    7612          10 :   lcpomap["DT_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7613          10 :   lcpomap["DT_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7614          10 :   lcpomap["DT_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7615          10 :   lcpomap["DT_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7616          10 :   lcpomap["DT_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7617          10 :   lcpomap["DT_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7618          10 :   lcpomap["DT_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7619          10 :   lcpomap["DT_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7620          10 :   lcpomap["DT_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7621          10 :   lcpomap["DT_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7622          10 :   lcpomap["DT_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7623          10 :   lcpomap["DT_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7624          10 :   lcpomap["DT_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7625          10 :   lcpomap["DT_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7626             : 
    7627          10 :   lcpomap["G3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7628          10 :   lcpomap["G3_C2"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7629          10 :   lcpomap["G3_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7630          10 :   lcpomap["G3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7631          10 :   lcpomap["G3_C4"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7632          10 :   lcpomap["G3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7633          10 :   lcpomap["G3_C5"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7634          10 :   lcpomap["G3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7635          10 :   lcpomap["G3_C6"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7636          10 :   lcpomap["G3_C8"] = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7637          10 :   lcpomap["G3_N1"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7638          10 :   lcpomap["G3_N2"] = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7639          10 :   lcpomap["G3_N3"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7640          10 :   lcpomap["G3_N7"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7641          10 :   lcpomap["G3_N9"] = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7642          10 :   lcpomap["G3_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7643          10 :   lcpomap["G3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7644          10 :   lcpomap["G3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7645          10 :   lcpomap["G3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7646          10 :   lcpomap["G3_O6"] = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7647          10 :   lcpomap["G3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7648          10 :   lcpomap["G3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7649          10 :   lcpomap["G3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7650          10 :   lcpomap["G3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7651          10 :   lcpomap["G3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7652          10 :   lcpomap["G3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7653          10 :   lcpomap["G3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7654             : 
    7655          10 :   lcpomap["G5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7656          10 :   lcpomap["G5_C2"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7657          10 :   lcpomap["G5_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7658          10 :   lcpomap["G5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7659          10 :   lcpomap["G5_C4"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7660          10 :   lcpomap["G5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7661          10 :   lcpomap["G5_C5"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7662          10 :   lcpomap["G5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7663          10 :   lcpomap["G5_C6"] = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7664          10 :   lcpomap["G5_C8"] = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7665          10 :   lcpomap["G5_N1"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7666          10 :   lcpomap["G5_N2"] = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7667          10 :   lcpomap["G5_N3"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7668          10 :   lcpomap["G5_N7"] = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7669          10 :   lcpomap["G5_N9"] = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7670          10 :   lcpomap["G5_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7671          10 :   lcpomap["G5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7672          10 :   lcpomap["G5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7673          10 :   lcpomap["G5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7674          10 :   lcpomap["G5_O6"] = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7675          10 :   lcpomap["G5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7676          10 :   lcpomap["G5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7677          10 :   lcpomap["G5_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7678          10 :   lcpomap["G5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7679          10 :   lcpomap["G5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7680          10 :   lcpomap["G5_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7681          10 :   lcpomap["G5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7682             : 
    7683          10 :   lcpomap["G_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7684          10 :   lcpomap["G_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7685          10 :   lcpomap["G_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7686          10 :   lcpomap["G_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7687          10 :   lcpomap["G_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7688          10 :   lcpomap["G_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7689          10 :   lcpomap["G_C5"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7690          10 :   lcpomap["G_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7691          10 :   lcpomap["G_C6"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7692          10 :   lcpomap["G_C8"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7693          10 :   lcpomap["G_N1"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7694          10 :   lcpomap["G_N2"]  = { 1.65,  0.73511, -0.22116, -8.9148e-04, 2.523e-04 };
    7695          10 :   lcpomap["G_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7696          10 :   lcpomap["G_N7"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7697          10 :   lcpomap["G_N9"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7698          10 :   lcpomap["G_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7699          10 :   lcpomap["G_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7700          10 :   lcpomap["G_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7701          10 :   lcpomap["G_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7702          10 :   lcpomap["G_O6"] = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7703          10 :   lcpomap["G_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7704          10 :   lcpomap["G_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7705          10 :   lcpomap["G_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7706          10 :   lcpomap["G_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7707          10 :   lcpomap["G_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7708          10 :   lcpomap["G_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7709          10 :   lcpomap["G_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7710             : 
    7711          10 :   lcpomap["U3_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7712          10 :   lcpomap["U3_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7713          10 :   lcpomap["U3_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7714          10 :   lcpomap["U3_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7715          10 :   lcpomap["U3_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7716          10 :   lcpomap["U3_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7717          10 :   lcpomap["U3_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7718          10 :   lcpomap["U3_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7719          10 :   lcpomap["U3_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7720          10 :   lcpomap["U3_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7721          10 :   lcpomap["U3_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7722          10 :   lcpomap["U3_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7723          10 :   lcpomap["U3_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7724          10 :   lcpomap["U3_O3'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7725          10 :   lcpomap["U3_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7726          10 :   lcpomap["U3_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7727          10 :   lcpomap["U3_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7728          10 :   lcpomap["U3_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7729          10 :   lcpomap["U3_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7730          10 :   lcpomap["U3_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7731          10 :   lcpomap["U3_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7732          10 :   lcpomap["U3_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7733          10 :   lcpomap["U3_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7734          10 :   lcpomap["U3_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7735             : 
    7736          10 :   lcpomap["U5_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7737          10 :   lcpomap["U5_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7738          10 :   lcpomap["U5_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7739          10 :   lcpomap["U5_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7740          10 :   lcpomap["U5_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7741          10 :   lcpomap["U5_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7742          10 :   lcpomap["U5_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7743          10 :   lcpomap["U5_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7744          10 :   lcpomap["U5_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7745          10 :   lcpomap["U5_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7746          10 :   lcpomap["U5_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7747          10 :   lcpomap["U5_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7748          10 :   lcpomap["U5_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7749          10 :   lcpomap["U5_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7750          10 :   lcpomap["U5_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7751          10 :   lcpomap["U5_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7752          10 :   lcpomap["U5_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7753          10 :   lcpomap["U5_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7754          10 :   lcpomap["U5_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7755          10 :   lcpomap["U5_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7756          10 :   lcpomap["U5_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7757          10 :   lcpomap["U5_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7758          10 :   lcpomap["U5_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7759          10 :   lcpomap["U5_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7760             : 
    7761          10 :   lcpomap["U_C1'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7762          10 :   lcpomap["U_C2"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7763          10 :   lcpomap["U_C2'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7764          10 :   lcpomap["U_C3'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7765          10 :   lcpomap["U_C4"]  = { 1.7,  0.070344, -0.019015, -2.2009e-05, 1.6875e-05 };
    7766          10 :   lcpomap["U_C4'"] = { 1.7,  0.23348, -0.072627, -2.0079e-04, 7.967e-05 };
    7767          10 :   lcpomap["U_C5"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7768          10 :   lcpomap["U_C5'"] = { 1.7,  0.56482, -0.19608, -1.0219e-03, 2.658e-04 };
    7769          10 :   lcpomap["U_C6"]  = { 1.7,  0.51245, -0.15966, -1.9781e-04, 1.6392e-04 };
    7770          10 :   lcpomap["U_N1"]  = { 1.65,  0.062577, -0.017874, -8.312e-05, 1.9849e-05 };
    7771          10 :   lcpomap["U_N3"]  = { 1.65,  0.41102, -0.12254, -7.5448e-05, 1.1804e-04 };
    7772          10 :   lcpomap["U_O2"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7773          10 :   lcpomap["U_O2'"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7774          10 :   lcpomap["U_O3'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7775          10 :   lcpomap["U_O4"]  = { 1.6,  0.68563, -0.1868, -1.35573e-03, 2.3743e-04 };
    7776          10 :   lcpomap["U_O4'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7777          10 :   lcpomap["U_O5'"] = { 1.6,  0.49392, -0.16038, -1.5512e-04, 1.6453e-04 };
    7778          10 :   lcpomap["U_OP1"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7779          10 :   lcpomap["U_OP2"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7780          10 :   lcpomap["U_OP3"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7781          10 :   lcpomap["U_O1P"] = { 1.6,  0.77914, -0.25262, -1.6056e-03, 3.5071e-04 };
    7782          10 :   lcpomap["U_O2P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7783          10 :   lcpomap["U_O3P"] = { 1.6,  0.88857, -0.33421, -1.8683e-03, 4.9372e-04 };
    7784          10 :   lcpomap["U_P"] = { 1.9,  0.03873,  -0.0089339, 8.3582e-06,  3.0381e-06};
    7785             : 
    7786          10 :   return lcpomap;
    7787             : }
    7788             : 
    7789             : // assigns LCPO parameters to each atom reading from database
    7790          10 : void SAXS::readLCPOparam(const std::vector<std::vector<std::string> > &AtomResidueName, unsigned natoms) {
    7791          10 :   std::map<std::string, std::vector<double> > lcpomap = setupLCPOparam();
    7792             : 
    7793       35476 :   for(unsigned i=0; i<natoms; ++i) {
    7794       35466 :     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'))) {
    7795       16548 :       std::string identifier = AtomResidueName[1][i]+"_"+AtomResidueName[0][i];
    7796       16548 :       std::vector<double> LCPOparamVector = lcpomap.at(identifier);
    7797             :       double rs = 0.14;
    7798       16548 :       LCPOparam[i].push_back(LCPOparamVector[0]+rs*10.);
    7799       16548 :       LCPOparam[i].push_back(LCPOparamVector[1]);
    7800       16548 :       LCPOparam[i].push_back(LCPOparamVector[2]);
    7801       16548 :       LCPOparam[i].push_back(LCPOparamVector[3]);
    7802       16548 :       LCPOparam[i].push_back(LCPOparamVector[4]);
    7803             :     }
    7804             :   }
    7805             : 
    7806       35476 :   for(unsigned i=0; i<natoms; ++i) {
    7807       35466 :     if (LCPOparam[i].size()==0 ) {
    7808       18918 :       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')) {
    7809           0 :         std::cout << "Could not find LCPO paramaters for atom " << AtomResidueName[0][i] << " of residue " << AtomResidueName[1][i] << std::endl;
    7810           0 :         error ("missing LCPO parameters\n");
    7811             :       }
    7812             :     }
    7813             :   }
    7814             : 
    7815          10 :   if (AtomResidueName[0][0] == "N") {
    7816          10 :     LCPOparam[0][1] = 7.3511e-01;
    7817          10 :     LCPOparam[0][2] = -2.2116e-01;
    7818          10 :     LCPOparam[0][3] = -8.9148e-04;
    7819          10 :     LCPOparam[0][4] = 2.5230e-04;
    7820             :   }
    7821             : 
    7822          10 :   if (AtomResidueName[0][natoms-1] == "O") {
    7823           0 :     LCPOparam[natoms-1][1] = 8.8857e-01;
    7824           0 :     LCPOparam[natoms-1][2] = -3.3421e-01;
    7825           0 :     LCPOparam[natoms-1][3] = -1.8683e-03;
    7826           0 :     LCPOparam[natoms-1][4] = 4.9372e-04;
    7827             :   }
    7828          10 : }
    7829             : 
    7830             : 
    7831             : }//namespace isdb
    7832             : }//namespace PLMD

Generated by: LCOV version 1.16