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

◆ RMSDCoreData() [1/2]

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

◆ RMSDCoreData() [2/2]

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

◆ calcPositionsCenter()

void PLMD::RMSDCoreData::calcPositionsCenter ( )
inline

◆ calcReferenceCenter()

void PLMD::RMSDCoreData::calcReferenceCenter ( )
inline

◆ doCoreCalc()

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.

◆ getAlignedPositionsToReference()

std::vector< Vector > PLMD::RMSDCoreData::getAlignedPositionsToReference ( )

◆ getAlignedReferenceToPositions()

std::vector< Vector > PLMD::RMSDCoreData::getAlignedReferenceToPositions ( )

◆ getCenteredPositions()

std::vector< Vector > PLMD::RMSDCoreData::getCenteredPositions ( )

◆ getCenteredReference()

std::vector< Vector > PLMD::RMSDCoreData::getCenteredReference ( )

◆ getDDistanceDPositions()

std::vector< Vector > PLMD::RMSDCoreData::getDDistanceDPositions ( )

◆ getDDistanceDReference()

std::vector< Vector > PLMD::RMSDCoreData::getDDistanceDReference ( )

◆ getDDistanceDReferenceSOMA()

std::vector< Vector > PLMD::RMSDCoreData::getDDistanceDReferenceSOMA ( )

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

◆ getDistance()

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

just retrieve the distance already calculated

◆ getDRotationDPositions()

Matrix< std::vector< Vector > > PLMD::RMSDCoreData::getDRotationDPositions ( bool  inverseTransform = false)

◆ getDRotationDReference()

Matrix< std::vector< Vector > > PLMD::RMSDCoreData::getDRotationDReference ( bool  inverseTransform = false)

◆ getPositionsCenter()

Vector PLMD::RMSDCoreData::getPositionsCenter ( )

◆ getPositionsCenterIsRemoved()

bool PLMD::RMSDCoreData::getPositionsCenterIsRemoved ( )
inline

◆ getReferenceCenter()

Vector PLMD::RMSDCoreData::getReferenceCenter ( )

◆ getReferenceCenterIsRemoved()

bool PLMD::RMSDCoreData::getReferenceCenterIsRemoved ( )
inline

◆ getRotationMatrixPositionsToReference()

Tensor PLMD::RMSDCoreData::getRotationMatrixPositionsToReference ( )

◆ getRotationMatrixReferenceToPositions()

Tensor PLMD::RMSDCoreData::getRotationMatrixReferenceToPositions ( )

◆ setPositionsCenter()

void PLMD::RMSDCoreData::setPositionsCenter ( Vector  v)
inline

◆ setPositionsCenterIsRemoved()

void PLMD::RMSDCoreData::setPositionsCenterIsRemoved ( bool  t)
inline

◆ setReferenceCenter()

void PLMD::RMSDCoreData::setReferenceCenter ( Vector  v)
inline

◆ setReferenceCenterIsRemoved()

void PLMD::RMSDCoreData::setReferenceCenterIsRemoved ( bool  t)
inline

Member Data Documentation

◆ alEqDis

bool PLMD::RMSDCoreData::alEqDis
private

◆ align

const std::vector<double>& PLMD::RMSDCoreData::align
private

◆ cpositions

Vector PLMD::RMSDCoreData::cpositions
private

◆ cpositions_is_calculated

bool PLMD::RMSDCoreData::cpositions_is_calculated
private

◆ cpositions_is_removed

bool PLMD::RMSDCoreData::cpositions_is_removed
private

◆ creference

Vector PLMD::RMSDCoreData::creference
private

◆ creference_is_calculated

bool PLMD::RMSDCoreData::creference_is_calculated
private

◆ creference_is_removed

bool PLMD::RMSDCoreData::creference_is_removed
private

◆ d

std::vector<Vector> PLMD::RMSDCoreData::d
private

◆ ddist_drotation

Tensor PLMD::RMSDCoreData::ddist_drotation
private

◆ ddist_drr01

Tensor PLMD::RMSDCoreData::ddist_drr01
private

◆ displace

const std::vector<double>& PLMD::RMSDCoreData::displace
private

◆ dist

double PLMD::RMSDCoreData::dist
private

◆ distanceIsMSD

bool PLMD::RMSDCoreData::distanceIsMSD
private

◆ drotation_drr01

Tensor PLMD::RMSDCoreData::drotation_drr01[3][3]
private

◆ eigenvals

std::vector<double> PLMD::RMSDCoreData::eigenvals
private

◆ eigenvecs

Matrix<double> PLMD::RMSDCoreData::eigenvecs
private

◆ hasDistance

bool PLMD::RMSDCoreData::hasDistance
private

◆ isInitialized

bool PLMD::RMSDCoreData::isInitialized
private

◆ positions

const std::vector<Vector>& PLMD::RMSDCoreData::positions
private

◆ reference

const std::vector<Vector>& PLMD::RMSDCoreData::reference
private

◆ retrieve_only_rotation

bool PLMD::RMSDCoreData::retrieve_only_rotation
private

◆ rotation

Tensor PLMD::RMSDCoreData::rotation
private

◆ rr00

double PLMD::RMSDCoreData::rr00
private

◆ rr11

double PLMD::RMSDCoreData::rr11
private

◆ safe

bool PLMD::RMSDCoreData::safe
private

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