Loading...
Searching...
No Matches
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)
 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
void calcPositionsCenter ()
void calcReferenceCenter ()
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.
void doCoreCalcWithCloseStructure (bool safe, bool alEqDis, const Tensor &rotationPosClose, const Tensor &rotationRefClose, std::array< std::array< Tensor, 3 >, 3 > &drotationPosCloseDrr01)
std::vector< VectorgetAlignedPositionsToReference ()
std::vector< VectorgetAlignedReferenceToPositions ()
std::vector< VectorgetCenteredPositions ()
std::vector< VectorgetCenteredReference ()
std::vector< VectorgetDDistanceDPositions ()
std::vector< VectorgetDDistanceDReference ()
std::vector< VectorgetDDistanceDReferenceSOMA ()
 this version does not calculate the derivative of rotation matrix as needed for SOMA
double getDistance (bool squared)
 just retrieve the distance already calculated
Matrix< std::vector< Vector > > getDRotationDPositions (bool inverseTransform=false)
Matrix< std::vector< Vector > > getDRotationDReference (bool inverseTransform=false)
const std::array< std::array< Tensor, 3 >, 3 > & getDRotationDRr01 () const
Vector getPositionsCenter ()
bool getPositionsCenterIsRemoved ()
Vector getReferenceCenter ()
bool getReferenceCenterIsRemoved ()
Tensor getRotationMatrixPositionsToReference ()
Tensor getRotationMatrixReferenceToPositions ()
void setPositionsCenter (Vector v)
void setPositionsCenterIsRemoved (bool t)
void setReferenceCenter (Vector v)
void setReferenceCenterIsRemoved (bool t)

Private Attributes

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

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.

◆ doCoreCalcWithCloseStructure()

void PLMD::RMSDCoreData::doCoreCalcWithCloseStructure ( bool safe,
bool alEqDis,
const Tensor & rotationPosClose,
const Tensor & rotationRefClose,
std::array< std::array< Tensor, 3 >, 3 > & drotationPosCloseDrr01 )

◆ 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)

◆ getDRotationDRr01()

const std::array< std::array< Tensor, 3 >, 3 > & PLMD::RMSDCoreData::getDRotationDRr01 ( ) const

◆ 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

std::array<std::array<Tensor,3>,3> PLMD::RMSDCoreData::drotation_drr01
private

◆ eigenvals

Vector4d PLMD::RMSDCoreData::eigenvals
private

◆ eigenvecs

Tensor4d 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: