DD4hep - The AIDA detector description toolkit for high energy physics experiments
DD4hep  Rev:Unversioneddirectory
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DDGear.h
Go to the documentation of this file.
1 #ifndef DDGear_H
2 #define DDGear_H
3 
4 #include "DD4hep/Detector.h"
5 
6 #include "gear/GEAR.h"
7 #include "gearimpl/GearParametersImpl.h"
8 #include "gearimpl/SimpleMaterialImpl.h"
9 #include "gear/GearMgr.h"
10 
11 namespace gear{
12  class GearParametersImpl ;
13  class GearMgr ;
14 }
15 
16 namespace DD4hep {
17 
26  class GearHandle { //: public gear::GearParametersImpl {
27 
28  protected:
29  gear::GearParametersImpl* _gObj ;
30  std::string _name ;
31  std::vector< gear::SimpleMaterialImpl > _materials ;
32 
33  public :
35  GearHandle() : _gObj( 0 ) , _name( "UNKNOWN" ) {}
36 
39  GearHandle( gear::GearParametersImpl* gearObj, const std::string& nam ) : _gObj( gearObj ) , _name( nam ) {}
40 
42  virtual ~GearHandle() {
43  if( _gObj)
44  delete _gObj ;
45  }
46 
48  const std::string& name() { return _name ; }
49 
51  gear::GearParametersImpl* gearObject() { return _gObj ; }
52 
54  gear::GearParametersImpl* takeGearObject() {
55  gear::GearParametersImpl* obj = _gObj ;
56  _gObj = 0 ;
57  return obj ;
58  }
59 
60 
62  void addMaterial(const std::string nam, double A, double Z, double density, double radLen, double intLen){
63 
64  _materials.push_back( gear::SimpleMaterialImpl (nam, A, Z, density, radLen, intLen) ) ;
65  }
66 
68  const std::vector< gear::SimpleMaterialImpl >& materials() { return _materials ; }
69 
70 
72  GearHandle(const Geometry::DetElement& /*d*/) : _gObj(0) {}
73  GearHandle(const GearHandle& /*c*/,const Geometry::DetElement& /*det*/) : _gObj(0) {}
74  } ;
75 
76 
77  //===============================================================================================================
78 
84  gear::GearMgr* createGearMgr( Geometry::LCDD& lcdd , const std::string& pluginName="GearForILD" ) ;
85 
86 }
87 
88 #endif
void addMaterial(const std::string nam, double A, double Z, double density, double radLen, double intLen)
add a SimpleMaterial object
Definition: DDGear.h:62
GearHandle(gear::GearParametersImpl *gearObj, const std::string &nam)
Definition: DDGear.h:39
gear::GearParametersImpl * _gObj
Definition: DDGear.h:29
virtual ~GearHandle()
Definition: DDGear.h:42
GearHandle(const Geometry::DetElement &)
Definition: DDGear.h:72
std::string _name
Definition: DDGear.h:30
std::vector< gear::SimpleMaterialImpl > _materials
Definition: DDGear.h:31
const std::vector< gear::SimpleMaterialImpl > & materials()
get all materials assigned to this wrapper
Definition: DDGear.h:68
const std::string & name()
Definition: DDGear.h:48
GearHandle(const GearHandle &, const Geometry::DetElement &)
Definition: DDGear.h:73
Handle class describing a detector element.
Definition: Detector.h:172
gear::GearMgr * createGearMgr(Geometry::LCDD &lcdd, const std::string &pluginName)
Definition: DDGear.cpp:28
gear::GearParametersImpl * takeGearObject()
Definition: DDGear.h:54
gear::GearParametersImpl * gearObject()
Definition: DDGear.h:51