acf.h 2.33 KB
Newer Older
1
/*****************************************************************************
2

3
    TRAVIS - Trajectory Analyzer and Visualizer
4

5 6
    http://www.travis-analyzer.de/

7 8 9 10 11
    Copyright (c) 2009-2019 Martin Brehm
                  2012-2019 Martin Thomas
                  2016-2019 Sascha Gehrke

    This file was written by Martin Brehm.
12

13
    ---------------------------------------------------------------------------
14 15 16 17 18 19 20 21 22 23 24 25 26

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
27

28 29
*****************************************************************************/

30

31 32 33
#ifndef ACF_H
#define ACF_H

34 35 36 37

// This must always be the first include directive
#include "config.h"

38 39 40 41 42 43 44
#include "xobject.h"
#include "backtrace.h"
#include "spectrum.h"
#include "fft.h"
#include "atomgroup.h"
#include "xintarray.h"

45

46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
class CSingleMolecule;


class CACF : public CxObject  
{
public:
	bool m_bExcludeR0;
//	bool m_b2ndDerivative;
	int m_iDerivative;
	bool m_bDerivative;
	void Mirror(int i);
	int m_iShowAtomGes;
	void BuildAtomList(CSingleMolecule *obs, CxIntArray *vec);
	CAtomGroup m_oAtoms;
	int m_iShowMol;
	void BuildName();
	CACF();
	~CACF();
	void Window();
	void WriteACF(const char *pre, const char *s, const char *post);
	void Normalize();
	void NormalizeCached();
	void Multiply(double f);
	void MultiplyCached(double f);
	void Create();
	void Transform(CFFT *fft);
	void Parse();

	char* m_sName;
	double *m_pData;
	unsigned long *m_pCounter;
	int m_iSize;
	CSpectrum *m_pSpectrum;
//	int m_iStride;
	bool m_bWindowFunction;
	bool m_bSpectrum;
	bool m_bMassWeight;
	double m_fSpecWaveNumber;
	int m_iZeroPadding;
	int m_iZeroPadding0;
	int m_iMirror;
	bool m_bACF_DB;
	CxObArray m_oaCache;
	bool m_bDecomposeModes; 
	int m_iParticles;       
	CxObArray m_oaCCRMatrix;

93 94
	//bool m_bSplitCart;

95 96 97
};

#endif