Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:18:28

0001 /* Copyright 2008-2009, Technische Universitaet Muenchen,
0002    Authors: Christian Hoeppner & Sebastian Neubert & Johannes Rauch
0003 
0004    This file is part of GENFIT.
0005 
0006    GENFIT is free software: you can redistribute it and/or modify
0007    it under the terms of the GNU Lesser General Public License as published
0008    by the Free Software Foundation, either version 3 of the License, or
0009    (at your option) any later version.
0010 
0011    GENFIT is distributed in the hope that it will be useful,
0012    but WITHOUT ANY WARRANTY; without even the implied warranty of
0013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014    GNU Lesser General Public License for more details.
0015 
0016    You should have received a copy of the GNU Lesser General Public License
0017    along with GENFIT.  If not, see <http://www.gnu.org/licenses/>.
0018 */
0019 
0020 /** @addtogroup RKTrackRep
0021  * @{
0022  */
0023 
0024 #ifndef genfit_AbsMaterialInterface_h
0025 #define genfit_AbsMaterialInterface_h
0026 
0027 #include "RKTrackRep.h"
0028 #include "Material.h"
0029 
0030 #include <TObject.h>
0031 #include <TVector3.h>
0032 
0033 
0034 namespace genfit {
0035 
0036 /**
0037  * @brief Abstract base class for geometry interfacing
0038  */
0039 class AbsMaterialInterface : public TObject {
0040 
0041  public:
0042 
0043   AbsMaterialInterface() : debugLvl_(0) {;};
0044   virtual ~AbsMaterialInterface(){;};
0045 
0046   /** @brief Initialize the navigator at given position and with given direction.  Return true if volume changed.
0047    */
0048   virtual bool initTrack(double posX, double posY, double posZ,
0049                          double dirX, double dirY, double dirZ) = 0;
0050 
0051   /***
0052    * Get the material paramaters in the current material.
0053    * @return
0054    */
0055   virtual Material getMaterialParameters() = 0;
0056 
0057   /** @brief Make a step until maxStep or the next boundary is reached.
0058    *
0059    * After making a step to a boundary, the position has to be beyond the boundary,
0060    * i.e. in the current material has to be that beyond the boundary.
0061    * The actual step made is returned.
0062    */
0063   virtual double findNextBoundary(const RKTrackRep* rep,
0064                                   const M1x7& state7,
0065                                   double sMax,
0066                                   bool varField = true) = 0;
0067 
0068   virtual void setDebugLvl(unsigned int lvl = 1) {debugLvl_ = lvl;}
0069 
0070  protected:
0071   unsigned int debugLvl_;
0072 
0073   //ClassDef(AbsMaterialInterface, 1);
0074 
0075 };
0076 
0077 } /* End of namespace genfit */
0078 /** @} */
0079 
0080 #endif // genfit_AbsMaterialInterface_h