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.