// $Id: geom_gentle.C 54257 2012-01-30 20:52:05Z quark $ // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007 /************************************************************************** * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. * * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for * * full copyright notice. * **************************************************************************/ #if !defined(__CINT__) || defined(__MAKECINT__) #include #include #include #include #include #include #include #include #include #include #include #endif TEveGeoShape* GetItsUpgradeGeom(Bool_t bPrint=kTRUE); TEveGeoShape* geom_gentle_itsU(Bool_t register_as_global=kTRUE) { gSystem->Load("libITSUpgradeBase"); gSystem->Load("libITSUpgradeSim"); TFile f("$ALICE_ROOT/EVE/alice-data/gentle_geo.root"); TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) f.Get("Gentle"); TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse); f.Close(); TEveElement* elPHOS = gsre->FindChild("PHOS"); elPHOS->SetRnrState(kTRUE); elPHOS->FindChild("PHOS_4")->SetRnrState(kFALSE); elPHOS->FindChild("PHOS_5")->SetRnrState(kFALSE); TEveElement* elITS = gsre->FindChild("ITS"); elITS->SetRnrState(kFALSE); TEveElement* elTPC = gsre->FindChild("TPC"); elTPC->SetRnrState(kFALSE); TEveElement* elPHOS = gsre->FindChild("PHOS"); elPHOS->SetRnrState(kFALSE); TEveElement* elTRD = gsre->FindChild("TRD+TOF"); elTRD->SetRnrState(kFALSE); TEveElement* elHMPID = gsre->FindChild("HMPID"); elHMPID->SetRnrState(kFALSE); TEveGeoShape* elITSU = GetItsUpgradeGeom(); elITSU->SetRnrState(kTRUE); gsre->AddElement(elITSU); if (register_as_global) { gEve->AddGlobalElement(gsre); } return gsre; } TEveGeoShape* geom_gentle_itsU_rphi() { // The resulting geometry is NOT added into the global scene! TFile f("$ALICE_ROOT/EVE/alice-data/gentle_rphi_geo.root"); TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) f.Get("Gentle"); TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse); f.Close(); TEveElement* elPHOS = gsre->FindChild("PHOS"); elPHOS->SetRnrState(kTRUE); elPHOS->FindChild("PHOS_4")->SetRnrState(kFALSE); elPHOS->FindChild("PHOS_5")->SetRnrState(kFALSE); TEveElement* elITS = gsre->FindChild("ITS"); elITS->SetRnrState(kFALSE); TEveGeoShape* elITSupgr = GetItsUpgradeGeom(kFALSE); elITSupgr->SetRnrState(kTRUE); gsre->AddElement(elITSupgr); return gsre; } TEveGeoShape* geom_gentle_itsU_rhoz() { // The resulting geometry is NOT added into the global scene! TFile f("$ALICE_ROOT/EVE/alice-data/gentle_rhoz_geo.root"); TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) f.Get("Gentle"); TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse); f.Close(); TEveElement* elITS = gsre->FindChild("ITS"); elITS->SetRnrState(kFALSE); TEveGeoShape* elITSupgr = GetItsUpgradeGeom(kFALSE); elITSupgr->SetRnrState(kTRUE); gsre->AddElement(elITSupgr); return gsre; } TEveGeoShape* GetItsUpgradeGeom(Bool_t bPrint) { gGeoManager = gEve->GetGeometry("geometry.root"); AliITSUGeomTGeo* gm = new AliITSUGeomTGeo(kTRUE); TGeoVolume *itsV = gGeoManager->GetVolume(gm->GetITSVolPattern()); if (!itsV) printf("ITS volume %s is not in the geometry\n",gm->GetITSVolPattern()); // Re-create the Volume // -------------------------------------------- TEveGeoShape *itsU = new TEveGeoShape("ITSU"); // Loop on all ITSV nodes, count Layer volumes by checking names Int_t nNodes = itsV->GetNodes()->GetEntries(); for (Int_t j=0; jGetNodes()->At(j)->GetName(),gm->GetITSLayerPattern())) { char laddnam[30]; snprintf(laddnam, 30, "%s%d", gm->GetITSLayerPattern(),j); TGeoVolume* volLd = gGeoManager->GetVolume(laddnam); TGeoTube *t=(TGeoTube*)volLd->GetShape(); if (bPrint) { printf("%s ",itsV->GetNodes()->At(j)->GetName()); printf(" r = (%3.2lf %3.2lf) ",t->GetRmin(),t->GetRmax()); printf(" z = %3.2lf ",t->GetDz()); printf(" #lad = %d \n",gm->GetNLadders(j)); } // Add Element to EVE TGeoTube *layer = new TGeoTube(t->GetRmin(),t->GetRmax(),t->GetDz()); TEveGeoShape *elLayer = new TEveGeoShape(Form("%s%d",gm->GetITSLayerPattern(),j)); elLayer->SetShape(layer); elLayer->SetMainColor(kGreen); elLayer->SetMainTransparency(90); itsU->AddElement(elLayer); } } itsU->SetMainColor(kGreen); return itsU; }