// compile by adding the lmd subdirectory to the CMakesLists of the macro folder #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //using namespace LmdDim; // to check the position and dimensions // one may enable a beam pipe dummy to be displayed const bool show_beam_pipe_dummy = true; const bool include_box = false; void create_HV_MAPS(bool misalign = true) { /* // ****************************** Parameters of Detector ************************ //-------------------------------------------------------------------- gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C"); // Load this libraries gSystem->Load("libGeoBase"); gSystem->Load("libParBase"); gSystem->Load("libBase"); gSystem->Load("libPndData"); gSystem->Load("libPassive"); TString outfile = "geo/HV_MAPS-Design.root"; TFile* fi = new TFile(outfile, "RECREATE"); FairGeoLoader* geoLoad = NULL;// FairGeoLoader::Instance();// if (!geoLoad){ cout << " creating FairGeoLoader instance " << endl; geoLoad = new FairGeoLoader("TGeo", "FairGeoLoader"); } FairGeoInterface *geoFace = geoLoad->getGeoInterface(); geoFace->setMediaFile("../../geometry/media_pnd.geo"); geoFace->readMedia(); geoFace->print(); FairGeoMedia *Media = geoFace->getMedia(); FairGeoBuilder *geobuild = geoLoad->getGeoBuilder(); // retrieve available media std::string str_ti = "Aluminum"; // "titanium" is in Panda software not yet implemented FairGeoMedium* FairMediumAir = Media->getMedium("air"); FairGeoMedium* FairMediumSteel = Media->getMedium("steel"); FairGeoMedium* FairMediumTi = Media->getMedium(str_ti.c_str()); //titanium"); not found in media_pnd.geo ! FairGeoMedium *FairMediumSilicon = Media->getMedium("silicon"); FairGeoMedium *FairMediumDiamond = Media->getMedium("HYPdiamond"); FairGeoMedium *FairMediumVacuum = Media->getMedium("vacuum"); FairGeoMedium *FairMediumKapton = Media->getMedium("kapton"); if (!FairMediumAir || !FairMediumSteel || !FairMediumTi || !FairMediumKapton || !FairMediumSilicon || !FairMediumVacuum) { std::cout << " warning: not all media found " << std::endl; } int nmed; nmed = geobuild->createMedium(FairMediumAir); nmed = geobuild->createMedium(FairMediumSteel); nmed = geobuild->createMedium(FairMediumTi); nmed = geobuild->createMedium(FairMediumKapton); nmed = geobuild->createMedium(FairMediumSilicon); nmed = geobuild->createMedium(FairMediumDiamond); nmed = geobuild->createMedium(FairMediumVacuum); TGeoManager* gGeoMan = (TGeoManager*) gROOT->FindObject("FAIRGeom"); if (!gGeoMan) { cout << " no FAIR Geometry manager found! " << endl; return; } TGeoVolume *top = new TGeoVolumeAssembly("lmd_HV_MAPS"); gGeoMan->SetTopVolume(top); PndLmdDim& lmddim = PndLmdDim::Get_instance(); */ //-------------------------------------------------------------------- //gROOT->Macro("$VMCWORKDIR/gconfig/rootlogon.C"); // Load this libraries //gSystem->Load("libGeoBase"); //gSystem->Load("libParBase"); //gSystem->Load("libBase"); //gSystem->Load("libPndData"); //gSystem->Load("libPassive"); string dir = getenv("VMCWORKDIR"); //string moveto = dir + "/input/" + fileName + ".dat"; //system(("mv "+fileName+".dat"+" "+moveto).c_str()); TString outfile= dir+"/geometry/Luminosity-Detector.root"; TFile* fi = new TFile(outfile,"RECREATE"); FairGeoLoader* geoLoad = new FairGeoLoader("TGeo","FairGeoLoader"); FairGeoInterface *geoFace = geoLoad->getGeoInterface(); geoFace->setMediaFile((dir+"/geometry/media_pnd.geo").c_str()); geoFace->readMedia(); geoFace->print(); FairGeoMedia *Media = geoFace->getMedia(); FairGeoBuilder *geobuild=geoLoad->getGeoBuilder(); FairGeoMedium *FairMediumSilicon = Media->getMedium("silicon"); Int_t nmed=geobuild->createMedium(FairMediumSilicon); TGeoManager* gGeoMan = (TGeoManager*)gROOT->FindObject("FAIRGeom"); TGeoVolume *top = new TGeoVolumeAssembly("lum"); gGeoMan->SetTopVolume(top); PndLmdDim& lmddim = PndLmdDim::Get_instance(); // for testing purposes lmddim.Generate_rootgeom(*top, misalign); //lmddim.Write_transformation_matrices("matrices.txt", false); //if (!misalign) // lmddim.Write_transformation_matrices("matrices_perfect.txt", misalign); //else // lmddim.Write_transformation_matrices("matrices.txt", misalign); lmddim.Write_transformation_matrices(dir+"/input/trafo_matrices_lmd.dat", false); // generate standard matrices in VMCWORKDIR/input //lmddim.Read_transformation_matrices("matrices.txt", true); //lmddim.Write_transformation_matrices("matrices_aligned.txt", true); gGeoMan->CloseGeometry(); gGeoMan->CheckOverlaps(0.001); // [cm] //gGeoManager->CheckGeometryFull(); gGeoMan->PrintOverlaps(); top->Write(); fi->Close(); // gGeoManager->Export(outfile); gGeoMan->SetVisLevel(20); lmddim.Retrieve_version_number(); top->Draw("ogl"); // gGeoManager->Export(outfile); //gGeoMan->SetVisLevel(20); //top->Draw("ogl"); //top->RandomPoints(100000); } #include int main() { TApplication myapp("myapp", 0, 0); create_HV_MAPS(); myapp.Run(); return 0; }