26 #pragma omp parallel for    27     for(
size_t ui=0;ui<data.size();ui++)
    42     for(
int ui=0;ui<8;ui++)
    47         p=
Point3D(2*(ui&1)-1, 2*((ui&2)>>1) -1, 2*((ui&4)>>2) -1);
    50         for(
unsigned int uj=0;uj<h.size();uj++)
    53             localData[offset].setPos(p*h[uj].getPosRef());
    54             localData[offset].setMassToCharge(h[uj].getMassToCharge());
    64     spacing=latticeSpacing;
    76     if(std::isnan(massToCharge))
    84     for(
unsigned int ui=0; ui<3; ui++)
   121         const float *massToCFace, 
const Point3D &p)
   123     spacing=latticeSpacing;
   124     massToChargeCorner=massToCCorner;
   125     for(
unsigned int ui=0;ui<3;ui++)
   126         massToChargeFace[ui]=massToCFace[ui];
   144     for(
unsigned int ui=0;ui<3;ui++)
   145         atomList[1+ui].setMassToCharge(massToChargeFace[ui]);
   152     for(
unsigned int ui=0; ui<3; ui++)
   175     float xMax,yMax,zMax;
   181     IonHit curAtom = atomList[0];
   182     for(
float fX=0.0f; fX<xMax; fX+=spacing)
   184         for(
float fY=0.0f; fY<yMax; fY+=spacing)
   186             for(
float fZ=0.0f; fZ<zMax; fZ+=spacing)
   195     curAtom = atomList[1];
   196     for(
float fX=spacing/2.0f; fX<xMax; fX+=spacing)
   198         for(
float fY=spacing/2.0f; fY<yMax; fY+=spacing)
   200             for(
float fZ=0.0f; fZ<zMax; fZ+=spacing)
   209     curAtom = atomList[2];
   210     for(
float fX=spacing/2.0f; fX<xMax; fX+=spacing)
   212         for(
float fY=0.0; fY<yMax; fY+=spacing)
   214             for(
float fZ=spacing/2.0f; fZ<zMax; fZ+=spacing)
   223     curAtom = atomList[3];
   224     for(
float fX=0.0; fX<xMax; fX+=spacing)
   226         for(
float fY=spacing/2.0f; fY<yMax; fY+=spacing)
   228             for(
float fZ=spacing/2.0f; fZ<zMax; fZ+=spacing)
   240         const float massToCCentre, 
const Point3D &p)
   242     spacing=latticeSpacing;
   243     massToChargeCorner=massToCCorner;
   244     massToChargeCentre=massToCCentre;
   269     for(
unsigned int ui=0; ui<3; ui++)
   286     float xMax,yMax,zMax;
   292     IonHit curAtom = atomList[0];
   293     IonHit curCentreAtom = atomList[1];
   294     for(
float fX=0.0f; fX<xMax; fX+=spacing)
   296         for(
float fY=0.0f; fY<yMax; fY+=spacing)
   298             for(
float fZ=0.0f; fZ<zMax; fZ+=spacing)
   305                 pCentre=
Point3D(fX+spacing/2.0f,
   306                     fY+spacing/2.0f,fZ+spacing/2.0f);
   310                     curCentreAtom.
setPos(pCentre);
   326 bool runGenerateTests()
   333     TEST(pts.size() > 800,
"ion count");
   337     for(
unsigned int ui=0;ui<3;ui++)
   339         TEST(TOL_EQ_V(bc.getSize(0),10,1.1),
"cube size");   
 unsigned int generateLattice()
unsigned int generateLattice()
void setPos(const Point3D &pos)
A 3D point data class storage. 
FaceCentredCubicGen(float latticeSpacing, float mToCCorner, const float *mToCFace, const Point3D &p)
std::vector< IonHit > localData
Helper class to define a bounding cube. 
void setMassToCharge(float newMassToCharge)
This is a data holding class for POS file ions, from. 
BodyCentredCubicGen(float latticeSpacing, float mToCCentre, const float mToCCorner, const Point3D &p)
float getValue(unsigned int ui) const
Get value of ith dimension (0, 1, 2) 
SimpleCubicGen(float latticeSpacing, float massToC, const Point3D &p)
unsigned int generateLattice()
virtual void extractPositions(std::vector< Point3D > &data)
void setBounds(float xMin, float yMin, float zMin, float xMax, float yMax, float zMax)
Set the bounds by passing in minima and maxima of each dimension.