ChiralSet.h

Go to the documentation of this file.
00001 //
00002 //  Copyright (C) 2004-2008 Greg Landrum and Rational Discovery LLC
00003 //
00004 //   @@ All Rights Reserved @@
00005 //  This file is part of the RDKit.
00006 //  The contents are covered by the terms of the BSD license
00007 //  which is included in the file license.txt, found at the root
00008 //  of the RDKit source tree.
00009 //
00010 #ifndef __RD_CHIRAL_SET_H__
00011 #define __RD_CHIRAL_SET_H__
00012 
00013 #include <RDGeneral/Invariant.h>
00014 #include <boost/smart_ptr.hpp>
00015 #include <vector>
00016 
00017 namespace DistGeom {
00018 
00019   /*! \brief Class used to store a quartet of points and chiral volume bounds on them
00020    * 
00021    */
00022   class ChiralSet {
00023   public:
00024 
00025     unsigned int d_idx1;
00026     unsigned int d_idx2;
00027     unsigned int d_idx3;
00028     unsigned int d_idx4;
00029     double d_volumeLowerBound;
00030     double d_volumeUpperBound;
00031 
00032     ChiralSet(unsigned int pid1, unsigned int pid2, 
00033               unsigned int pid3, unsigned int pid4, 
00034               double lowerVolBound, double upperVolBound) :
00035       d_idx1(pid1), d_idx2(pid2), d_idx3(pid3), d_idx4(pid4),
00036       d_volumeLowerBound(lowerVolBound),d_volumeUpperBound(upperVolBound) {
00037       CHECK_INVARIANT(lowerVolBound <= upperVolBound, "Inconsistent bounds\n");
00038       d_volumeLowerBound = lowerVolBound;
00039       d_volumeUpperBound = upperVolBound;
00040     }
00041     
00042     inline double getUpperVolumeBound() const {
00043       return d_volumeUpperBound;
00044     }
00045     
00046     inline double getLowerVolumeBound() const {
00047       return d_volumeLowerBound;
00048     }
00049   };
00050  
00051   typedef boost::shared_ptr<ChiralSet> ChiralSetPtr;
00052   typedef std::vector<ChiralSetPtr> VECT_CHIRALSET;
00053 
00054 }  
00055 
00056 #endif