ROOT logo
// $Id: geom_gentle.C 30976 2009-02-11 15:55:45Z mtadel $
// 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 "TEveGeoShapeExtract.h"
#include "TEveGeoNode.h"
#include "TEveManager.h"
#include "TEveEventManager.h"
#include "TEveElement.h"
#include "TGLViewer.h"

#include "TFile.h"
#include "TStyle.h"
#endif

// -----------------------------------------------------------------
TEveGeoShape* geom_gentle_hlt(Bool_t register_as_global=kTRUE) {
  TFile f("$ALICE_ROOT/EVE/alice-data/gentle_geo.root");
  TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) f.Get("Gentle");
  TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse);
  f.Close();

  TEveElement* elTRD = gsre->FindChild("TRD+TOF");
  elTRD->SetRnrState(kFALSE);

  TEveElement* elHMPID = gsre->FindChild("HMPID");
  elHMPID->SetRnrState(kFALSE);

  TEveElement* elPHOS = gsre->FindChild("PHOS");
  elPHOS->SetRnrState(kTRUE);
  elPHOS->FindChild("PHOS_4")->SetRnrState(kFALSE);
  elPHOS->FindChild("PHOS_5")->SetRnrState(kFALSE);


  if (register_as_global) {
    gEve->AddGlobalElement(gsre);
  }

  return gsre;
}

// -----------------------------------------------------------------
TEveGeoShape* geom_gentle_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);

  return gsre;
}

// -----------------------------------------------------------------
TEveGeoShape* geom_gentle_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();

  return gsre;
}

// -----------------------------------------------------------------
TEveGeoShape* geom_gentle_trd() {
  TFile f("$ALICE_ROOT/EVE/alice-data/gentle_geo_trd.root");
  TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) f.Get("Gentle TRD");
  TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse);
  gEve->AddGlobalElement(gsre);
  f.Close();

  Int_t sm = 0;

  // Fix visibility, color and transparency
  gsre->SetRnrSelf(kFALSE);
  for (TEveElement::List_i i = gsre->BeginChildren(); i != gsre->EndChildren(); ++i) {

    TEveGeoShape* lvl1 = (TEveGeoShape*) *i;
    lvl1->SetRnrSelf(kFALSE);
    for (TEveElement::List_i j = lvl1->BeginChildren(); j != lvl1->EndChildren(); ++j) {

      TEveGeoShape* lvl2 = (TEveGeoShape*) *j;
      
      if ( sm == 0 || sm == 1 || sm == 7 || sm == 8 || sm == 9 || sm == 10 || sm == 17 )
	lvl2->SetRnrSelf(kTRUE);	
      else 
	lvl2->SetRnrSelf(kFALSE);	

      lvl2->SetMainColor(3);
      lvl2->SetMainTransparency(80);

      ++sm;
    }
    
  }

  return gsre;
}

void DrawDeep(TEveGeoShape *gsre) {
  
  for (TEveElement::List_i i = gsre->BeginChildren(); i != gsre->EndChildren(); ++i) {
    TEveGeoShape* lvl = (TEveGeoShape*) *i;
    lvl->SetRnrSelf(kFALSE);
    if (!lvl->HasChildren()) {
      lvl->SetRnrSelf(kTRUE);
      lvl->SetMainColor(3);
      lvl->SetMainTransparency(50);
    }
    DrawDeep(lvl);
  }

}

TEveGeoShape* geom_gentle_muon(Bool_t updateScene = kTRUE) {

  TFile f("$ALICE_ROOT/EVE/alice-data/gentle_geo_muon.root");
  TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) f.Get("Gentle MUON");
  TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse);
  gEve->AddGlobalElement(gsre);
  f.Close();

  gsre->SetRnrSelf(kFALSE);

  DrawDeep(gsre);

  if ( updateScene ) {
    TGLViewer* v = gEve->GetDefaultGLViewer();
    v->UpdateScene();
  }

  return gsre;

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