OPALX (Object Oriented Parallel Accelerator Library for Exascal) MINIorX
OPALX
LaserProfile.h
Go to the documentation of this file.
1#ifndef OPAL_LASERPROFILE_HH
2#define OPAL_LASERPROFILE_HH
3// ------------------------------------------------------------------------
4// $RCSfile: LaserProfile.h,v $
5// ------------------------------------------------------------------------
6// $Revision: 1.3.4.1 $
7// ------------------------------------------------------------------------
8// Copyright: see Copyright.readme
9// ------------------------------------------------------------------------
10//
11// Class: LaserProfile
12//
13// ------------------------------------------------------------------------
14
15#include "OPALTypes.h"
16
17#include <gsl/gsl_histogram2d.h>
18#include <gsl/gsl_rng.h>
19#include <string>
20#include "hdf5.h"
21
23public:
25 const std::string& fileName, const std::string& imageName, double intensityCut,
26 short flags);
27
29
30 void getXY(double& x, double& y);
31
32 enum { FLIPX = 1, FLIPY = 2, ROTATE90 = 4, ROTATE180 = 8, ROTATE270 = 16 };
33
34private:
35 unsigned short* readFile(const std::string& fileName, const std::string& imageName);
36 unsigned short* readPGMFile(const std::string& fileName);
37 unsigned short* readHDF5File(const std::string& fileName, const std::string& imageName);
38 void flipX(unsigned short* image);
39 void flipY(unsigned short* image);
40 void swapXY(unsigned short* image);
41 void filterSpikes(unsigned short* image);
42 void normalizeProfileData(double intensityCut, unsigned short* image);
43 void computeProfileStatistics(unsigned short* image);
44 void fillHistrogram(unsigned short* image);
45 void setupRNG();
46 void printInfo();
47
48 void saveData(const std::string& fname, unsigned short* image);
49 void saveHistogram();
50 void sampleDist();
51
52 unsigned short getProfileMax(unsigned short* image);
53
54 hsize_t sizeX_m, sizeY_m;
55 gsl_histogram2d* hist2d_m;
56 gsl_rng* rng_m;
57 gsl_histogram2d_pdf* pdf_m;
58
61};
62#endif
ippl::Vector< T, Dim > Vector_t
hsize_t sizeY_m
void normalizeProfileData(double intensityCut, unsigned short *image)
Vector_t< double, 3 > centerMass_m
void getXY(double &x, double &y)
void saveData(const std::string &fname, unsigned short *image)
void fillHistrogram(unsigned short *image)
void flipY(unsigned short *image)
LaserProfile(const std::string &fileName, const std::string &imageName, double intensityCut, short flags)
void flipX(unsigned short *image)
gsl_histogram2d * hist2d_m
unsigned short * readPGMFile(const std::string &fileName)
unsigned short * readFile(const std::string &fileName, const std::string &imageName)
gsl_rng * rng_m
void swapXY(unsigned short *image)
unsigned short getProfileMax(unsigned short *image)
hsize_t sizeX_m
unsigned short * readHDF5File(const std::string &fileName, const std::string &imageName)
void computeProfileStatistics(unsigned short *image)
gsl_histogram2d_pdf * pdf_m
void filterSpikes(unsigned short *image)
Vector_t< double, 3 > standardDeviation_m