Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:15:17

0001 void init()
0002 {
0003     gSystem->Load("libGeom");
0004     TGeoManager::Import("ALICE_ITS_tgeo.root");
0005 }
0006 
0007 typedef TGeoNode* pTGeoNode;
0008 pTGeoNode getNode(pTGeoNode root, TString name)
0009 {
0010     pTGeoNode node = NULL;
0011     dfs(root, name, node);
0012 
0013     cout << name;
0014     if(node != NULL)
0015     {
0016         cout << " Found!" << endl;
0017     }
0018     else
0019     {
0020         cout << " NOT Found!" << endl;
0021     }
0022     return node;
0023 }
0024 
0025 
0026 void dfs(pTGeoNode node, TString name,  pTGeoNode& res)
0027 {
0028     if(res != NULL) return;
0029     if(node->GetName() == name) res = node;
0030     if(node->GetNdaughters() == 0) return;
0031     
0032     for(int i = 0; i < node->GetNdaughters(); ++i)
0033     {
0034         dfs(node->GetDaughter(i), name, res);
0035     }
0036 }
0037 
0038 void export()
0039 {
0040     pTGeoNode root = gGeoManager->GetTopNode();
0041 
0042     pTGeoNode node_inner = getNode(root, "ITSUWrapVol0_1");
0043     pTGeoNode nodeb1 = getNode(node_inner, "Barrel0_1");
0044     pTGeoNode nodeb2 = getNode(node_inner, "Barrel1_1");
0045     pTGeoNode nodeb3 = getNode(node_inner, "Barrel2_1");
0046 
0047     TGeoVolume* vol_inner = node_inner->GetVolume();
0048     vol_inner->RemoveNode(nodeb1);
0049     vol_inner->RemoveNode(nodeb2);
0050     vol_inner->RemoveNode(nodeb3);
0051 
0052     pTGeoNode node_mid = getNode(root, "ITSUWrapVol1_1");
0053     pTGeoNode nodeb4 = getNode(node_mid, "Barrel3_1");
0054     pTGeoNode nodeb5 = getNode(node_mid, "Barrel4_1");
0055 
0056     TGeoVolume* vol_mid = node_mid->GetVolume();
0057     vol_mid->RemoveNode(nodeb4);
0058     vol_mid->RemoveNode(nodeb5);
0059 
0060     pTGeoNode node_outer = getNode(root, "ITSUWrapVol2_1");
0061     pTGeoNode nodeb6 = getNode(node_outer, "Barrel5_1");
0062     pTGeoNode nodeb7 = getNode(node_outer, "Barrel6_1");
0063 
0064     TGeoVolume* vol_outer = node_outer->GetVolume();
0065     vol_outer->RemoveNode(nodeb6);
0066     vol_outer->RemoveNode(nodeb7);   
0067 
0068     pTGeoNode top = getNode(root, "ITSV_2");
0069     gGeoManager->SetTopVolume(top->GetVolume());
0070     gROOT->ProcessLine("TGDMLWrite::StartGDMLWriting(gGeoManager,\"all.gdml\",\"\")");
0071 }