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)
 
 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...
 
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. More...
 
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 More...
 
double getDistance (bool squared)
 just retrieve the distance already calculated More...
 
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: