residueTorsions.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: residueTorsions.h,v 1.20 2005/12/23 17:01:55 amoll Exp $
00005 //
00006 
00007 // Molecular Mechanics Parameter: class describing the ResidueTorsions section of a parameter file
00008  
00009 #ifndef BALL_MOLMEC_PARAMETER_RESIDUETORSIONS_H
00010 #define BALL_MOLMEC_PARAMETER_RESIDUETORSIONS_H
00011 
00012 #ifndef BALL_FORMAT_PARAMETERSECTION_H
00013 # include <BALL/FORMAT/parameterSection.h>
00014 #endif
00015 
00016 #ifndef BALL_MOLMEC_PARAMETER_ATOMTYPES_H
00017 # include <BALL/MOLMEC/PARAMETER/atomTypes.h>
00018 #endif
00019 
00020 namespace BALL 
00021 {
00034   class BALL_EXPORT ResidueTorsions 
00035     : public ParameterSection
00036   {
00037     public:
00038 
00042 
00045     struct BALL_EXPORT Data
00046     {
00047       String  residue_name;
00048       String  atom_name_A;
00049       String  atom_name_B;
00050       String  atom_name_C;
00051       String  atom_name_D;
00052       
00053       Data(const String& name, const String& A, const String& B, const String& C, const String& D)
00054         : residue_name(name),
00055           atom_name_A(A),
00056           atom_name_B(B),
00057           atom_name_C(C),
00058           atom_name_D(D)
00059       {
00060       }
00061 
00062       Data()
00063         : residue_name(""),
00064           atom_name_A(""),
00065           atom_name_B(""),
00066           atom_name_C(""),
00067           atom_name_D("")
00068       {
00069       }
00070 
00071       bool operator == (const Data& data) const;
00072       bool operator != (const Data& data) const;
00073     };
00074 
00076 
00079 
00082     ResidueTorsions();
00083 
00086     virtual ~ResidueTorsions() ;
00087 
00090     virtual void clear() ;
00091 
00093 
00096 
00102     virtual bool extractSection(ForceFieldParameters& parameters, const String& section_name);
00103 
00105     virtual bool extractSection(Parameters& parameters, const String& section_name);
00106 
00109     Size getNumberOfResidueTorsions(const String& residue_name) const;
00110 
00117     bool assignTorsion(const String& name, Position i, Data& torsion) const;
00118 
00121     bool hasTorsion
00122       (const String& residue, const String& atom_A, const String& atom_B,
00123        const String& atom_C, const String& atom_D) const;
00124 
00126 
00127     protected:
00128 
00129     /*_ Contains arrays of ResidueTorsions.
00130         All torsions for a given residue name are collected in 
00131         a vector and accessed via the residue name through a StringHashMap.
00132     */
00133     StringHashMap<vector<Data> >  torsions_;
00134 
00135     /*_ Hash set of all torsion identifiers.
00136         This hash set contains all entries in the form of strings.
00137         It is used by \Ref{hasTorsion}.
00138     */
00139     HashSet<String>               all_torsions_;
00140   };
00141 } // namespace BALL
00142 
00143 #endif // BALL_MOLMEC_PARAMETER_RESIDUETORSIONS_H