/****************************************************************************
Copyright (C) 2012-2012 Universite de Sherbrooke, Quebec, CANADA
All rights reserved.
Contact : richard.fournier@usherbrooke.ca
jean-francois.cote@nrcan-rncan.gc.ca
joris.ravaglia@gmail.com
Developers : Joris RAVAGLIA
Adapted by Alexandre Piboule for Computree 2.0
This file is part of Computree version 2.0.
Computree 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.
Computree 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 Computree. If not, see .
*****************************************************************************/
#ifndef LVOX2_STEPCOMPUTELVOXGRIDS_H
#define LVOX2_STEPCOMPUTELVOXGRIDS_H
/** \file LVOX2_StepComputeLvoxGrids.h
\author Ravaglia J. - mailto : joris.ravaglia@gmail.com
\version 0.1
*/
#include "ct_step/abstract/ct_abstractstep.h" // The step inherits from ct_abstractstep
// Inclusion of auto-indexation system
#include "ct_tools/model/ct_autorenamemodels.h"
#include "ct_tools/ct_monitoredqthread.h"
/** \class LVOX2_StepComputeLvoxGrids
\brief
*/
class LVOX2_StepComputeLvoxGrids : public CT_AbstractStep
{
/** \def Q_OBJECT :
\brief Macro from the Qt environment. Useful to get the name of the step (among others)*/
Q_OBJECT
public:
/*!
* \brief Constructor
*
* Constructor of the class
* \param dataInit : informations about the step : parent step, plugin manager managing this step and some settings from Qt (for the Q_OBJECT?).
*/
LVOX2_StepComputeLvoxGrids(CT_StepInitializeData &dataInit);
/*!
* \brief Gives a description of the step
* This method will be used in the GUI management : this description will be shown to the user when the mouse is over the step in the step menu.
*
* \warning Inherited from CT_AbstractStep, this method is not pure virtual (could be not defined here).
*/
virtual QString getStepDescription() const;
/*!
* \brief Creates a new instance of this step
*
* \param dataInit : informations about the step : parent step, plugin manager managing this step and some settings from Qt (for the Q_OBJECT?).
*
* \warning Inherited from CT_AbstractStep, this method is pure virtual, each step MUST define its own method.
*/
virtual CT_VirtualAbstractStep* createNewInstance(CT_StepInitializeData &dataInit);
protected:
/*!
* \brief Creates the input of this step
*
* This method defines what kind of input the step can accept and get them
*
* \warning Inherited from CT_AbstractStep, this method is pure virtual, each step MUST define its own method.
*/
virtual void createInResultModelListProtected();
/*!
* \brief Creates the output of this step
*
* This method defines what kind of results the step produces
*
* \warning Inherited from CT_AbstractStep, this method is pure virtual, each step MUST define its own method.
*/
virtual void createOutResultModelListProtected();
/*!
* \brief Create a specific configuration dialog window for the step
*
* This method creates a window for the user to set the different parameters of the step.
* The different parameters that can be set by the users and their properties (min, max, level of detail) are defined here :
* To add a parameter to this dialog window, just do a "_configDialog->addTYPEOFVALUE(...)"
*
* \warning Inherited from CT_AbstractStep, this method is not pure virtual (could be not defined here).
*/
virtual void createPostConfigurationDialog();
/*!
* \brief Runs the step process
*
* This method contains the effective calculus of the step (running the step is equivalent to launch this method).
* You might consider it as a "main" function for a step.
*
* \warning Inherited from CT_AbstractStep, this method is pure virtual, each step MUST define its own method.
*/
virtual void compute();
public slots:
void updateProgress();
private:
// Declaration of autoRenames Variables (groups or items addes to In models copies)
CT_AutoRenameModels _deltaout_ModelName;
CT_AutoRenameModels _deltain_ModelName;
CT_AutoRenameModels _deltabef_ModelName;
CT_AutoRenameModels _deltatheo_ModelName;
CT_AutoRenameModels _deltaactu_ModelName;
CT_AutoRenameModels _bef_ModelName;
CT_AutoRenameModels _theo_ModelName;
CT_AutoRenameModels _actu_ModelName;
CT_AutoRenameModels _hits_ModelName;
CT_AutoRenameModels _density_ModelName;
CT_AutoRenameModels _NiFlag_ModelName;
CT_AutoRenameModels _NbFlag_ModelName;
CT_AutoRenameModels _NtFlag_ModelName;
CT_AutoRenameModels _NtaFlag_ModelName;
CT_AutoRenameModels _DensityFlag_ModelName;
QList _threadList;
//********************************************//
// Attributes of LVox //
//********************************************//
double _res; /*!< size of a voxel*/
int _effectiveRayThresh; /*!< minimum number of effective ray (Nt-Nb) in the voxel to calculate a density*/
bool _computeDistances;
int _ntMode; // mode of computation of total number of beam (0 theoretical, 1 actual, or 2 both)
int _gridMode;
double _xBase;
double _yBase;
double _zBase;
int _xDim;
int _yDim;
int _zDim;
bool _cylindricFilter;// Ni are counted only inside a cylinder (IGN, RH)
};
#endif // LVOX2_STEPCOMPUTELVOXGRIDS_H