//////////////////////////////////////////////////////////////////////////////// // // // AGeoUtil // // // // Utility functions to build complex geometries easily // //////////////////////////////////////////////////////////////////////////////// #include "TGeoTube.h" #include "TMath.h" #include "AGeoUtil.h" #if !defined(R__ALPHA) && !defined(R__SOLARIS) && !defined(R__ACC) && !defined(R__FBSD) NamespaceImp(AGeoUtil) #endif namespace AGeoUtil { //______________________________________________________________________________ void MakePointToPointTube(const char* name, TVector3& v1, TVector3& v2, Double_t radius, TGeoTube** tube, TGeoCombiTrans** combi) { // Create a TGeoTube whose both ends are rotated to locate at v1 or v2 by // using combi /* Begin_Macro(source) { Double_t m = AOpticsManager::m(); TGeoBBox* worldbox = new TGeoBBox("worldbox", 10*m, 10*m, 10*m); AOpticalComponent* world = new AOpticalComponent("world", worldbox); TGeoTube* tube; TGeoCombiTrans* combi; TVector3 v1(-1*m, -2*m, 3*m); TVector3 v2(4*m, 5*m, -1*m); AGeoUtil::MakePointToPointTube("tube",v1, v2, 0.5*m, &tube, &combi); ALens* lens = new ALens("lens", tube); world->AddNode(lens, 1, combi); world->Draw("ogl"); }