#ifndef LVOX2_STEPCOMBINELVOXGRIDS_H
#define LVOX2_STEPCOMBINELVOXGRIDS_H
#include "ct_step/abstract/ct_abstractstep.h"
/*!
* \class LVOX2_StepCombineLvoxGrids
* \ingroup Steps_LVOX
* \brief Combines density grids from different points of view.
*
* Different modes are possible :
* - max (density)
* - max (nt - nb)
* - max (ni)
*
* \param _mode Choosen mode for combination
*
* Input Models:
*
* - CT_ResultGroup\n
* - CT_StandardItemGroup...\n
* - CT_RegularGridInt (hits)\n
* - CT_RegularGridInt (theorical)\n
* - CT_RegularGridInt (before)\n
* - CT_RegularGridDouble (density)\n
*
* Output Models:
*
* - CT_ResultGroup (grids)\n
* - CT_StandardItemGroup (grids)...\n
* - CT_RegularGridInt (hits)\n
* - CT_RegularGridInt (theorical)\n
* - CT_RegularGridInt (before)\n
* - CT_RegularGridDouble (density)\n
* - CT_RegularGridInt (scanId)\n
*
*/
class LVOX2_StepCombineLvoxGrids: public CT_AbstractStep
{
Q_OBJECT
public:
enum combinaisonMode
{
maxDensity,
maxNt_Nb,
maxNt_Nb_div_Nt,
maxNi,
sumNiSumNtNb
};
/*! \brief Step constructor
*
* Create a new instance of the step
*
* \param dataInit Step parameters object
*/
LVOX2_StepCombineLvoxGrids(CT_StepInitializeData &dataInit);
/*! \brief Step description
*
* Return a description of the step function
*/
QString getStepDescription() const;
/*! \brief Step copy
*
* Step copy, used when a step is added by step contextual menu
*/
CT_VirtualAbstractStep* createNewInstance(CT_StepInitializeData &dataInit);
protected:
/*! \brief Input results specification
*
* Specification of input results models needed by the step (IN)
*/
void createInResultModelListProtected();
/*! \brief Parameters DialogBox
*
* DialogBox asking for step parameters
*/
void createPostConfigurationDialog();
/*! \brief Output results specification
*
* Specification of output results models created by the step (OUT)
*/
void createOutResultModelListProtected();
/*! \brief Algorithm of the step
*
* Step computation, using input results, and creating output results
*/
void compute();
private:
// Step parameters
int _mode;
int _effectiveRayThresh;
bool _UseOnlyNotEmptyCellsIf_maxNt_Nb_div_Nt_selected;
};
#endif // LVOX2_STEPCOMBINELVOXGRIDS_H