本文整理汇总了C++中Observable::GetUnit方法的典型用法代码示例。如果您正苦于以下问题:C++ Observable::GetUnit方法的具体用法?C++ Observable::GetUnit怎么用?C++ Observable::GetUnit使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Observable
的用法示例。
在下文中一共展示了Observable::GetUnit方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: IsPointInBoundary
//Returns whether a point is within the boundary
bool PhaseSpaceBoundary::IsPointInBoundary( DataPoint * TestDataPoint, bool silence )
{
for (unsigned int nameIndex = 0; nameIndex < allNames.size(); ++nameIndex )
{
//Check if test Observable exists in the DataPoint
Observable * testObservable = TestDataPoint->GetObservable( allNames[nameIndex], silence );
if ( testObservable->GetUnit() == "NameNotFoundError" )
{
cerr << "Observable \"" << allNames[nameIndex] << "\" expected but not found" << endl;
return false;
}
else
{
//Check if the Observable fits
if ( !allConstraints[nameIndex]->CheckObservable(testObservable) )
{
return false;
}
else if( allConstraints[nameIndex]->IsDiscrete() )
{
vector<double> temp_vec = allConstraints[nameIndex]->GetValues();
for( unsigned int i=0; i< temp_vec.size(); ++i )
{
if( fabs( testObservable->GetValue() - temp_vec[i] ) < DOUBLE_TOLERANCE_PHASE )
{
Observable* temp = new Observable( testObservable->GetName(), temp_vec[i], testObservable->GetUnit() );
TestDataPoint->SetObservable( testObservable->GetName(), temp );
delete temp;
}
}
}
}
}
//Point is within the boundary
return true;
}
示例2: DataPoint
//Return a list of data points
//Each should take the data average value of each continuous observable
//Each should represent one combination of possible discrete values
vector<DataPoint*> PhaseSpaceBoundary::GetDiscreteCombinations() const
{
if( storedCombinationID == uniqueID && !StoredCombinations.empty() )
{
return StoredCombinations;
}
while( !StoredCombinations.empty() )
{
if( StoredCombinations.back() != NULL ) delete StoredCombinations.back();
StoredCombinations.pop_back();
}
//Calculate all possible combinations of discrete observables
vector<string> thisAllNames = this->GetAllNames();
vector<vector<double> > discreteValues;
vector<string> discreteNames, continuousNames;
vector<vector<double> > discreteCombinations = StatisticsFunctions::DiscreteCombinations( &thisAllNames, this, discreteNames, continuousNames, discreteValues );
(void) continuousNames;
//Create the data points to return
vector<DataPoint*> newDataPoints;
DataPoint* tempPoint = this->GetMidPoint();
if( tempPoint == NULL ) return newDataPoints;
for( unsigned int combinationIndex = 0; combinationIndex < discreteCombinations.size(); ++combinationIndex )
{
DataPoint* templateDataPoint = new DataPoint( *tempPoint );
//Output the discrete values for this combination
for( unsigned int discreteIndex = 0; discreteIndex < discreteNames.size(); ++discreteIndex )
{
//Set the data point
Observable* oldValue = templateDataPoint->GetObservable( discreteNames[discreteIndex] );
Observable* newValue = new Observable( oldValue->GetName(), discreteCombinations[combinationIndex][discreteIndex], oldValue->GetUnit() );
templateDataPoint->SetObservable( discreteNames[discreteIndex], newValue );
delete newValue;
}
newDataPoints.push_back( templateDataPoint );
}
delete tempPoint;
StoredCombinations = newDataPoints;
storedCombinationID = uniqueID;
return newDataPoints;
}
示例3: samplePoint
//.........这里部分代码省略.........
for ( int binIndex = 0; binIndex < HISTOGRAM_BINS; ++binIndex )
{
histogramBinHeights[observableIndex][unsigned(binIndex)] /= normalisation;
}
}
//Find the maximum gradient
vector<double> midPoints;
string maximumGradientObservable, unit;
double maximumGradient=0.;
double lowPoint=0.;
double splitPoint=0.;
double highPoint=0.;
for (unsigned int observableIndex = 0; observableIndex < doIntegrate.size(); ++observableIndex )
{
//Find the size of the cell in this observable
IConstraint * temporaryConstraint = currentCell->GetConstraint( doIntegrate[observableIndex] );
double cellMaximum = temporaryConstraint->GetMaximum();
double cellMinimum = temporaryConstraint->GetMinimum();
//Store the mid point
double observableMiddle = cellMinimum + ( ( cellMaximum - cellMinimum ) / 2.0 );
midPoints.push_back(observableMiddle);
for ( int binIndex = 1; binIndex < HISTOGRAM_BINS; ++binIndex )
{
double gradient = abs( histogramBinHeights[observableIndex][ unsigned(binIndex - 1) ] - histogramBinHeights[observableIndex][unsigned(binIndex)] );
//Update maximum
if ( ( observableIndex == 0 && binIndex == 1 ) || gradient > maximumGradient )
{
maximumGradient = gradient;
maximumGradientObservable = doIntegrate[observableIndex];
unit = temporaryConstraint->GetUnit();
highPoint = cellMaximum;
splitPoint = ( histogramBinMiddles[observableIndex][ unsigned(binIndex - 1) ] + histogramBinMiddles[observableIndex][unsigned(binIndex)] ) / 2.0;
lowPoint = cellMinimum;
}
}
}
//If the maximum gradient is within tolerance, the cell is finished
if ( maximumGradient < MAXIMUM_GRADIENT_TOLERANCE )
{
//Store the finished cell
finishedCells.push_back(currentCell);
//Create a data point at the center of the current cell
DataPoint* cellCenter = new DataPoint( InputPoint->GetAllNames() );
for (unsigned int observableIndex = 0; observableIndex < doIntegrate.size(); ++observableIndex )
{
//Use the mid points for the integrable values
Observable * temporaryObservable = cellCenter->GetObservable( doIntegrate[observableIndex] );
Observable* temporaryObservable2 = new Observable( temporaryObservable->GetName(), midPoints[observableIndex], temporaryObservable->GetUnit() );
cellCenter->SetObservable( doIntegrate[observableIndex], temporaryObservable2 );
delete temporaryObservable2;
}
for (unsigned int observableIndex = 0; observableIndex < dontIntegrate.size(); ++observableIndex )
{
//Use given values for unintegrable observables
Observable * temporaryObservable = new Observable( *(InputPoint->GetObservable( dontIntegrate[observableIndex] )) );
cellCenter->SetObservable( dontIntegrate[observableIndex], temporaryObservable );
delete temporaryObservable;
}
//Store the center point