Top Banner
FlyE Generated by Doxygen 1.8.8 Mon Jan 12 2015 21:36:51
115
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • FlyE

    Generated by Doxygen 1.8.8

    Mon Jan 12 2015 21:36:51

  • Contents

    1 Main Page 1

    2 Hierarchical Index 5

    2.1 Class Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    3 Class Index 7

    3.1 Class List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    4 File Index 9

    4.1 File List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    5 Class Documentation 11

    5.1 AcceleratorConfig Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    5.1.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    5.1.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    5.1.2.1 AcceleratorConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    5.1.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    5.1.3.1 populate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    5.1.3.2 printOn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    5.1.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    5.1.4.1 nElectrodes_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    5.1.4.2 PAname_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    5.2 AcceleratorGeometry Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    5.2.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    5.2.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    5.2.2.1 AcceleratorGeometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    5.2.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    5.2.3.1 applyElectrodeVoltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    5.2.3.2 electrodeLocations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    5.2.3.3 getAcceleratorConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    5.2.3.4 makeSmartField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    5.2.3.5 makeVectorField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    5.3 AntiHydrogen Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

  • iv CONTENTS

    5.3.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    5.3.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    5.3.2.1 AntiHydrogen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    5.3.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    5.3.3.1 ionisationLim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    5.3.3.2 ionise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    5.3.3.3 isDead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    5.3.3.4 isNeutralised . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    5.3.3.5 ITlim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    5.3.3.6 k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    5.3.3.7 mu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    5.3.3.8 n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    5.3.3.9 neutralisationTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    5.3.3.10 neutralise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    5.3.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    5.3.4.1 ITlim_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    5.4 ConfigLoader Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    5.4.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    5.4.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    5.4.2.1 ConfigLoader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    5.5 Electrode Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    5.5.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    5.5.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    5.5.2.1 Electrode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    5.5.2.2 Electrode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    5.5.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    5.5.3.1 applyVoltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    5.5.3.2 getVoltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    5.5.3.3 import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    5.6 ElectrodeLocator Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    5.6.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    5.6.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    5.6.2.1 ElectrodeLocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    5.6.2.2 ElectrodeLocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    5.6.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    5.6.3.1 existsAt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    5.6.3.2 existsAt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    5.7 ExponentialScheme Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    5.7.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    5.7.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • CONTENTS v

    5.7.2.1 ExponentialScheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    5.7.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    5.7.3.1 getVoltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    5.7.3.2 isActive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    5.8 ez::ezETAProgressBar Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    5.9 std::hash< tuple3Dint > Struct Template Reference . . . . . . . . . . . . . . . . . . . . . . . . . 29

    5.9.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    5.9.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    5.9.2.1 operator() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    5.10 HDF5Container1D< T > Struct Template Reference . . . . . . . . . . . . . . . . . . . . . . . . . 30

    5.10.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    5.10.2 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    5.10.2.1 vecs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    5.11 InstantaneousScheme Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    5.11.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    5.11.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    5.11.2.1 InstantaneousScheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    5.11.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    5.11.3.1 getVoltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    5.11.3.2 isActive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    5.12 IntegerDistribution Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    5.12.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    5.12.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    5.12.2.1 operator() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    5.13 MovingTrapScheme Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    5.13.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    5.13.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    5.13.2.1 MovingTrapScheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    5.13.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    5.13.3.1 frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    5.13.3.2 getInitialVoltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    5.13.3.3 getVoltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    5.13.3.4 isActive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    5.14 Particle Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    5.14.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    5.14.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    5.14.2.1 Particle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    5.14.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    5.14.3.1 checkMaxField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    5.14.3.2 collide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • vi CONTENTS

    5.14.3.3 getIntLoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    5.14.3.4 getLoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    5.14.3.5 getLocDim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    5.14.3.6 getVel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    5.14.3.7 getVelDim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    5.14.3.8 isDead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    5.14.3.9 maxField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    5.14.3.10 recallLoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    5.14.3.11 recallLoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    5.14.3.12 recallVel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    5.14.3.13 recallVel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    5.14.3.14 setLoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    5.14.3.15 setLoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    5.14.3.16 setVel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    5.14.3.17 setVel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    5.14.3.18 succeed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    5.14.3.19 succeeded . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    5.15 ParticleGenerator< PType > Class Template Reference . . . . . . . . . . . . . . . . . . . . . . . 43

    5.15.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    5.15.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    5.15.2.1 ParticleGenerator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    5.15.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    5.15.3.1 generateNormDist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    5.15.3.2 generateNormDist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    5.15.3.3 generateParticles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    5.15.3.4 generateParticles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    5.15.3.5 generateSynchronousParticle . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    5.15.3.6 generateSynchronousParticle . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    5.15.3.7 generateUniformDist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    5.15.3.8 generateUniformDist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    5.15.3.9 generateUniformVels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    5.15.3.10 getParticles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    5.16 ParticlesConfig Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    5.16.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    5.16.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    5.16.2.1 ParticlesConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    5.16.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    5.16.3.1 distRadius . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    5.16.3.2 populate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    5.16.3.3 printOn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • CONTENTS vii

    5.16.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    5.16.4.1 k_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    5.16.4.2 positionDist_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    5.17 SimulationConfig Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    5.17.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    5.17.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    5.17.2.1 SimulationConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    5.17.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    5.17.3.1 populate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    5.17.3.2 printOn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    5.17.3.3 setAccelerationScheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    5.17.3.4 setDuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    5.17.3.5 setInglisTeller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    5.17.3.6 setMaxVoltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    5.17.3.7 setTargetVel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    5.17.3.8 setTimeStep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    5.17.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    5.17.4.1 inglisTeller_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    5.18 SimulationNumbers Struct Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    5.18.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    5.18.2 Friends And Related Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . 55

    5.18.2.1 operator

  • viii CONTENTS

    5.21.3.2 at . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    5.21.3.3 gradientXat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    5.21.3.4 magnitudeAt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    5.21.3.5 magnitudeAt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    5.22 StorageConfig Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    5.22.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    5.22.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    5.22.2.1 StorageConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    5.22.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    5.22.3.1 populate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    5.22.3.2 printOn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    5.22.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    5.22.4.1 compression_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    5.23 SubConfig Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    5.23.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    5.23.2 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    5.23.2.1 populate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    5.23.2.2 printOn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    5.23.3 Friends And Related Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . 66

    5.23.3.1 operator

  • CONTENTS ix

    5.27 VectorField Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

    5.27.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    5.27.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    5.27.2.1 VectorField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    5.27.2.2 VectorField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    5.27.2.3 VectorField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    5.27.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    5.27.3.1 at . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    5.27.3.2 magnitudeAt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    5.27.3.3 magnitudeAt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    5.27.3.4 sumVectorFields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    5.27.3.5 vectorMagnitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    5.28 VoltageScheme Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    5.28.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

    5.28.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    5.28.2.1 VoltageScheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    5.28.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    5.28.3.1 getInitialVoltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    5.28.3.2 getVoltages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    5.28.3.3 isActive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    5.29 Writer Class Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

    5.29.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    5.29.2 Constructor & Destructor Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    5.29.2.1 Writer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    5.29.3 Member Function Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    5.29.3.1 countParams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    5.29.3.2 startParams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    5.29.4 Member Data Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

    5.29.4.1 typeNames_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

    6 File Documentation 83

    6.1 AcceleratorGeometry.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    6.1.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

    6.2 AntiHydrogen.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

    6.2.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    6.3 ConfigLoader.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    6.3.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    6.4 Electrode.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    6.4.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    6.5 ElectrodeLocator.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • x CONTENTS

    6.5.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

    6.6 FlyE.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

    6.6.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

    6.7 IntegerDistribution.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

    6.7.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

    6.8 Particle.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

    6.8.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

    6.9 ParticleGenerator.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

    6.9.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    6.10 PhysicalConstants.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    6.10.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

    6.11 Simulator.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

    6.11.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

    6.12 SmartField.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

    6.12.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

    6.13 SubConfig.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

    6.13.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    6.14 tupleDefs.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    6.14.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

    6.14.2 Typedef Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

    6.14.2.1 tuple3Dint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

    6.15 VectorField.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

    6.15.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

    6.16 VoltageScheme.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

    6.16.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

    6.17 Writer.h File Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

    6.17.1 Detailed Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

    Index 105

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • Chapter 1

    Main Page

    FlyE is a piece of software written in C++ for simulating the acceleration of particles in an electric field. This build isspecifically for simulation the acceleration of Hydrogen/Antihydrogen for the AEgIS experiment at CERN.

    The software is fully object-oriented and is documented in these pages. An explanation of the basic usage of thesoftware as well as a manual for the config file follows.

    Basic Usage

    FlyE does not deal directly with the calculation of electric fields. It is designed to import electric field files that havebeen produced by EXSIMECK, which in turn takes SIMION files as input. The naming convention for the electricfield files is [PA name]_E[electrode number]_L[layer number]_[X/Y/Z].dat. A mostly un-documented helper script, makefields.py, to run EXSIMECK for an entire geometry as a batch job is includedin the Non-FlyE directory. This script also generates the [accelerator] section of the FlyE configuration file.

    Including "FlyE.h" is necessary to access any of FlyEs classes. The HDF5 and Blitz++ libraries must be installedand compilation requires a version of G++ with support for C++11. Also, the config file parser inih should bepresent in the working directory, as should the ezETAProgressBar.hpp script. The following compiler/linkerflags are also required:

    -DBZ_THREADSAFE

    -D_GLIBCXX_PARALLEL

    -fopenmp

    -lblitz

    -lpthread

    -lconfig++

    The following optimisations are recommended:

    -O3

    -march=native

    -ffast-math

    -pipe

    -flto

    Below is an example of a basic program to run one simulation from one config file, print out some basic statisticsfrom the simulation and write the results to an HDF5 file.

  • 2 Main Page

    #include #include "FlyE.h"

    int main(int argc, char* argv[]) {ConfigLoader myConfig("/home/jamie/git/FlyE/FlyE/flyE.conf");

    AcceleratorGeometry myAccelerator(myConfig.getAcceleratorConfig());myAccelerator.importElectrodes();

    ParticleGenerator myGenerator(myConfig.getParticlesConfig(),myConfig.getAcceleratorConfig());

    myGenerator.generateParticles();std::vector particles = myGenerator.getParticles();

    Simulator mySimulator(myAccelerator, particles,myConfig.getSimulationConfig(),myConfig.getStorageConfig());

    mySimulator->run();

    SimulationNumbers stats = mySimulator->getBasicStats();std::cout

  • 3 temperature - The temperature of the distribution of particles (kelvin, float).

    n - The principal quantum number of the particles (integer).

    k_dist - How to distribute the values of k, the Stark quantum number. Can be one of the following:(string)

    * single - All particles take the given value of k.

    * uniform - Values of k are uniformly distributed between 1 and (n-1).

    * triangle - Values of k are distributed between 1 and (n-1) according to a triangle distribution whichis maximum at (n-1).

    k - If k_dist is single, then all particles have this value of k.

    storage

    store_trajectories - Whether to store the complete trajectories of the particles, or just theirstart and end locations/velocities (boolean).

    store_collisions - Whether to store any data at all for particles which collide with the acceleratorgeometry (boolean).

    compression - The level of GZIP compression to apply in the HDF5 output files (1-9, where 9 is maxcompression. integer).

    Output file specification

    Output files are written in the HDF5 scienfic data format. The hierarchy inside this files is as follows.

    Groups

    Succeeded - for particles which reach the end of the accelerator.

    Collided - for particles which collide with the accelerator geometry.

    Ionised - for particles which are ionised in the course of the simulation.

    Remaining - for particles which were still active at the end of the simulation.

    Datasets

    data - A 4D array of the particle trajectories. This is arranged like so:

    1st dimension - Index of particle.

    2nd dimension - Timestep index. If trajectories are not being stored, then 1 is initial and 2 is final.

    3rd dimension - Phase axis: 1 for location, 2 for velocity.

    4th dimension - Cartesian axis - 1 for x, 2 for y, 3 for z.

    neutralTimes - The times at which particles dipole moments were neutralised. -1 if never neutralised.

    ks - The k-values of the particles.

    maxFields - The maximum |E| encountered by the particles.

    So an example address in the file would be /Succeeded/data for the trajectories of successful particles.

    Use on Amazon Web Services

    The easiest way to get FlyE running on an EC2 instance with an Ubuntu AMI is to run these commands:

    Update repositories with sudo apt-get update

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 4 Main Page

    Install everything we need with sudo apt-get install git gcc g++ make libhdf5-devlibblitz-dev

    Clone the git remote repository from GitHub: git clone [.git remote url] cd into the Release directory and run make

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • Chapter 2

    Hierarchical Index

    2.1 Class Hierarchy

    This inheritance list is sorted roughly, but not completely, alphabetically:

    AcceleratorGeometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Array

    ElectrodeLocator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23VectorField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

    Electrode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20ConfigLoader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19ez::ezETAProgressBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29std::hash< tuple3Dint > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29HDF5Container1D< T > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30HDF5Container1D< float > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30HDF5Container1D< int > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30IntegerDistribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    SingleDistribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58TriangleDistribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69UniformDistribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    Particle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    AntiHydrogen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    ParticleGenerator< PType > . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43SimulationNumbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56SmartField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59SubConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    AcceleratorConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11ParticlesConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48SimulationConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51StorageConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    VoltageScheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    MovingTrapScheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35SynchronousParticleScheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    ExponentialScheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25InstantaneousScheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    Writer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

  • 6 Hierarchical Index

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • Chapter 3

    Class Index

    3.1 Class List

    Here are the classes, structs, unions and interfaces with brief descriptions:

    AcceleratorConfigFor storing configuration data pertaining to the accelerator geometry . . . . . . . . . . . . . . 11

    AcceleratorGeometryA class for handling the complete geometry of the accelerator . . . . . . . . . . . . . . . . . . 13

    AntiHydrogenAn implementation of Particle with some specific properties . . . . . . . . . . . . . . . . . . . 15

    ConfigLoaderA class for loading a config file and storing its contents appropriately . . . . . . . . . . . . . . 19

    ElectrodeRepresents a single electrode in the accelerator geometry . . . . . . . . . . . . . . . . . . . 20

    ElectrodeLocatorA class for finding the physical location of electrodes in an E-Field . . . . . . . . . . . . . . . 23

    ExponentialSchemeA SynchronousParticleScheme which exponentially increases the voltage on sections as thesynchronous particle enters them . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    ez::ezETAProgressBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29std::hash< tuple3Dint >

    Template specialisation for std::hash . . . . . . . . . . . . . . . . . . . . . . . . . . 29HDF5Container1D< T >

    A basic container for the HDF5 components for the scalar data that will be stored . . . . . . . 30InstantaneousScheme

    A SynchronousParticleScheme that switches on sections instantaneously as the synchronousparticle enters them . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    IntegerDistributionA wrapper class for some C++11 RNGs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    MovingTrapSchemeA VoltageScheme which appplies a periodic oscillating voltage to create a moving trap . . . . 35

    ParticleBasic/generic particle class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    ParticleGenerator< PType >A class to generate a vector of particles for the simulation . . . . . . . . . . . . . . . . . . . . 43

    ParticlesConfigFor storing configuration data pertaining to the particles in the simulation . . . . . . . . . . . . 48

    SimulationConfigFor storing configuration data pertaining to the nature of the simulation . . . . . . . . . . . . . 51

    SimulationNumbersA struct which stores the numbers of each particle type . . . . . . . . . . . . . . . . . . . . . 55

  • 8 Class Index

    SimulatorA class to actually run the simulation we want . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    SingleDistributionA single integer. Dirac delta distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    SmartFieldA clever way to access the superposed fields of electrodes . . . . . . . . . . . . . . . . . . . 59

    StorageConfigFor storing configuration data pertaining to the storage of simulation results . . . . . . . . . . 62

    SubConfigAbstract class which the config data containers inherit from . . . . . . . . . . . . . . . . . . . 64

    SynchronousParticleSchemeAn abstract class for VoltageSchemes that rely on a synchronous particle . . . . . . . . . . . 66

    TriangleDistributionA triangular integer distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

    UniformDistributionUniform distribution of integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    VectorFieldA general 3D vector field class, with basic operators . . . . . . . . . . . . . . . . . . . . . . . 72

    VoltageSchemeAn abstract class for voltage schemes for the accelerator . . . . . . . . . . . . . . . . . . . . 76

    WriterA class for writing the simulation data out to a file . . . . . . . . . . . . . . . . . . . . . . . . 80

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • Chapter 4

    File Index

    4.1 File List

    Here is a list of all documented files with brief descriptions:

    AcceleratorGeometry.hThis file contains the AcceleratorGeometry class . . . . . . . . . . . . . . . . . . . . . . . . 83

    AntiHydrogen.hThis file contains the AntiHydrogen class . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

    ConfigLoader.hThis file contains the ConfigLoader class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    Electrode.hThis file contains the Electrode class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    ElectrodeLocator.hThis file contains the ElectrodeLocator class . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    ezETAProgressBar.hpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??FlyE.h

    This file includes all the necessary classes for a FlyE program . . . . . . . . . . . . . . . . . 90IntegerDistribution.h

    This file contains the (abstract) IntegerDistribution class and all its subclasses . . . . . . . . . 90Particle.h

    This file contains the Particle class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91ParticleGenerator.h

    This file contains the ParticleGenerator class . . . . . . . . . . . . . . . . . . . . . . . . . . 93PhysicalConstants.h

    All the constants needed in the program are stored here in the namespace "Physics" . . . . . 94Simulator.h

    This file contains the Simulator class, and the SimuationNumbers struct . . . . . . . . . . . . 95SmartField.h

    This file contains the SmartField class and the std::hash specialization . . . . . . . 96SubConfig.h

    This file contains the SubConfig class, and its subclasses . . . . . . . . . . . . . . . . . . . . 97tupleDefs.h

    Just contains the typedefs for 3D integer and float tuples . . . . . . . . . . . . . . . . . . . . 99VectorField.h

    This file contains the VectorField class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101VoltageScheme.h

    This file contains the VoltageScheme abstract class, and its subclasses . . . . . . . . . . . . 102Writer.h

    This file contains the Writer class and the HDF5Container1D struct . . . . . . . . . . . . . . . 103

  • 10 File Index

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • Chapter 5

    Class Documentation

    5.1 AcceleratorConfig Class Reference

    For storing configuration data pertaining to the accelerator geometry.

    #include

    Inheritance diagram for AcceleratorConfig:

    AcceleratorConfig

    SubConfig

    Collaboration diagram for AcceleratorConfig:

    AcceleratorConfig

    SubConfig

  • 12 Class Documentation

    Public Member Functions

    AcceleratorConfig (INIReader &reader)

    Generates the object using the INIReader.

    void populate (INIReader &reader)

    Populates the member variables of the object using the data in the INIReader object.

    const std::string & datDirectory () const

    Directory in which the E-Field .dat files are stored.

    int nElectrodes () const

    Number of electrodes in the accelerator.

    const std::string & PAname () const

    Prefix for EXSIMECK-named files.

    int x () const

    Dimension in x of accelerator geometry.

    int y () const

    Dimension in y of accelerator geometry.

    int z () const

    Dimension in z of accelerator geometry.

    Protected Member Functions

    void printOn (std::ostream &out)

    Acts on an ostream to give formatted contents of member variables.

    Protected Attributes

    int nElectrodes_ std::string datDirectory_

    Directory in which the E-Field .dat files are stored.

    std::string PAname_

    prefix for EXSIMECK-named files

    int x_

    x, y, z dimensions of the accelerator

    int y_ int z_

    5.1.1 Detailed Description

    For storing configuration data pertaining to the accelerator geometry.

    5.1.2 Constructor & Destructor Documentation

    5.1.2.1 AcceleratorConfig::AcceleratorConfig ( INIReader & reader )

    Generates the object using the INIReader.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.2 AcceleratorGeometry Class Reference 13

    Parameters

    reader An INIReader object, usually supplied by ConfigLoader

    Returns

    AcceleratorConfig objectPopulates the member variables of the object using the data in the INIReader object.

    Parameters

    reader An INIReader object, usually supplied by constructor

    5.1.3 Member Function Documentation

    5.1.3.1 void AcceleratorConfig::populate ( INIReader & reader ) [virtual]

    Populates the member variables of the object using the data in the INIReader object.

    Parameters

    reader An INIReader object, usually supplied by constructor

    Implements SubConfig.

    5.1.3.2 void AcceleratorConfig::printOn ( std::ostream & out ) [protected], [virtual]

    Acts on an ostream to give formatted contents of member variables.

    Java-inspired method to print out the data in the object.

    Implements SubConfig.

    5.1.4 Member Data Documentation

    5.1.4.1 int AcceleratorConfig::nElectrodes_ [protected]

    Number of electrodes in the accelerator

    5.1.4.2 std::string AcceleratorConfig::PAname_ [protected]

    prefix for EXSIMECK-named files

    Acts on an ostream to give formatted contents of member variables. Java-inspired method to print out the data inthe object.

    The documentation for this class was generated from the following files:

    SubConfig.h

    SubConfig.cpp

    5.2 AcceleratorGeometry Class Reference

    A class for handling the complete geometry of the accelerator.

    #include

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 14 Class Documentation

    Public Member Functions

    AcceleratorGeometry (std::shared_ptr< AcceleratorConfig > config)

    Constructs from a shared_ptr to an AcceleratorConfig instance.

    void importElectrodes ()

    Tells all electrodes to import their E-Field files.

    void applyElectrodeVoltages (std::vector< float > voltages)

    Applies electrode voltages in order from the vector.

    SmartField makeSmartField ()

    Returns a SmartField for the current state of the geometry.

    VectorField makeVectorField ()

    Sums all the Electrodes and returns the superposed field.

    ElectrodeLocator electrodeLocations ()

    Returns an ElectrodeLocator for everything in the accelerator.

    std::shared_ptr< AcceleratorConfig > getAcceleratorConfig ()

    Returns a shared_ptr to the AcceleratorConfig instance associated with this geometry.

    Protected Attributes

    std::vector< std::shared_ptr< Electrode > > electrodes_

    For storing (pointers) to all the Electrodes in the accelerator.

    std::shared_ptr< AcceleratorConfig > config_

    The configuration data for the geometry.

    5.2.1 Detailed Description

    A class for handling the complete geometry of the accelerator.

    Predominantly a container for Electrodes.

    Author

    Jamie Parkinson [email protected]

    5.2.2 Constructor & Destructor Documentation

    5.2.2.1 AcceleratorGeometry::AcceleratorGeometry ( std::shared_ptr< AcceleratorConfig > config )

    Constructs from a shared_ptr to an AcceleratorConfig instance.

    Parameters

    config Contains all of the configuration/geometry data

    5.2.3 Member Function Documentation

    5.2.3.1 void AcceleratorGeometry::applyElectrodeVoltages ( std::vector< float > voltages )

    Applies electrode voltages in order from the vector.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.3 AntiHydrogen Class Reference 15

    Parameters

    voltages A vector of voltages to apply, respectively, to the electrodes

    5.2.3.2 ElectrodeLocator AcceleratorGeometry::electrodeLocations ( )

    Returns an ElectrodeLocator for everything in the accelerator.

    Returns

    ElectrodeLocator for all electrodes

    5.2.3.3 std::shared_ptr< AcceleratorConfig > AcceleratorGeometry::getAcceleratorConfig ( )

    Returns a shared_ptr to the AcceleratorConfig instance associated with this geometry.

    Returns

    A shared_ptr to the AcceleratorConfig instance associated with this geometry

    5.2.3.4 SmartField AcceleratorGeometry::makeSmartField ( )

    Returns a SmartField for the current state of the geometry.

    Returns

    Effectively the current field (given voltages) in the accelerator

    5.2.3.5 VectorField AcceleratorGeometry::makeVectorField ( )

    Sums all the Electrodes and returns the superposed field.

    Returns

    The total field in the accelerator

    The documentation for this class was generated from the following files:

    AcceleratorGeometry.h

    AcceleratorGeometry.cpp

    5.3 AntiHydrogen Class Reference

    An implementation of Particle with some specific properties.

    #include

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 16 Class Documentation

    Inheritance diagram for AntiHydrogen:

    AntiHydrogen

    Particle

    Collaboration diagram for AntiHydrogen:

    AntiHydrogen

    Particle

    Public Member Functions

    AntiHydrogen (float x, float y, float z, float vx, float vy, float vz, int n, int k)

    Constructor for starting initial position/velocity and quantum numbers.

    float mu () void neutralise (int t)

    Neutralises the particle.

    bool isNeutralised ()

    Whether the particle has been neutralised.

    int neutralisationTime ()

    Get time at which neutralisation occurred.

    void ionise ()

    Ionises the particle.

    int isDead ()

    Has the particle ionised or collided?

    float ITlim ()

    Gets the Inglis-Teller limit.

    float ionisationLim ()

    Gets the ionisation field limit.

    int k ()

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.3 AntiHydrogen Class Reference 17

    Gets the value of k.

    int n ()

    Gets the value of n.

    Protected Attributes

    int n_

    Principal quantum number.

    int k_

    Stark quantum number.

    float mu_

    Dipole moment.

    float ITlim_

    Inglis-Teller limit Solution of:

    float ionisationLim_

    Ionisation limit.

    bool ionised_

    Whether the particle has ionised.

    int neutralised_

    Neutralisation time. -1 if not neutralised.

    5.3.1 Detailed Description

    An implementation of Particle with some specific properties.

    Adds n, k, mu (which is a function of n and k), Inglis-Teller limit and ionisation and neutralisation related methodsand member variables

    Author

    Jamie Parkinson [email protected]

    5.3.2 Constructor & Destructor Documentation

    5.3.2.1 AntiHydrogen::AntiHydrogen ( float x, float y, float z, float vx, float vy, float vz, int n, int k )

    Constructor for starting initial position/velocity and quantum numbers.

    Parameters

    x x-coordinatey y-coordinatez z-coordinate

    vx velocity component in x-directionvy velocity component in y-directionvz velocity component in z-directionn Principal quantum numberk Stark quantum number

    5.3.3 Member Function Documentation

    5.3.3.1 float AntiHydrogen::ionisationLim ( )

    Gets the ionisation field limit.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 18 Class Documentation

    Returns

    The ionisation limit of this particle

    5.3.3.2 void AntiHydrogen::ionise ( )

    Ionises the particle.

    Sets ionised_ to true

    5.3.3.3 int AntiHydrogen::isDead ( )

    Has the particle ionised or collided?

    Shadows method in Particle

    Returns

    1 if collided, 2 if ionised, 0 otherwise

    5.3.3.4 bool AntiHydrogen::isNeutralised ( )

    Whether the particle has been neutralised.

    Returns

    true if neutralised, false if not

    5.3.3.5 float AntiHydrogen::ITlim ( )

    Gets the Inglis-Teller limit.

    Returns

    The Inglis-Teller limit of this particle

    5.3.3.6 int AntiHydrogen::k ( )

    Gets the value of k.

    Returns

    value of k

    5.3.3.7 float AntiHydrogen::mu ( )

    Getter for mu_ (dipole moment)

    Returns

    Dipole moment

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.4 ConfigLoader Class Reference 19

    5.3.3.8 int AntiHydrogen::n ( )

    Gets the value of n.

    Returns

    value of n

    5.3.3.9 int AntiHydrogen::neutralisationTime ( )

    Get time at which neutralisation occurred.

    Returns

    Time at which neutralisation occurred

    5.3.3.10 void AntiHydrogen::neutralise ( int t )

    Neutralises the particle.

    Sets neutralised_ to t

    Parameters

    t The time at which neutralisation occurred

    5.3.4 Member Data Documentation

    5.3.4.1 float AntiHydrogen::ITlim_ [protected]

    Inglis-Teller limit Solution of:

    32a0eFn(n+1) Rhc

    (n+1)2=

    32a0eFkn Rhcn2

    limIT =2ch(2n+1)R

    3a0en3(n+1)2(k+n+1)

    The documentation for this class was generated from the following files:

    AntiHydrogen.h AntiHydrogen.cpp

    5.4 ConfigLoader Class Reference

    A class for loading a config file and storing its contents appropriately.

    #include

    Public Member Functions

    ConfigLoader (std::string configFilePath)

    Constructs ConfigLoader from the file at the given path.

    std::shared_ptr< AcceleratorConfig > getAcceleratorConfig ()

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 20 Class Documentation

    Getter for AcceleratorConfig object.

    std::shared_ptr< ParticlesConfig > getParticlesConfig ()

    Getter for ParticlesConfig object.

    std::shared_ptr< SimulationConfig > getSimulationConfig ()

    Getter for SimulationConfig object.

    std::shared_ptr< StorageConfig > getStorageConfig ()

    Getter for StorageConfig object.

    5.4.1 Detailed Description

    A class for loading a config file and storing its contents appropriately.

    The class uses the inih library - https://code.google.com/p/inih/ - to load and parse config files.Configuration data is stored in appropriate structs for each domain of usagem, and getters for (pointers to) this dataare provided.

    Author

    Jamie Parkinson [email protected]

    5.4.2 Constructor & Destructor Documentation

    5.4.2.1 ConfigLoader::ConfigLoader ( std::string configFilePath )

    Constructs ConfigLoader from the file at the given path.

    Parameters

    configFilePath Path to the config file

    Returns

    The ConfigLoader object

    The documentation for this class was generated from the following files:

    ConfigLoader.h

    ConfigLoader.cpp

    5.5 Electrode Class Reference

    Represents a single electrode in the accelerator geometry.

    #include

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.5 Electrode Class Reference 21

    Inheritance diagram for Electrode:

    Electrode

    VectorField

    blitz::Array< blitz::TinyVector< float,

    3 >, 3 >

    Collaboration diagram for Electrode:

    Electrode

    VectorField

    blitz::Array< blitz::TinyVector< float,

    3 >, 3 >

    Public Member Functions

    Electrode ()

    Blank constructor.

    Electrode (int electrodeNumber)

    Constructs an "empty" Electrode with given index.

    Electrode (const Electrode &elec)

    Copy constructor.

    void import (std::shared_ptr< AcceleratorConfig > config)

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 22 Class Documentation

    Imports the E-Field files associated with this electrode. void applyVoltage (float voltage)

    Applies a voltage to the Electrode. float getVoltage ()

    Gets the voltage that is currently applied to this Electrode.

    Protected Attributes

    int electrodeNumber_

    The number/index of the electrode within the accelerator geometry. float currentVoltage_ = 1.0

    The voltage that is currently being applied to the electrode.

    Additional Inherited Members

    5.5.1 Detailed Description

    Represents a single electrode in the accelerator geometry.

    Derived from VectorField. Adds methods to import E-Field files, change its voltage and get its location. ElectrodeLocator is a friend class. Also remembers its number within the geometry.

    See also

    ElectrodeLocator

    Author

    Jamie Parkinson [email protected]

    5.5.2 Constructor & Destructor Documentation

    5.5.2.1 Electrode::Electrode ( int electrodeNumber )

    Constructs an "empty" Electrode with given index.

    Parameters

    electrodeNumber

    The number/index of the electrode within the accelerator geometry.

    5.5.2.2 Electrode::Electrode ( const Electrode & elec )

    Copy constructor.

    Parameters

    elec Electrode to copy

    5.5.3 Member Function Documentation

    5.5.3.1 void Electrode::applyVoltage ( float voltage )

    Applies a voltage to the Electrode.

    Trying a new approach for this: the scalar multiplication will only be done when we get values from the Electrode.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.6 ElectrodeLocator Class Reference 23

    Parameters

    voltage The voltage to apply

    5.5.3.2 float Electrode::getVoltage ( )

    Gets the voltage that is currently applied to this Electrode.

    Returns

    The voltage that is currently applied to this Electrode

    5.5.3.3 void Electrode::import ( std::shared_ptr< AcceleratorConfig > config )

    Imports the E-Field files associated with this electrode.

    Stores them as the base field of the Electrode. By convention, this is the field when the Electrode has a PD of 1Vapplied to it. As such, any other voltage can be obtained by multiplying the field by a scalar.

    Parameters

    config Relevant AcceleratorConfig, usually provided by ConfigLoader

    See also

    ConfigLoaderAcceleratorConfig

    The documentation for this class was generated from the following files:

    Electrode.h

    Electrode.cpp

    5.6 ElectrodeLocator Class Reference

    A class for finding the physical location of electrodes in an E-Field.

    #include

    Inheritance diagram for ElectrodeLocator:

    ElectrodeLocator

    blitz::Array< bool, 3 >

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 24 Class Documentation

    Collaboration diagram for ElectrodeLocator:

    ElectrodeLocator

    blitz::Array< bool, 3 >

    Public Member Functions

    ElectrodeLocator (Electrode &electrode)

    Constructs an ElectrodeLocator from an Electrode.

    ElectrodeLocator (std::shared_ptr< Electrode > electrode)

    For construction from a shared_ptr to an Electrode.

    bool existsAt (int x, int y, int z)

    Checks to see if the electrode exists at a given point.

    bool existsAt (const tuple3Dint &r)

    Checks to see if the electrode exists at a given point.

    5.6.1 Detailed Description

    A class for finding the physical location of electrodes in an E-Field.

    Author

    Jamie Parkinson [email protected]

    5.6.2 Constructor & Destructor Documentation

    5.6.2.1 ElectrodeLocator::ElectrodeLocator ( Electrode & electrode )

    Constructs an ElectrodeLocator from an Electrode.

    Parameters

    electrode An Electrode, the location of which will be determined

    5.6.2.2 ElectrodeLocator::ElectrodeLocator ( std::shared_ptr< Electrode > electrode )

    For construction from a shared_ptr to an Electrode.

    Useful because shared_ptrs are quite common

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.7 ExponentialScheme Class Reference 25

    Parameters

    electrode A shared_ptr to an Electrode to be located

    5.6.3 Member Function Documentation

    5.6.3.1 bool ElectrodeLocator::existsAt ( int x, int y, int z )

    Checks to see if the electrode exists at a given point.

    Parameters

    x x-coordinate to checky y-coordinate to checkz z-coordinate to check

    Returns

    true if it does exist at the point, false otherwise

    5.6.3.2 bool ElectrodeLocator::existsAt ( const tuple3Dint & r )

    Checks to see if the electrode exists at a given point.

    Parameters

    r A tuple of 3 integers (x, y, z)

    Returns

    true if it does exist at the point, false otherwise

    The documentation for this class was generated from the following files:

    ElectrodeLocator.h

    ElectrodeLocator.cpp

    5.7 ExponentialScheme Class Reference

    A SynchronousParticleScheme which exponentially increases the voltage on sections as the synchronous particleenters them.

    #include

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 26 Class Documentation

    Inheritance diagram for ExponentialScheme:

    ExponentialScheme

    SynchronousParticleScheme

    VoltageScheme

    Collaboration diagram for ExponentialScheme:

    ExponentialScheme

    SynchronousParticleScheme

    VoltageScheme Particle

    synchronousParticle_

    Public Member Functions

    ExponentialScheme (Particle &synchronousParticle, float maxVoltage, int nElectrodes, int sectionWidth, floattimeStep)

    Constructs the SynchronousParticleScheme with all the necessary member variables.

    std::vector< float > getVoltages (int t)

    Returns a vector of the electrode voltages at time t.

    bool isActive (int t)

    Returns true if the voltages will be different from the previous access.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.7 ExponentialScheme Class Reference 27

    Protected Attributes

    float deltaT_ = std::numeric_limits::max()

    The estimated time until the particle will enter the next section.

    float startRampTime_ = 0.0

    The time at which the current section was activated.

    Static Protected Attributes

    static constexpr int timeConstant_ = 1000.0

    The time constant of the exponential increase.

    5.7.1 Detailed Description

    A SynchronousParticleScheme which exponentially increases the voltage on sections as the synchronous particleenters them.

    Author

    Jamie Parkinson [email protected]

    5.7.2 Constructor & Destructor Documentation

    5.7.2.1 ExponentialScheme::ExponentialScheme ( Particle & synchronousParticle, float maxVoltage, int nElectrodes, intsectionWidth, float timeStep )

    Constructs the SynchronousParticleScheme with all the necessary member variables.

    See also

    VoltageScheme

    Parameters

    synchronousParticle

    The synchronous particle (usually the first Particle in the vector of Particles)

    maxVoltage The maximum voltage that can be appliednElectrodes The number of electrodes to generate voltages for

    sectionWidth The width of a "section" of electrodes in the cylindrical acceleratortimeStep The time step being used in the simulation

    5.7.3 Member Function Documentation

    5.7.3.1 std::vector< float > ExponentialScheme::getVoltages ( int t ) [virtual]

    Returns a vector of the electrode voltages at time t.

    Parameters

    t Time to get the voltage for

    Returns

    A vector of electrode voltages

    Implements SynchronousParticleScheme.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 28 Class Documentation

    5.7.3.2 bool ExponentialScheme::isActive ( int t ) [virtual]

    Returns true if the voltages will be different from the previous access.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.8 ez::ezETAProgressBar Class Reference 29

    Parameters

    t The time to check activity

    Returns

    True if the voltages will be different from the previous access

    Implements SynchronousParticleScheme.

    The documentation for this class was generated from the following files:

    VoltageScheme.h VoltageScheme.cpp

    5.8 ez::ezETAProgressBar Class Reference

    Public Member Functions

    ezETAProgressBar (unsigned int _n=0) void reset (uint64_t _n) void start () void operator++ () void operator+= (const unsigned int d) void done () std::string durationString (duration t) void setPct (double Pct)

    The documentation for this class was generated from the following file:

    ezETAProgressBar.hpp

    5.9 std::hash< tuple3Dint > Struct Template Reference

    Template specialisation for std::hash

    #include

    Public Member Functions

    size_t operator() (const tuple3Dint &t) const

    For accessing the hashing algorithm.

    5.9.1 Detailed Description

    templatestruct std::hash< tuple3Dint >

    Template specialisation for std::hash

    5.9.2 Member Function Documentation

    5.9.2.1 size_t std::hash< tuple3Dint >::operator() ( const tuple3Dint & t ) const [inline]

    For accessing the hashing algorithm.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 30 Class Documentation

    Parameters

    t A tuple3D (aka std::tuple) of integer coords

    Returns

    A size_t (aka unsigned int) hash code

    The documentation for this struct was generated from the following file:

    SmartField.h

    5.10 HDF5Container1D< T > Struct Template Reference

    A basic container for the HDF5 components for the scalar data that will be stored.

    #include

    Public Attributes

    std::vector< std::shared_ptr< H5::DataSet > > dSets

    A vector of shared_ptrs to HDF5 DataSets.

    std::vector< H5::DataSpace > dSpaces

    A vector of HDF5 DataSpaces.

    std::vector< std::vector< T > > vecs

    A vector of vectors of values (of type T)

    5.10.1 Detailed Description

    templatestruct HDF5Container1D< T >

    A basic container for the HDF5 components for the scalar data that will be stored.

    Hard to describe.

    Author

    Jamie Parkinson [email protected]

    5.10.2 Member Data Documentation

    5.10.2.1 template std::vector< std::vector> HDF5Container1D< T >::vecs

    A vector of vectors of values (of type T)

    Construct the container with 4 vectors in vecs

    The documentation for this struct was generated from the following file:

    Writer.h

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.11 InstantaneousScheme Class Reference 31

    5.11 InstantaneousScheme Class Reference

    A SynchronousParticleScheme that switches on sections instantaneously as the synchronous particle enters them.

    #include

    Inheritance diagram for InstantaneousScheme:

    InstantaneousScheme

    SynchronousParticleScheme

    VoltageScheme

    Collaboration diagram for InstantaneousScheme:

    InstantaneousScheme

    SynchronousParticleScheme

    VoltageScheme Particle

    synchronousParticle_

    Public Member Functions

    InstantaneousScheme (Particle &synchronousParticle, float maxVoltage, int nElectrodes, int sectionWidth,float timeStep)

    Constructs the SynchronousParticleScheme with all the necessary member variables.

    std::vector< float > getVoltages (int t)

    Returns a vector of the electrode voltages at time t.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 32 Class Documentation

    bool isActive (int t)

    Returns true if the voltages will be different from the previous access.

    Additional Inherited Members

    5.11.1 Detailed Description

    A SynchronousParticleScheme that switches on sections instantaneously as the synchronous particle enters them.

    Author

    Jamie Parkinson [email protected]

    5.11.2 Constructor & Destructor Documentation

    5.11.2.1 InstantaneousScheme::InstantaneousScheme ( Particle & synchronousParticle, float maxVoltage, int nElectrodes,int sectionWidth, float timeStep )

    Constructs the SynchronousParticleScheme with all the necessary member variables.

    See also

    VoltageScheme

    Parameters

    synchronousParticle

    The synchronous particle (usually the first Particle in the vector of Particles)

    maxVoltage The maximum voltage that can be appliednElectrodes The number of electrodes to generate voltages for

    sectionWidth The width of a "section" of electrodes in the cylindrical acceleratortimeStep The time step being used in the simulation

    5.11.3 Member Function Documentation

    5.11.3.1 std::vector< float > InstantaneousScheme::getVoltages ( int t ) [virtual]

    Returns a vector of the electrode voltages at time t.

    Parameters

    t Time to get the voltage for

    Returns

    A vector of electrode voltages

    Implements SynchronousParticleScheme.

    5.11.3.2 bool InstantaneousScheme::isActive ( int t ) [virtual]

    Returns true if the voltages will be different from the previous access.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.12 IntegerDistribution Class Reference 33

    Parameters

    t The time to check activity

    Returns

    True if the voltages will be different from the previous access

    Implements SynchronousParticleScheme.

    The documentation for this class was generated from the following files:

    VoltageScheme.h

    VoltageScheme.cpp

    5.12 IntegerDistribution Class Reference

    A wrapper class for some C++11 RNGs.

    #include

    Inheritance diagram for IntegerDistribution:

    IntegerDistribution

    SingleDistribution TriangleDistribution UniformDistribution

    Public Member Functions

    virtual int operator() (mersenne_twister &generator)=0

    Virtual operator to get a number from a generator.

    virtual IntegerDistribution ()Blank virtual destructor.

    5.12.1 Detailed Description

    A wrapper class for some C++11 RNGs.

    The integer RNGs in C++11 are curiously not all derived from some bass class. This means they can be a pain touse - this class offers a very limited level of abstraction. Note that the distributions can only use a Mersenne Twistergenerator.

    Author

    Jamie Parkinson [email protected]

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 34 Class Documentation

    5.12.2 Member Function Documentation

    5.12.2.1 virtual int IntegerDistribution::operator() ( mersenne_twister & generator ) [pure virtual]

    Virtual operator to get a number from a generator.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.13 MovingTrapScheme Class Reference 35

    Parameters

    generator An instance of a mersenne_twister

    Returns

    A random integer

    Implemented in TriangleDistribution, SingleDistribution, and UniformDistribution.

    The documentation for this class was generated from the following files:

    IntegerDistribution.h IntegerDistribution.cpp

    5.13 MovingTrapScheme Class Reference

    A VoltageScheme which appplies a periodic oscillating voltage to create a moving trap.

    #include

    Inheritance diagram for MovingTrapScheme:

    MovingTrapScheme

    VoltageScheme

    Collaboration diagram for MovingTrapScheme:

    MovingTrapScheme

    VoltageScheme

    Public Member Functions

    MovingTrapScheme (float maxVoltage, int nElectrodes, int sectionWidth, float timeStep, float targetVel, int k)

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 36 Class Documentation

    Constructs the MovingTrapScheme with the appropriate parameters.

    std::vector< float > getInitialVoltages ()

    Returns a vector of the initial voltages to apply before the simulation starts.

    std::vector< float > getVoltages (int t)

    Returns a vector of the electrode voltages at time t.

    bool isActive (int t)

    Returns true if the voltages will be different from the previous access.

    Protected Member Functions

    float frequency (int k)

    Gets the frequency of transverse oscillation of particles with Stark quantum number k.

    Protected Attributes

    float targetVel_

    The target velocity for the particles (oscillation frequency depends on this)

    float offTime_

    The time at which the E-Field should be switched off for the particles to fly freely.

    Static Protected Attributes

    static constexpr int trapWidth_ = 6

    The number of sections that a trap should span.

    static constexpr int nOscillations_ = 4

    The number of transverse oscillations of the particles before the field is switched off.

    5.13.1 Detailed Description

    A VoltageScheme which appplies a periodic oscillating voltage to create a moving trap.

    Author

    Jamie Parkinson [email protected]

    5.13.2 Constructor & Destructor Documentation

    5.13.2.1 MovingTrapScheme::MovingTrapScheme ( float maxVoltage, int nElectrodes, int sectionWidth, float timeStep, floattargetVel, int k )

    Constructs the MovingTrapScheme with the appropriate parameters.

    Parameters

    maxVoltage The maximum voltage that can be appliednElectrodes The number of electrodes to generate voltages for

    sectionWidth The width of a "section" of electrodes in the cylindrical acceleratortimeStep The time step being used in the simulation

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.13 MovingTrapScheme Class Reference 37

    targetVel The target velocity for the particles to reachk The k-value to estimate frequency from. Ideally this will be the average k-value.

    5.13.3 Member Function Documentation

    5.13.3.1 float MovingTrapScheme::frequency ( int k ) [protected]

    Gets the frequency of transverse oscillation of particles with Stark quantum number k.

    This assumes that the particles are transversely oscillating in a nearly harmonic potential. The equation used in thesource was found in MATLAB by computing a regression from data at various k-values. Because k and V both havea linear effect on the dipole moment, we can generalise that regression to work for different k and V values. Thisfunction accesses the member variable maxVoltage_ to do this.

    Parameters

    k Any stark quantum number of the particles

    Returns

    An estimate of the frequency of transverse particle oscillation (Hz)

    5.13.3.2 std::vector< float > MovingTrapScheme::getInitialVoltages ( ) [virtual]

    Returns a vector of the initial voltages to apply before the simulation starts.

    Returns

    A vector of the initial voltages to apply before the simulation starts

    Implements VoltageScheme.

    5.13.3.3 std::vector< float > MovingTrapScheme::getVoltages ( int t ) [virtual]

    Returns a vector of the electrode voltages at time t.

    Parameters

    t Time to get the voltage for

    Returns

    A vector of electrode voltages

    Implements VoltageScheme.

    5.13.3.4 bool MovingTrapScheme::isActive ( int t ) [virtual]

    Returns true if the voltages will be different from the previous access.

    Parameters

    t The time to check activity

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 38 Class Documentation

    Returns

    True if the voltages will be different from the previous access

    Implements VoltageScheme.

    The documentation for this class was generated from the following files:

    VoltageScheme.h VoltageScheme.cpp

    5.14 Particle Class Reference

    Basic/generic particle class.

    #include

    Inheritance diagram for Particle:

    Particle

    AntiHydrogen

    Public Member Functions

    Particle (float x, float y, float z, float vx, float vy, float vz)

    Constructor to set initial position and velocity.

    void memorise ()

    Commit current location and velocity to memory.

    void forget ()

    Delete memory vectors.

    void cutDownMemory ()

    Delete all but first part of memory vectors.

    std::vector< float > recallLoc (int d)

    Return vector of locations in d (x1,x2,x3,...)

    float recallLoc (int i, int d)

    Return the d-location at the i-th position.

    std::vector< float > recallVel (int d)

    Return vector of velocities in d (vx1,vx2,vx3,...)

    float recallVel (int i, int d)

    Return the d-location at the i-th position.

    void setLoc (float x, float y, float z)

    Set the location.

    void setLoc (tuple3Dfloat loc)

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.14 Particle Class Reference 39

    Set the location with a location tuple.

    void setVel (float vx, float vy, float vz)

    Set the velocity.

    void setVel (tuple3Dfloat vel)

    Set the velocity with a velocity tuple.

    tuple3Dfloat getLoc ()

    Return the tuple {x,y,z}.

    templatefloat getLocDim ()

    Returns the location in the templated dimension d Template parameter d = 0 for x, d = 1 for y, d = 2 for z.

    tuple3Dint getIntLoc ()

    Returns the tuple {x,y,z} rounded to an integer grid.

    tuple3Dfloat getVel ()

    Return the tuple {vx,vy,vz}.

    templatefloat getVelDim ()

    Returns the velocity in the templated dimension d Template parameter d = 0 for x, d = 1 for y, d = 2 for z.

    int isDead ()

    Whether the particle has collided.

    bool succeeded ()

    Whether the particle has reached the end of the accelerator.

    void collide ()

    Call a collision event.

    void succeed ()

    Call a success event.

    float maxField ()

    Gets the maximum |E| that the particle encountered. void checkMaxField (float magnitude)

    Checks to see if the field given is greater than the previous max.

    Protected Attributes

    tuple3Dfloat r_

    Position.

    tuple3Dfloat v_

    Velocity.

    bool collided_

    Whether the particle has collided.

    bool succeeded_

    Whether the particle has reached the end of the accelerator.

    float maxField_

    The maximum E-Field magnitude that the particle encountered.

    std::vector< float > xTraj_

    Contain the trajectory coordinates.

    std::vector< float > yTraj_ std::vector< float > zTraj_ std::vector< float > xvTraj_ std::vector< float > yvTraj_ std::vector< float > zvTraj_

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 40 Class Documentation

    5.14.1 Detailed Description

    Basic/generic particle class.

    This will work but will need to be extended to add any specific properties or methods

    Author

    Jamie Parkinson [email protected]

    5.14.2 Constructor & Destructor Documentation

    5.14.2.1 Particle::Particle ( float x, float y, float z, float vx, float vy, float vz )

    Constructor to set initial position and velocity.

    Parameters

    x x-coordinatey y-coordinatez z-coordinate

    vx velocity component in x-directionvy velocity component in y-directionvz velocity component in z-direction

    5.14.3 Member Function Documentation

    5.14.3.1 void Particle::checkMaxField ( float magnitude )

    Checks to see if the field given is greater than the previous max.

    Parameters

    magnitude An E-field magnitude

    5.14.3.2 void Particle::collide ( )

    Call a collision event.

    Sets the collided_ int to 1

    5.14.3.3 tuple3Dint Particle::getIntLoc ( )

    Returns the tuple {x,y,z} rounded to an integer grid.

    Returns

    The tuple {x,y,z} rounded to an integer grid

    5.14.3.4 tuple3Dfloat Particle::getLoc ( )

    Return the tuple {x,y,z}.

    Returns

    The tuple (x, y, z)

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.14 Particle Class Reference 41

    5.14.3.5 template float Particle::getLocDim ( ) [inline]

    Returns the location in the templated dimension d Template parameter d = 0 for x, d = 1 for y, d = 2 for z.

    Returns

    The current d-location of the Particle

    5.14.3.6 tuple3Dfloat Particle::getVel ( )

    Return the tuple {vx,vy,vz}.

    Returns

    The tuple (vx, vy, vz)

    5.14.3.7 template float Particle::getVelDim ( ) [inline]

    Returns the velocity in the templated dimension d Template parameter d = 0 for x, d = 1 for y, d = 2 for z.

    Returns

    The current d-velocity of the Particle

    5.14.3.8 int Particle::isDead ( )

    Whether the particle has collided.

    Expected to be overloaded in derived classes for ionisation etc

    Returns

    0 if not collided, 1 if collided

    5.14.3.9 float Particle::maxField ( )

    Gets the maximum |E| that the particle encountered.Returns

    The maximum |E| that the particle encountered

    5.14.3.10 std::vector< float > Particle::recallLoc ( int d )

    Return vector of locations in d (x1,x2,x3,...)

    Parameters

    d The dimension of locations to get

    Returns

    A vector of all d-locations

    5.14.3.11 float Particle::recallLoc ( int i, int d )

    Return the d-location at the i-th position.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 42 Class Documentation

    Parameters

    i The time/index in trajectory to getd The dimension to get

    Returns

    The corresponding position

    5.14.3.12 std::vector< float > Particle::recallVel ( int d )

    Return vector of velocities in d (vx1,vx2,vx3,...)

    Parameters

    d The dimension of velocities to get

    Returns

    A vector of all d-velocities

    5.14.3.13 float Particle::recallVel ( int i, int d )

    Return the d-location at the i-th position.

    Parameters

    i The time/index in trajectory to getd The dimension to get

    Returns

    The corresponding velocity

    5.14.3.14 void Particle::setLoc ( float x, float y, float z )

    Set the location.

    Parameters

    x x-coordinatey y-coordinatez z-coordinate

    5.14.3.15 void Particle::setLoc ( tuple3Dfloat loc )

    Set the location with a location tuple.

    Parameters

    loc (x,y,z) tuple

    5.14.3.16 void Particle::setVel ( float vx, float vy, float vz )

    Set the velocity.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.15 ParticleGenerator< PType > Class Template Reference 43

    Parameters

    vx x-componentvy y-componentvz z-component

    5.14.3.17 void Particle::setVel ( tuple3Dfloat vel )

    Set the velocity with a velocity tuple.

    Parameters

    vel (vx, vy, vz) tuple

    5.14.3.18 void Particle::succeed ( )

    Call a success event.

    Sets the succeeded_ bool to true

    5.14.3.19 bool Particle::succeeded ( )

    Whether the particle has reached the end of the accelerator.

    Returns

    true if successful, false if not

    The documentation for this class was generated from the following files:

    Particle.h Particle.cpp

    5.15 ParticleGenerator< PType > Class Template Reference

    A class to generate a vector of particles for the simulation.

    #include

    Public Member Functions

    ParticleGenerator (std::shared_ptr< ParticlesConfig > particlesConfig, std::shared_ptr< AcceleratorConfig> acceleratorConfig)

    Constructs a ParticleGenerator from the given configuration objects.

    void generateSynchronousParticle (int x, int y, int z, int vx, int vy, int vz)

    Generates a single particle.

    void generateParticles ()

    Generates particles according to the particles configuration object.

    std::vector< PType > & getParticles ()

    Returns the generated particles.

    templatevoid generateSynchronousParticle (int x, int y, int z, int vx, int vy, int vz)

    templatevoid generateParticles ()

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 44 Class Documentation

    Protected Member Functions

    tuple3Dfloat generateUniformVels (float sigmaV, mersenne_twister generator)

    Generates a radially uniform distribution of velocities with radius v_r.

    void generateNormDist (mersenne_twister generator, float sigmaV, bool normVels, int sectionWidth, IntegerDistribution kDist)

    Generates normally distributed particles.

    void generateUniformDist (mersenne_twister generator, float sigmaV, bool normVels, int sectionWidth,IntegerDistribution kDist, bool full=false)

    Generates uniformly distributed particles.

    templatevoid generateNormDist (mersenne_twister generator, float sigmaV, bool normVels, int sectionWidth, IntegerDistribution kDist)

    templatevoid generateUniformDist (mersenne_twister generator, float sigmaV, bool normVels, int sectionWidth,IntegerDistribution kDist, bool full)

    Protected Attributes

    std::shared_ptr< ParticlesConfig > particlesConfig_

    Holds configuration data for particles.

    std::shared_ptr< AcceleratorConfig > acceleratorConfig_

    Holds configuration data for the geometry; necessary for putting particles in the right places.

    std::vector< PType > particles_

    The vector of particles which will be created.

    5.15.1 Detailed Description

    templateclass ParticleGenerator< PType >

    A class to generate a vector of particles for the simulation.

    Particle parameters are held in the shared_ptr object. Type of particles is the template parameter.(Currently only AntiHydrogen)

    Author

    Jamie Parkinson [email protected]

    5.15.2 Constructor & Destructor Documentation

    5.15.2.1 template ParticleGenerator< PType >::ParticleGenerator ( std::shared_ptr particlesConfig, std::shared_ptr< AcceleratorConfig > acceleratorConfig ) [inline]

    Constructs a ParticleGenerator from the given configuration objects.

    Parameters

    particlesConfig Config data for particlesaccelerator

    ConfigConfig data for the accelerator

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 5.15 ParticleGenerator< PType > Class Template Reference 45

    5.15.3 Member Function Documentation

    5.15.3.1 template void ParticleGenerator< PType >::generateNormDist ( mersenne_twister generator,float sigmaV, bool normVels, int sectionWidth, IntegerDistribution kDist ) [protected]

    Generates normally distributed particles.

    Generated on Mon Jan 12 2015 21:36:51 for FlyE by Doxygen

  • 46 Class Documentation

    Parameters

    generator An instance of std::mt19937sigmaV Standard deviation of particle velocity (from temperature)

    normVels Whether the velocities are normally distributedsectionWidth The width of one section of the accelerator

    kDist A pointer to an IntegerDistribution

    5.15.3.2 template void ParticleGenerator< AntiHydrogen >::generateNormDist ( mersenne_twister generator,float sigmaV, bool normVels, int sectionWidth, IntegerDistribution kDist ) [protected]

    5.15.3.3 template void ParticleGenerator< PType >::generateParticles ( )

    Generates particles according to the particles configuration object.

    Calls either generateNormDist() or generateUniformDist()

    5.15.3.4 template void ParticleGenerator< AntiHydrogen >::generateParticles ( )

    5.15.3.5 template void ParticleGenerator< PType >::generateSynchronousParticle ( int x, int y, int z, intvx, int vy, int vz )

    Generates a single particle.

    To be used as the synchronous particle

    Parameters

    x x-coordinate of particley y-coordinate of particlez z-coordinate of particle

    vx x-component of particle velocityvy y-component of particle velocityvz z-component of particle velocity

    5.15.3.6 template void ParticleGenerator< AntiHydrogen >::generateSynchronousParticle ( int x, int y, int z, intvx, int vy, int vz )

    5.15.3.7 template void ParticleGenerator< PType >::generateUniformDist ( mersenne_twistergenerator, float sigmaV, bool normVels, int sectionWidth, IntegerDistribution kDist, bool full = false )[protected]

    Generates uniformly distributed particles.

    Parameters

    generator An instance of std::mt19937sigmaV Standard deviation of particle velocity (from temperature)

    normVels Whether the velocities are normally distributedsectionWidth Th