Public Member Functions | Private Attributes | List of all members
PLMD::RMSDCoreData Class Reference

this is a class which is needed to share information across the various non-threadsafe routines so that the public function of rmsd are threadsafe while the inner core can safely share information More...

#include <RMSD.h>

Public Member Functions

 RMSDCoreData (const std::vector< double > &a, const std::vector< double > &d, const std::vector< Vector > &p, const std::vector< Vector > &r, Vector &cp, Vector &cr)
 the constructor (note: only references are passed, therefore is rather fast) note: this aligns the reference onto the positions More...
 
 RMSDCoreData (const std::vector< double > &a, const std::vector< double > &d, const std::vector< Vector > &p, const std::vector< Vector > &r)
 
void calcPositionsCenter ()
 
void calcReferenceCenter ()
 
void setPositionsCenter (Vector v)
 
void setReferenceCenter (Vector v)
 
void setPositionsCenterIsRemoved (bool t)
 
void setReferenceCenterIsRemoved (bool t)
 
bool getPositionsCenterIsRemoved ()
 
bool getReferenceCenterIsRemoved ()
 
void doCoreCalc (bool safe, bool alEqDis, bool only_rotation=false)
 This calculates the elements needed by the quaternion to calculate everything that is needed additional calls retrieve different components note that this considers that the centers of both reference and positions are already setted but automatically should properly account for non removed components: if not removed then it removes prior to calculation of the alignment. More...
 
double getDistance (bool squared)
 just retrieve the distance already calculated More...
 
std::vector< VectorgetDDistanceDPositions ()
 
std::vector< VectorgetDDistanceDReference ()
 
std::vector< VectorgetDDistanceDReferenceSOMA ()
 this version does not calculate the derivative of rotation matrix as needed for SOMA More...
 
std::vector< VectorgetAlignedReferenceToPositions ()
 
std::vector< VectorgetAlignedPositionsToReference ()
 
std::vector< VectorgetCenteredPositions ()
 
std::vector< VectorgetCenteredReference ()
 
Vector getPositionsCenter ()
 
Vector getReferenceCenter ()
 
Tensor getRotationMatrixReferenceToPositions ()
 
Tensor getRotationMatrixPositionsToReference ()
 
Matrix< std::vector< Vector > > getDRotationDPositions (bool inverseTransform=false)
 
Matrix< std::vector< Vector > > getDRotationDReference (bool inverseTransform=false)
 

Private Attributes

bool alEqDis
 
bool distanceIsMSD
 
bool hasDistance
 
bool isInitialized
 
bool safe
 
Vector creference
 
bool creference_is_calculated
 
bool creference_is_removed
 
Vector cpositions
 
bool cpositions_is_calculated
 
bool cpositions_is_removed
 
bool retrieve_only_rotation
 
const std::vector< Vector > & positions
 
const std::vector< Vector > & reference
 
const std::vector< double > & align
 
const std::vector< double > & displace
 
double dist
 
std::vector< double > eigenvals
 
Matrix< double > eigenvecs
 
double rr00
 
double rr11
 
Tensor rotation
 
Tensor drotation_drr01 [3][3]
 
Tensor ddist_drr01
 
Tensor ddist_drotation
 
std::vector< Vectord
 

Detailed Description

this is a class which is needed to share information across the various non-threadsafe routines so that the public function of rmsd are threadsafe while the inner core can safely share information

Constructor & Destructor Documentation

PLMD::RMSDCoreData::RMSDCoreData ( const std::vector< double > &  a,
const std::vector< double > &  d,
const std::vector< Vector > &  p,
const std::vector< Vector > &  r,
Vector cp,
Vector cr 
)
inline

the constructor (note: only references are passed, therefore is rather fast) note: this aligns the reference onto the positions

this method assumes that the centers are already calculated and subtracted

PLMD::RMSDCoreData::RMSDCoreData ( const std::vector< double > &  a,
const std::vector< double > &  d,
const std::vector< Vector > &  p,
const std::vector< Vector > &  r 
)
inline

Member Function Documentation

void PLMD::RMSDCoreData::calcPositionsCenter ( )
inline
void PLMD::RMSDCoreData::calcReferenceCenter ( )
inline
void PLMD::RMSDCoreData::doCoreCalc ( bool  safe,
bool  alEqDis,
bool  only_rotation = false 
)

This calculates the elements needed by the quaternion to calculate everything that is needed additional calls retrieve different components note that this considers that the centers of both reference and positions are already setted but automatically should properly account for non removed components: if not removed then it removes prior to calculation of the alignment.

std::vector< Vector > PLMD::RMSDCoreData::getAlignedPositionsToReference ( )
std::vector< Vector > PLMD::RMSDCoreData::getAlignedReferenceToPositions ( )
std::vector< Vector > PLMD::RMSDCoreData::getCenteredPositions ( )
std::vector< Vector > PLMD::RMSDCoreData::getCenteredReference ( )
std::vector< Vector > PLMD::RMSDCoreData::getDDistanceDPositions ( )
std::vector< Vector > PLMD::RMSDCoreData::getDDistanceDReference ( )
std::vector< Vector > PLMD::RMSDCoreData::getDDistanceDReferenceSOMA ( )

this version does not calculate the derivative of rotation matrix as needed for SOMA

double PLMD::RMSDCoreData::getDistance ( bool  squared)

just retrieve the distance already calculated

Matrix< std::vector< Vector > > PLMD::RMSDCoreData::getDRotationDPositions ( bool  inverseTransform = false)
Matrix< std::vector< Vector > > PLMD::RMSDCoreData::getDRotationDReference ( bool  inverseTransform = false)
Vector PLMD::RMSDCoreData::getPositionsCenter ( )
bool PLMD::RMSDCoreData::getPositionsCenterIsRemoved ( )
inline
Vector PLMD::RMSDCoreData::getReferenceCenter ( )
bool PLMD::RMSDCoreData::getReferenceCenterIsRemoved ( )
inline
Tensor PLMD::RMSDCoreData::getRotationMatrixPositionsToReference ( )
Tensor PLMD::RMSDCoreData::getRotationMatrixReferenceToPositions ( )
void PLMD::RMSDCoreData::setPositionsCenter ( Vector  v)
inline
void PLMD::RMSDCoreData::setPositionsCenterIsRemoved ( bool  t)
inline
void PLMD::RMSDCoreData::setReferenceCenter ( Vector  v)
inline
void PLMD::RMSDCoreData::setReferenceCenterIsRemoved ( bool  t)
inline

Member Data Documentation

bool PLMD::RMSDCoreData::alEqDis
private
const std::vector<double>& PLMD::RMSDCoreData::align
private
Vector PLMD::RMSDCoreData::cpositions
private
bool PLMD::RMSDCoreData::cpositions_is_calculated
private
bool PLMD::RMSDCoreData::cpositions_is_removed
private
Vector PLMD::RMSDCoreData::creference
private
bool PLMD::RMSDCoreData::creference_is_calculated
private
bool PLMD::RMSDCoreData::creference_is_removed
private
std::vector<Vector> PLMD::RMSDCoreData::d
private
Tensor PLMD::RMSDCoreData::ddist_drotation
private
Tensor PLMD::RMSDCoreData::ddist_drr01
private
const std::vector<double>& PLMD::RMSDCoreData::displace
private
double PLMD::RMSDCoreData::dist
private
bool PLMD::RMSDCoreData::distanceIsMSD
private
Tensor PLMD::RMSDCoreData::drotation_drr01[3][3]
private
std::vector<double> PLMD::RMSDCoreData::eigenvals
private
Matrix<double> PLMD::RMSDCoreData::eigenvecs
private
bool PLMD::RMSDCoreData::hasDistance
private
bool PLMD::RMSDCoreData::isInitialized
private
const std::vector<Vector>& PLMD::RMSDCoreData::positions
private
const std::vector<Vector>& PLMD::RMSDCoreData::reference
private
bool PLMD::RMSDCoreData::retrieve_only_rotation
private
Tensor PLMD::RMSDCoreData::rotation
private
double PLMD::RMSDCoreData::rr00
private
double PLMD::RMSDCoreData::rr11
private
bool PLMD::RMSDCoreData::safe
private

The documentation for this class was generated from the following files: