libatomprobe
Library for Atom Probe Tomography (APT) computation
reconstruction-simple.h
Go to the documentation of this file.
1 /* reconstruction-simple.h : Sphere-on-cone reconstruction model
2  * Copyright (C) 2017 Daniel Haley
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 #ifndef ATOMPROBE_RECONSTRUCT_SIMPLE_H
18 #define ATOMPROBE_RECONSTRUCT_SIMPLE_H
19 
23 
24 #include <vector>
25 
26 namespace AtomProbe{
27 
28 //enum that states supported shank evolution mode
29 enum
30 {
32 };
33 
34 //Convert a 2D series of detector positions to a 3D reconstructed point cloud
36 {
37  private:
38  //The plane projection model (converts detector coordinates to angular ones)
39  AtomProbe::SphericPlaneProjection *projectionModel;
40 
42  unsigned int evolutionMode;
43 
45  // can be between 0 and M_PI
46  float reconFOV;
47 
49  float initialRadius;
50 
52  float flightPath;
53 
55  float shankAngle;
56 
58  float detEfficiency;
59  public:
62 
65 
67  void setRadiusEvolutionMode(unsigned int evolutionMode);
68 
70  void setInitialRadius(float rInit);
71 
73  void setShankAngle(float angle);
74 
76  void setDetectorEfficiency(float detEff);
77 
79  void setFlightPath(float detEff);
80 
82  // the angle between +Z and the maximum detectable point
83  // on a circle
84  void setReconFOV(float angle);
85 
87 
93  bool reconstruct(const std::vector<float> &detectorX,
94  const std::vector<float> &detectorY,
95  const std::vector<float> &timeOfFlight,
96  const std::vector<float> &ionVolume,
97  std::vector<IonHit> &outputPts) const ;
98 
99 };
100 
101 
102 //Run the unit tests for this module
103 bool reconstructTest();
104 
105 
106 }
107 
108 #endif
void setFlightPath(float detEff)
Set flight path. Units must match detector units (eg mm)
void setReconFOV(float angle)
Set the angle (between 0 and pi radiaans). This is.
bool reconstructTest()
bool reconstruct(const std::vector< float > &detectorX, const std::vector< float > &detectorY, const std::vector< float > &timeOfFlight, const std::vector< float > &ionVolume, std::vector< IonHit > &outputPts) const
Using the current reconstruction model, reconstruct a detector sequence.
void setRadiusEvolutionMode(unsigned int evolutionMode)
Set the method of evolution for the shank, as per EVOLUTION_MODE_ enum.
void setInitialRadius(float rInit)
Set the initial tip radius.
void setShankAngle(float angle)
Set initial angle, in radiians.
void setDetectorEfficiency(float detEff)
Set detector efficiency in range (0,1].
void setProjModel(AtomProbe::SphericPlaneProjection *model)
Set a given projection model.