Particle Identification and Tracking
accum_sofq.h
Go to the documentation of this file.
1 //tcaswell@uchicago.edu
2 //http://jfi.uchicago.edu/~tcaswell
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 (at
7 //your option) any later version.
8 //
9 //This program is distributed in the hope that it will be useful, but
10 //WITHOUT ANY WARRANTY; without even the implied warranty of
11 //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 //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 //Additional permission under GNU GPL version 3 section 7
18 //
19 //If you modify this Program, or any covered work, by linking or
20 //combining it with IPP (or a modified version of that library),
21 //containing parts covered by the terms of End User License Agreement
22 //for the Intel(R) Software Development Products, the licensors of
23 //this Program grant you additional permission to convey the resulting
24 //work.
25 
26 #ifndef CORR_SOFQ
27 #define CORR_SOFQ
28 
29 #include <vector>
30 #include <string>
31 #include <complex>
32 #include "accumulator.h"
33 
34 
35 
36 
37 namespace tracking
38 {
47 class Accum_sofq : public Accumulator
48 {
49 public:
50  // basic inherited stuff
51  void add_particle(const particle *) ;
53  const utilities::Md_store & md_store ) const ;
54 
55  // special stuff
56 
64  Accum_sofq(const utilities::Tuple<float,2>& q_range,
66  const int n_bins);
67  ~Accum_sofq();
68 
73  void get_magnitude_sqr(std::vector<float>& out )const;
74 
78  void display() const;
79 
85  void get_q_vec(std::vector<float> &out)const;
86 
87 
88 
89  int get_n_bins() const
90  {return n_bins_;}
91 
92 
93 
94 private:
98  const unsigned int n_bins_;
103 
107  const float q_step_;
108 
109 
114 
115 
119  std::vector<std::complex<float> > s_of_q_;
120 
121 
126 
130  std::string units_;
131 
132 
136  const static std::complex<float> i_;
140  const static float pi_;
141 
142 
143 };
144 
145 }
146 
147 
148 
149 #endif