/* Copyright 2008-2009, Technische Universitaet Muenchen,
Authors: Christian Hoeppner & Sebastian Neubert & Johannes Rauch
This file is part of GENFIT.
GENFIT is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
GENFIT 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 Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with GENFIT. If not, see .
*/
/** @addtogroup RKTrackRep
* @{
*/
#ifndef genfit_AbsMaterialInterface_h
#define genfit_AbsMaterialInterface_h
#include "RKTrackRep.h"
#include "MaterialProperties.h"
#include
#include
namespace genfit {
/**
* @brief Abstract base class for geometry interfacing
*/
class AbsMaterialInterface : public TObject {
public:
AbsMaterialInterface() : debugLvl_(0) {;};
virtual ~AbsMaterialInterface(){;};
/** @brief Initialize the navigator at given position and with given direction. Return true if volume changed.
*/
virtual bool initTrack(double posX, double posY, double posZ,
double dirX, double dirY, double dirZ) = 0;
/** @brief Get material parameters in current material
*/
virtual void getMaterialParameters(double& density,
double& Z,
double& A,
double& radiationLength,
double& mEE) = 0;
virtual void getMaterialParameters(MaterialProperties& parameters) = 0;
/** @brief Make a step until maxStep or the next boundary is reached.
*
* After making a step to a boundary, the position has to be beyond the boundary,
* i.e. in the current material has to be that beyond the boundary.
* The actual step made is returned.
*/
virtual double findNextBoundary(const RKTrackRep* rep,
const M1x7& state7,
double sMax,
bool varField = true) = 0;
virtual void setDebugLvl(unsigned int lvl = 1) {debugLvl_ = lvl;}
protected:
unsigned int debugLvl_;
//ClassDef(AbsMaterialInterface, 1);
};
} /* End of namespace genfit */
/** @} */
#endif // genfit_AbsMaterialInterface_h