All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GFAbsFinitePlane.h
Go to the documentation of this file.
1 /* Copyright 2008-2010, Technische Universitaet Muenchen,
2  Authors: Christian Hoeppner & Sebastian Neubert
3 
4  This file is part of GENFIT.
5 
6  GENFIT is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser General Public License as published
8  by the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  GENFIT is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public License
17  along with GENFIT. If not, see <http://www.gnu.org/licenses/>.
18 */
19 /**
20  * @author Christian H&ouml;ppner (Technische Universit&auml;t M&uuml;nchen, original author)
21  *
22  */
23 
24 
25 /** @addtogroup genfit
26  * @{
27  */
28 
29 #ifndef GFABSFINITEPLANE_H
30 #define GFABSFINITEPLANE_H
31 
32 #include<stdexcept> // std::logic_error
33 #include<string>
34 #include<iostream>
35 
36 #include "TObject.h"
37 
38 /** @brief Abstract base class for implementing arbitrarily shaped finite detector planes
39  *
40  * Finite detector planes could have any shape, e.g. rectangular, trapezoidal, ...
41  * Define them by inheriting from this class. Example, see GFRectFinitePlane
42  * This is an optional feature for the GFDetPlane class for avoiding fake intersection points in
43  * the fitting of loopers.
44  */
45 namespace genf {
46 
47 class GFAbsFinitePlane : public TObject {
48 public:
49  //! Returns whether a u,v point is in the active plane or not. Needs to be implemented
50  //! in child class.
51  virtual bool inActive(const double& u,const double& v)const = 0;
52  virtual void Print(std::ostream& out = std::cout) const = 0;
53  //! Deep copy ctor for polymorphic class.
54  virtual GFAbsFinitePlane* clone() const = 0;
55  virtual ~GFAbsFinitePlane();
56 
57  private:
58  virtual void Print(Option_t*) const
59  { throw std::logic_error(std::string(__func__) + "::Print(Option_t*) not available"); }
60 
61  // ClassDef(GFAbsFinitePlane,1)
62 };
63 
64 
65 } // namespace genf
66 
67 #endif
68 
69 /** @} */
virtual bool inActive(const double &u, const double &v) const =0
virtual void Print(std::ostream &out=std::cout) const =0
virtual GFAbsFinitePlane * clone() const =0
Deep copy ctor for polymorphic class.
virtual void Print(Option_t *) const
BEGIN_PROLOG could also be cout