ROOT logo
// $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 <TFile.h>
#include <TEveManager.h>
#include <TEveGeoNode.h>
#include <TEveElement.h>
#include <TEveGeoShape.h>
#include <TEveGeoShapeExtract.h>
#include <AliITSUGeomTGeo.h>
#include <TGeoManager.h>
#include <TGeoVolume.h>
#include <TGeoTube.h>
#include <TSystem.h>
#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 nLayers=gm->GetNLayers();
  for (Int_t l=0; l<nLayers; l++) {
      Int_t id=gm->GetFirstChipIndex(l);
      Double_t loc[3]={0.,0.,0.}, glo[3];
      gm->LocalToGlobal(id,loc,glo);
      Double_t rMid=TMath::Sqrt(glo[0]*glo[0] + glo[1]*glo[1]);
      Double_t dz=TMath::Abs(glo[2]); 
      
      // Add Element to EVE
      TGeoTube *layer = new TGeoTube(rMid-0.25,rMid+0.25,dz+1.5);
      TEveGeoShape *elLayer = 
      new TEveGeoShape(Form("%s%d",gm->GetITSLayerPattern(),l));
      elLayer->SetShape(layer);
      elLayer->SetMainColor(kGreen);
      elLayer->SetMainTransparency(70/*90*/);
      itsU->AddElement(elLayer);
  }

  itsU->SetMainColor(kGreen);
  
  return itsU;


}
 geom_gentle_itsU.C:1
 geom_gentle_itsU.C:2
 geom_gentle_itsU.C:3
 geom_gentle_itsU.C:4
 geom_gentle_itsU.C:5
 geom_gentle_itsU.C:6
 geom_gentle_itsU.C:7
 geom_gentle_itsU.C:8
 geom_gentle_itsU.C:9
 geom_gentle_itsU.C:10
 geom_gentle_itsU.C:11
 geom_gentle_itsU.C:12
 geom_gentle_itsU.C:13
 geom_gentle_itsU.C:14
 geom_gentle_itsU.C:15
 geom_gentle_itsU.C:16
 geom_gentle_itsU.C:17
 geom_gentle_itsU.C:18
 geom_gentle_itsU.C:19
 geom_gentle_itsU.C:20
 geom_gentle_itsU.C:21
 geom_gentle_itsU.C:22
 geom_gentle_itsU.C:23
 geom_gentle_itsU.C:24
 geom_gentle_itsU.C:25
 geom_gentle_itsU.C:26
 geom_gentle_itsU.C:27
 geom_gentle_itsU.C:28
 geom_gentle_itsU.C:29
 geom_gentle_itsU.C:30
 geom_gentle_itsU.C:31
 geom_gentle_itsU.C:32
 geom_gentle_itsU.C:33
 geom_gentle_itsU.C:34
 geom_gentle_itsU.C:35
 geom_gentle_itsU.C:36
 geom_gentle_itsU.C:37
 geom_gentle_itsU.C:38
 geom_gentle_itsU.C:39
 geom_gentle_itsU.C:40
 geom_gentle_itsU.C:41
 geom_gentle_itsU.C:42
 geom_gentle_itsU.C:43
 geom_gentle_itsU.C:44
 geom_gentle_itsU.C:45
 geom_gentle_itsU.C:46
 geom_gentle_itsU.C:47
 geom_gentle_itsU.C:48
 geom_gentle_itsU.C:49
 geom_gentle_itsU.C:50
 geom_gentle_itsU.C:51
 geom_gentle_itsU.C:52
 geom_gentle_itsU.C:53
 geom_gentle_itsU.C:54
 geom_gentle_itsU.C:55
 geom_gentle_itsU.C:56
 geom_gentle_itsU.C:57
 geom_gentle_itsU.C:58
 geom_gentle_itsU.C:59
 geom_gentle_itsU.C:60
 geom_gentle_itsU.C:61
 geom_gentle_itsU.C:62
 geom_gentle_itsU.C:63
 geom_gentle_itsU.C:64
 geom_gentle_itsU.C:65
 geom_gentle_itsU.C:66
 geom_gentle_itsU.C:67
 geom_gentle_itsU.C:68
 geom_gentle_itsU.C:69
 geom_gentle_itsU.C:70
 geom_gentle_itsU.C:71
 geom_gentle_itsU.C:72
 geom_gentle_itsU.C:73
 geom_gentle_itsU.C:74
 geom_gentle_itsU.C:75
 geom_gentle_itsU.C:76
 geom_gentle_itsU.C:77
 geom_gentle_itsU.C:78
 geom_gentle_itsU.C:79
 geom_gentle_itsU.C:80
 geom_gentle_itsU.C:81
 geom_gentle_itsU.C:82
 geom_gentle_itsU.C:83
 geom_gentle_itsU.C:84
 geom_gentle_itsU.C:85
 geom_gentle_itsU.C:86
 geom_gentle_itsU.C:87
 geom_gentle_itsU.C:88
 geom_gentle_itsU.C:89
 geom_gentle_itsU.C:90
 geom_gentle_itsU.C:91
 geom_gentle_itsU.C:92
 geom_gentle_itsU.C:93
 geom_gentle_itsU.C:94
 geom_gentle_itsU.C:95
 geom_gentle_itsU.C:96
 geom_gentle_itsU.C:97
 geom_gentle_itsU.C:98
 geom_gentle_itsU.C:99
 geom_gentle_itsU.C:100
 geom_gentle_itsU.C:101
 geom_gentle_itsU.C:102
 geom_gentle_itsU.C:103
 geom_gentle_itsU.C:104
 geom_gentle_itsU.C:105
 geom_gentle_itsU.C:106
 geom_gentle_itsU.C:107
 geom_gentle_itsU.C:108
 geom_gentle_itsU.C:109
 geom_gentle_itsU.C:110
 geom_gentle_itsU.C:111
 geom_gentle_itsU.C:112
 geom_gentle_itsU.C:113
 geom_gentle_itsU.C:114
 geom_gentle_itsU.C:115
 geom_gentle_itsU.C:116
 geom_gentle_itsU.C:117
 geom_gentle_itsU.C:118
 geom_gentle_itsU.C:119
 geom_gentle_itsU.C:120
 geom_gentle_itsU.C:121
 geom_gentle_itsU.C:122
 geom_gentle_itsU.C:123
 geom_gentle_itsU.C:124
 geom_gentle_itsU.C:125
 geom_gentle_itsU.C:126
 geom_gentle_itsU.C:127
 geom_gentle_itsU.C:128
 geom_gentle_itsU.C:129
 geom_gentle_itsU.C:130
 geom_gentle_itsU.C:131
 geom_gentle_itsU.C:132
 geom_gentle_itsU.C:133
 geom_gentle_itsU.C:134
 geom_gentle_itsU.C:135
 geom_gentle_itsU.C:136
 geom_gentle_itsU.C:137
 geom_gentle_itsU.C:138
 geom_gentle_itsU.C:139
 geom_gentle_itsU.C:140
 geom_gentle_itsU.C:141
 geom_gentle_itsU.C:142
 geom_gentle_itsU.C:143
 geom_gentle_itsU.C:144
 geom_gentle_itsU.C:145
 geom_gentle_itsU.C:146
 geom_gentle_itsU.C:147
 geom_gentle_itsU.C:148
 geom_gentle_itsU.C:149
 geom_gentle_itsU.C:150
 geom_gentle_itsU.C:151
 geom_gentle_itsU.C:152