00001 #include "BDSGlobalConstants.hh"
00002 #include "BDSLensFacet.hh"
00003 #include "BDSMaterials.hh"
00004 #include "G4VisAttributes.hh"
00005 #include "G4LogicalVolume.hh"
00006 #include "G4VPhysicalVolume.hh"
00007 #include "G4UserLimits.hh"
00008
00009 #include "G4UserLimits.hh"
00010 #include "G4Trap.hh"
00011
00012
00013 BDSLensFacet::BDSLensFacet (G4String name, G4TwoVector size, G4double angle, G4double baseHeight, G4String material):
00014 _name(name+"_LensFacet"),_size(size),_angle(angle), _baseHeight(baseHeight), _material(material)
00015 {
00016 computeDimensions();
00017 build();
00018 }
00019
00020 void BDSLensFacet::computeDimensions(){
00021 G4double aSmallNumber=1e-9;
00022 if(_baseHeight==0) {_baseHeight=aSmallNumber;}
00023 _totalHeight = _baseHeight + _size.x()*tan(_angle);
00024
00025 _rotation = new G4RotationMatrix(0,CLHEP::pi/2.0,0);
00026 }
00027
00028
00029 void BDSLensFacet::visAtt()
00030 {
00031 _visAtt=new G4VisAttributes(G4Colour(0.8,0.2,0.0,0.2));
00032 _visAtt->SetForceSolid(true);
00033 _log->SetVisAttributes(_visAtt);
00034 }
00035
00036 void BDSLensFacet::build(){
00037 G4cout << "Building G4Trap with dimensions: " << _size.x() << " " << _size.y()<< " " << _totalHeight << " " << _baseHeight << G4endl;
00038 _solid = new G4Trap((_name+"solid").c_str(), _size.x(), _size.y(), _totalHeight, _baseHeight);
00039 _log = new G4LogicalVolume(_solid,BDSMaterials::Instance()->GetMaterial(_material),(_name+"_log").c_str(),0,0,0);
00040 visAtt();
00041 }
00042
00043
00044 BDSLensFacet::~BDSLensFacet(){
00045 }