+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-*/
-
-// -*- C++ -*-
-//
-// 1998/10/19
-// ---------------------------------------------------------------------------
-//
-// AliGBox Class
-//
-// This file is part of the ALICE Geometry Database .
-//
-// Author: Joana E. Santo & company...
-//
-// ---------------------------------------------------------------------------
-
-#include <TView.h>
-#include <TCanvas.h>
-#include <TVirtualPad.h>
-#include <iostream.h>
-#include <TGLKernelABC.h>
-#include "AliGBox.h"
-#include <TROOT.h>
-
-ClassImp(AliGBox)
-
-
-//-------------------------------------------------------------------------
-
-AliGBox::AliGBox(Text_t* name,Text_t* title, Float_t Dx, Float_t Dy, Float_t Dz) : AliGShape(name, title)
-{
- /* Constructor */
- fDx = Dx;
- fDy = Dy;
- fDz = Dz;
-}
-
-//-------------------------------------------------------------------------
-
-AliGBox::AliGBox( AliGBox* box )
-{
- if( box ) {
- /* Copy Constructor */
- fDx = box->fDx;
- fDy = box->fDy;
- fDz = box->fDz;
- fName = box->fName;
- fTitle = box->fTitle;
- fColor = box->fColor;
- }
- else{
- /* Default Constructor */
- fDx = 0;
- fDy = 0;
- fDz = 0;
- fName = "";
- fTitle = "";
- }
-}
-
-//-------------------------------------------------------------------------
-
-AliGBox* AliGBox::operator=(const AliGBox *box)
-{
- /* Operator = */
- if( this == box) return this; // special case.
-
- fDx = box->fDx;
- fDy = box->fDy;
- fDz = box->fDz;
- fName = box->fName;
- fTitle = box->fTitle;
- fColor = box->fColor;
-
- return this;
-}
-
-//-------------------------------------------------------------------------
-
-void AliGBox::DrawShape(Option_t *option)
-{
- Draw(option);
- gPad->Update();
-}
-
-//-------------------------------------------------------------------------
-
-void AliGBox::Paint(Option_t *option)
-{
- SetLineColor( GetCol() );
- const Int_t numpoints = 8;
-
- //*-* Allocate memory for points *-*
-
- Float_t *points = new Float_t[3*numpoints];
- if (!points) return;
-
- SetPoints(points);
-
- if (gPad->GetView3D()) PaintGLPoints(points);
-
- //== for (Int_t i = 0; i < numpoints; i++)
- // gNode->Local2Master(&points[3*i],&points[3*i]);
-
- Int_t c = ((GetLineColor() % 8) - 1) * 4; // Basic colors: 0, 1, ... 7
- if (c < 0) c = 0;
-
- //*-* Allocate memory for segments *-*
-
- X3DBuffer *buff = new X3DBuffer;
- if (buff) {
- buff->numPoints = 8;
- buff->numSegs = 12;
- buff->numPolys = 6;
- }
-
-//*-* Allocate memory for points *-*
-
- buff->points = points;
- buff->segs = new Int_t[buff->numSegs*3];
- if (buff->segs) {
- buff->segs[ 0] = c; buff->segs[ 1] = 0; buff->segs[ 2] = 1;
- buff->segs[ 3] = c+1; buff->segs[ 4] = 1; buff->segs[ 5] = 2;
- buff->segs[ 6] = c+1; buff->segs[ 7] = 2; buff->segs[ 8] = 3;
- buff->segs[ 9] = c; buff->segs[10] = 3; buff->segs[11] = 0;
- buff->segs[12] = c+2; buff->segs[13] = 4; buff->segs[14] = 5;
- buff->segs[15] = c+2; buff->segs[16] = 5; buff->segs[17] = 6;
- buff->segs[18] = c+3; buff->segs[19] = 6; buff->segs[20] = 7;
- buff->segs[21] = c+3; buff->segs[22] = 7; buff->segs[23] = 4;
- buff->segs[24] = c; buff->segs[25] = 0; buff->segs[26] = 4;
- buff->segs[27] = c+2; buff->segs[28] = 1; buff->segs[29] = 5;
- buff->segs[30] = c+1; buff->segs[31] = 2; buff->segs[32] = 6;
- buff->segs[33] = c+3; buff->segs[34] = 3; buff->segs[35] = 7;
- }
-
-//*-* Allocate memory for polygons *-*
-
- buff->polys = new Int_t[buff->numPolys*6];
- if (buff->polys) {
- buff->polys[ 0] = c; buff->polys[ 1] = 4; buff->polys[ 2] = 0;
- buff->polys[ 3] = 9; buff->polys[ 4] = 4; buff->polys[ 5] = 8;
- buff->polys[ 6] = c+1; buff->polys[ 7] = 4; buff->polys[ 8] = 1;
- buff->polys[ 9] = 10; buff->polys[10] = 5; buff->polys[11] = 9;
- buff->polys[12] = c; buff->polys[13] = 4; buff->polys[14] = 2;
- buff->polys[15] = 11; buff->polys[16] = 6; buff->polys[17] = 10;
- buff->polys[18] = c+1; buff->polys[19] = 4; buff->polys[20] = 3;
- buff->polys[21] = 8; buff->polys[22] = 7; buff->polys[23] = 11;
- buff->polys[24] = c+2; buff->polys[25] = 4; buff->polys[26] = 0;
- buff->polys[27] = 3; buff->polys[28] = 2; buff->polys[29] = 1;
- buff->polys[30] = c+3; buff->polys[31] = 4; buff->polys[32] = 4;
- buff->polys[33] = 5; buff->polys[34] = 6; buff->polys[35] = 7;
- }
-
- //*-* Paint in the pad
- Bool_t rangeView = strcmp(option,"range")==0 ? kTRUE : kFALSE;
- PaintShape(buff,rangeView);
-
- if (strstr(option, "x3d")) {
- if(buff && buff->points && buff->segs)
- FillX3DBuffer(buff);
- else {
- gSize3D.numPoints -= buff->numPoints;
- gSize3D.numSegs -= buff->numSegs;
- gSize3D.numPolys -= buff->numPolys;
- }
- }
-
- delete [] points;
- if (buff->segs) delete [] buff->segs;
- if (buff->polys) delete [] buff->polys;
- if (buff) delete buff;
-
-
-}
-
-
-
-
-// ---------------------------------------------------------------------------
-
-void AliGBox::PaintGLPoints(Float_t *vertex)
-{
-//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Paint BRIK via OpenGL *-*-*-*-*-*-*-*-*-*-*-*-*
-//*-* =====================
- gGLKernel->PaintBrik(vertex);
-}
-
-
-// ---------------------------------------------------------------------------
-
-void AliGBox::SetPoints(Float_t *buff)
-{
-//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Create AliGBox points*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
-//*-* =====================
-
- if (buff) {
- buff[ 0] = -fDx; buff[ 1] = -fDy; buff[ 2] = -fDz;
- buff[ 3] = fDx; buff[ 4] = -fDy; buff[ 5] = -fDz;
- buff[ 6] = fDx; buff[ 7] = fDy; buff[ 8] = -fDz;
- buff[ 9] = -fDx; buff[10] = fDy; buff[11] = -fDz;
- buff[12] = -fDx; buff[13] = -fDy; buff[14] = fDz;
- buff[15] = fDx; buff[16] = -fDy; buff[17] = fDz;
- buff[18] = fDx; buff[19] = fDy; buff[20] = fDz;
- buff[21] = -fDx; buff[22] = fDy; buff[23] = fDz;
- }
-}
-
-//-------------------------------------------------------------------------
-
-void AliGBox::Sizeof3D() const
-{
-//*-*-*-*-*-*-*Return total X3D size of this shape with its attributes*-*-*-*-*-*
-//*-* =======================================================
-
- //cout << " Entra en AliGBox::Sizeof3D() " << endl;
-
- gSize3D.numPoints += 8;
- gSize3D.numSegs += 12;
- gSize3D.numPolys += 6;
-}
-
-
-
-
-
-
-
-
+++ /dev/null
-#ifndef ALIGBOX_H
-#define ALIGBOX_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-/* -*- C++ -*-
-//
-// 1998/10/19
-// ---------------------------------------------------------------------------
-//
-// AliGBox Class
-//
-// This file is part of the ALICE Geometry Database .
-//
-// Author: Joana E. Santo
-//
-// ---------------------------------------------------------------------------
-// AliGBox is a subclass of AliGShape. Its dimensions are:
-// - Dx half-length of the bosx along X-axis
-// - Dy hlf-length of the box along Y-axis
-// - Dz half-length of the box along Z-axis */
-
-
-#include "AliGShape.h"
-
-class AliGBox: public AliGShape {
-
- protected:
- Float_t fDx; /* X half Dimension */
- Float_t fDy; /* Y half Dimension */
- Float_t fDz; /* Z half Dimension */
-
- public:
- AliGBox( Text_t* name,Text_t* title, Float_t Dx, Float_t Dy, Float_t Dz ); /* Constructor */
- AliGBox( AliGBox* box=NULL ); /* Copy or Default Constructor */
- AliGBox* operator=( const AliGBox *box ); /* Operator = */
- virtual ~AliGBox() {} /* Destructor */
-
- //virtual void Draw( Option_t* option );
- virtual void DrawShape( Option_t* option ); // *MENU*
- Float_t GetX() {return fDx;}
- Float_t GetY() {return fDy;}
- Float_t GetZ() {return fDz;}
- virtual void Paint( Option_t* option );
- virtual void PaintGLPoints( Float_t* vertex );
- virtual void SetPoints( Float_t* buff );
- void SetX(Float_t Dx) {fDx = Dx;}
- void SetY(Float_t Dy) {fDy = Dy;}
- void SetZ(Float_t Dz) {fDz = Dz;}
- virtual void Sizeof3D() const;
- //void Streamer(TBuffer &b);
-
- ClassDef(AliGBox,1) // Simple box class
-};
-
-#endif
-
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-*/
-
-// -*- C++ -*-
-//
-// 1998/10/19
-// ---------------------------------------------------------------------------
-//
-// AliGCone Class
-//
-// This file is part of the ALICE Geometry Database .
-//
-// By: Joana E. Santo & David Collados
-//
-// ---------------------------------------------------------------------------
-
-#include <TView.h>
-#include <TVirtualPad.h>
-#include <iostream.h>
-#include <TGLKernelABC.h>
-#include <TCanvas.h>
-#include "AliGCone.h"
-#include "TROOT.h"
-
-ClassImp(AliGCone)
-
-AliGCone::AliGCone() : AliGTube()
-{
- /* Default Constructor */
- fRmax2 = 0.; // outside radius at the high z limit
- fRmin2 = 0.; // inside radius at the high z limit
-
- //SetLineColor(5); // Yellow
-}
-
-//-------------------------------------------------------------------------
-
-AliGCone::AliGCone(Text_t *name, Text_t *title, Float_t dz, Float_t rmin1, Float_t rmax1, Float_t rmin2, Float_t rmax2) : AliGTube(name, title, rmin1, rmax1, dz)
-{
- /* Constructor */
- fRmax2 = rmax2;
- fRmin2 = rmin2;
-
- //SetLineColor(5); // Yellow
-}
-
-//-------------------------------------------------------------------------
-
-AliGCone::AliGCone(AliGCone *cone)
-{
- /* Copy Constructor */
- fRmax2 = cone->fRmax2;
- fRmin2 = cone->fRmin2;
- fColor = cone->fColor;
-
- //SetLineColor(5); // Yellow
-}
-
-//-------------------------------------------------------------------------
-
-AliGCone::AliGCone(Text_t *name, Text_t *title, Float_t dz, Float_t rmax1, Float_t rmax2) : AliGTube(name, title, 0, rmax1, dz)
-{
- /* Simplified Constructor */
- fRmin2 = 0;
- fRmax2 = rmax2;
-
- //SetLineColor(5); // Yellow
-}
-
-//-------------------------------------------------------------------------
-
-AliGCone::~AliGCone() {
- /* Destructor */
-}
-
-//-------------------------------------------------------------------------
-
-void AliGCone::DrawShape(Option_t *option)
-{
- Draw(option);
- gPad->Update();
-}
-
-//-------------------------------------------------------------------------
-
-void AliGCone::Draw(Option_t *option)
-{
- cout << " Entra en " << this->GetName() << "::Draw " << endl;
- TString opt = option;
- opt.ToLower();
-
- if( !gPad ) {
- //TCanvas* Cone = new TCanvas("AliGCone","AliGCone",0,0,400,300);
- gPad = new TCanvas("AliGCone","AliGCone",0,0,400,300);
- gPad->Range(0,0,1,1);
- gPad->SetFillColor(32); // Light Green
- gPad->SetBorderSize(3);
- gPad->SetBorderMode(0); // -1 (down) 0 (no) 1 (up)
- }
- else {
- if( !opt.Contains("same") ) {
- gPad->Clear();
- gPad->SetName("AliGCone");
- gPad->SetTitle("AliGCone");
- }
- else {
- gPad->SetName("AliShapes");
- gPad->SetTitle("AliShapes");
- }
- }
-
- AppendPad(option);
- TView *view = gPad->GetView();
-
- if (!view)
- view = new TView(1);
-
- view->SetAutoRange(kTRUE);
- Paint(option);
- view->SetAutoRange(kFALSE);
- cout << " Sale de " << this->GetName() << "::Draw " << endl;
-}
-
-//-------------------------------------------------------------------------
-
-void AliGCone::SetPoints(Float_t *buff)
-{
-//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Create CONE points*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
-//*-* ==================
-
- //cout << " Entra en " << this->GetName() << "::Paint " << endl;
- SetLineColor( GetCol() );
-
- Float_t rmin1, rmax1, dz;
- Int_t j, n;
-
- n = GetNumberOfDivisions();
-
- rmin1 = AliGTube::fRmin;
- rmax1 = AliGTube::fRmax;
- dz = AliGTube::fDz;
-
- Int_t indx = 0;
-
-//*-* We've to checxk whether the table does exist and create it
-//*-* since fCoTab/fSiTab are not saved with any TShape::Streamer function
- if (!fCoTab) MakeTableOfCoSin();
-
- if (buff) {
- for (j = 0; j < n; j++) {
- buff[indx++] = rmin1 * fCoTab[j];
- buff[indx++] = rmin1 * fSiTab[j];
- buff[indx++] = -dz;
- }
- for (j = 0; j < n; j++) {
-
- buff[indx++] = rmax1 * fCoTab[j];
- buff[indx++] = rmax1 * fSiTab[j];
- buff[indx++] = -dz;
- }
-
- for (j = 0; j < n; j++) {
- buff[indx++] = fRmin2 * fCoTab[j];
- buff[indx++] = fRmin2 * fSiTab[j];
- buff[indx++] = dz;
- }
-
- for (j = 0; j < n; j++) {
- buff[indx++] = fRmax2 * fCoTab[j];
- buff[indx++] = fRmax2 * fSiTab[j];
- buff[indx++] = dz;
- }
- }
-
- //cout << " Sale de " << this->GetName() << "::Paint " << endl;
-}
-
-//-------------------------------------------------------------------------
-
-
+++ /dev/null
-#ifndef ALIGCONE_H
-#define ALIGCONE_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-#include "AliGTube.h"
-
-class AliGCone: public AliGTube {
-
- protected:
- Float_t fRmax2; /* outside radius at the high z limit */
- Float_t fRmin2; /* inside radius at the high z limit */
-
- public:
- AliGCone(); /* Default Constructor */
- AliGCone( Text_t *name, Text_t *title, Float_t dz, Float_t rmin1, Float_t rmax1, Float_t rmin2, Float_t rmax2 );
- AliGCone( Text_t *name, Text_t *title, Float_t dz, Float_t rmax1, Float_t rmax2=0 );
- AliGCone(AliGCone *cone);
- virtual ~AliGCone(); /* Destructor */
-
- Float_t GetRmin2() {return fRmin2;}
- Float_t GetRmax2() {return fRmax2;}
-
- virtual void DrawShape(Option_t *option); // *MENU*
- virtual void Draw(Option_t *option);
- virtual void SetPoints(Float_t *buff);
-
- ClassDef(AliGCone,1) // Simple cone class
-};
-#endif
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-*/
-
-// -*- C++ -*-
-//
-// 1998/11/25
-// ---------------------------------------------------------------------------
-//
-// AliGConfig Class
-//
-// This file is part of the ALICE Geometry Database .
-//
-// Author: Joana E. Santo/David Collados/Antonino Bajeli
-//
-// ---------------------------------------------------------------------------
-
-#include <iostream.h>
-#include "AliGConfig.h"
-
-ClassImp(AliGConfig)
-
-//-------------------------------------------------------------------------
-
-AliGConfig::AliGConfig( Text_t* name, Text_t* title, TStringLong formula, Text_t* detail, const Text_t* shapetype, const Text_t* shapename, const Text_t* materialname, Int_t beg, Int_t end ) : TNamed(name, title)
-{
- /* Constructor */
- fBeg.Set(beg,0000); // Time validity of node version
- fDetail = detail; // Level of detail
- fEnd.Set(end,0000); // Time validity of node version
-
- fFormula = formula; //Formula describing the node structure below
- fMaterialName = materialname;
- fShapeName = shapename;
- fShapeType = shapetype;
-}
-
-//-------------------------------------------------------------------------
-
-AliGConfig::AliGConfig( AliGConfig* Config )
-{
- if( Config ) {
- /* Copy Constructor */
- fBeg.Copy(Config->fBeg); // Time validity of node version
- fDetail = Config->fDetail.Copy(); // Level of detail
- fEnd.Copy(Config->fEnd); // Time validity of node version
-
- fFormula = Config->fFormula.Copy();
- fMaterialName = Config->fMaterialName.Copy();
- fName = Config->fName.Copy();
- fShapeName = Config->fShapeName.Copy();
- fShapeType = Config->fShapeType.Copy();
- fTitle = Config->fTitle.Copy();
- }
- else {
- /* Default Constructor */
- fBeg.Set(); // Time validity of node version
- fDetail = ""; // Level of detail
- fEnd.Set(); // Time validity of node version
- fFormula = ""; // Formula describing the node structure below
- fMaterialName = "";
- fName = "";
- fShapeName = "";
- fShapeType = "";
- fTitle = "";
- }
-}
-
-//-------------------------------------------------------------------------
-
-AliGConfig::~AliGConfig()
-{
- /* Destructor */
-}
-
-//-------------------------------------------------------------------------
-
-AliGConfig* AliGConfig::operator=( AliGConfig* Config )
-{
- /* Operator = */
- if( this == Config) return this; // special case.
-
- Config->fBeg.Copy(this->fBeg); // Time validity of node version
- fDetail = Config->fDetail; // Level of detail
- Config->fEnd.Copy(this->fEnd); // Time validity of node version
-
- fFormula = Config->fFormula.Copy();
- fMaterialName = Config->fMaterialName.Copy();
- fName = Config->fName.Copy();
- fShapeName = Config->fShapeName.Copy();
- fShapeType = Config->fShapeType.Copy();
- fTitle = Config->fTitle.Copy();
-
- return this;
-}
-
-//-------------------------------------------------------------------------
-
+++ /dev/null
-#ifndef ALIGConfig_H
-#define ALIGConfig_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-#include <TNamed.h>
-#include <TString.h>
-#include <TStringLong.h>
-#include <TDatime.h>
-
-class AliGConfig: public TNamed {
-
- protected:
- TDatime fBeg; // Time validity of node version
- TString fDetail; // Level of detail
- TDatime fEnd; // Time validity of node version
- //char* fFormula; // Formula describing the node structure below
- TStringLong fFormula; // Formula describing the node structure below
- TString fMaterialName;
- TString fShapeName;
- TString fShapeType;
-
- public:
- AliGConfig( Text_t* name, Text_t* title, TStringLong formula, Text_t* detail=NULL, const Text_t* shapetype=NULL, const Text_t* shapename=NULL, const Text_t* materialname=NULL, Int_t beg=0, Int_t end=0 );
- AliGConfig( AliGConfig* Config=NULL ); /* Copy Constructor */
- virtual ~AliGConfig(); /* Destructor */
- AliGConfig* operator=( AliGConfig* Config ); /* Operator = */
-
- TStringLong GetFormula() const { return fFormula; }
- TString GetMaterialName() const { return fMaterialName; }
- TString GetShapeName() const { return fShapeName; }
- TString GetShapeType() const { return fShapeType; }
-
- ClassDef(AliGConfig,1) //Config class
-};
-#endif
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-Revision 1.3 1999/11/03 13:17:05 fca
-Have ProdProcess return const char*
-
-Revision 1.2 1999/09/29 09:24:19 fca
-Introduction of the Copyright and cvs Log
-
-*/
-
-//////////////////////////////////////////////////////
-// C++ dummy interface to Geant3 basic routines //
-//////////////////////////////////////////////////////
-
-#include <iostream.h>
-#include <TBrowser.h>
-#include <TCanvas.h>
-#include "AliGEODB.h"
-#include "AliGNode.h"
-#include "AliGShape.h"
-#include "AliGMaterial.h"
-#include "AliGTransform.h"
-#include "AliGTube.h"
-#include "AliGBox.h"
-#include "AliGTRD1.h"
-#include "AliGPCone.h"
-#include "AliGeometry.h"
-
-//---------------------------------------------------------
-
-#define MAXMAT 1000
-
-struct Mater{
- char* fName;
- Float_t fA;
- Float_t fZ;
- Float_t fDens;
- Float_t fRadl;
- Float_t fAbsl;
- Float_t* fBuf;
- Int_t fNwbuf;
-};
-
-Mater* AliMaterials[MAXMAT]; // Array of Mater structs containing the AliMaterial parameters.
-
-struct Med{
- char* fName;
- Int_t fNmat;
- Int_t fIsvol;
- Int_t fIfield;
- Float_t fFieldm;
- Float_t fTmaxfd;
- Float_t fStemax;
- Float_t fDeemax;
- Float_t fEpsil;
- Float_t fStmin;
- Float_t* fUbuf;
- Int_t fNbuf;
-};
-
-Med* AliMediums[MAXMAT]; // Array of Med structs containing the AliMedium parameters.
-
-struct NodePosp{
- char* name;
- char* shape;
- Int_t nmed;
-};
-
-NodePosp* Posp[MAXMAT];
-
-AliGMaterial* Mat[MAXMAT]; // List of Pointers to my AliGMaterials created
-
-Int_t MateCount = 0;
-Int_t MedCount = 0;
-Int_t MatrCount = 0;
-Int_t PospCount = 0;
-Int_t Color = 2;
-
-TList* listNodes = new TList(); // List of Nodes
-TList* listTransf = new TList();
-TList* listShapes = new TList();
-TList* listMaterials = new TList();
-
-AliGNode* TopNode = NULL;
-
-/***********************************************************************/
-
-ClassImp(AliGEODB)
-
-/***********************************************************************/
-
-AliGEODB::AliGEODB(const char *title, Int_t) : AliMC("AliGEODB",title)
-{
- //cout << " AliGEODB" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::DefaultRange()
-{
- cout << " DefaultRange" << endl;
-}
-
-//=======================functions from GBASE
-
-/***********************************************************************/
-
-void AliGEODB::Gfile(const char*, const char*)
-{
- cout << " Gfile" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::GeomIter()
-{
- cout << " GeomIter" << endl;
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::CurrentMaterial(Float_t &, Float_t &, Float_t &, Float_t &, Float_t &) const
-{
- cout << " CurrentMaterial" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::NextVolUp(Text_t*, Int_t&)
-{
- cout << " NextVolUp" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::CurrentVol(Text_t*, Int_t&) const
-{
- cout << " CurrentVol" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::NofVolumes() const
-{
- cout << " NofVolumes" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::CurrentVolOff(Int_t, Text_t*, Int_t&) const
-{
- cout << " CurrentVolOff" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-void AliGEODB::TrackPosition(Float_t*) const
-{
- cout << " TrackPosition" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::TrackMomentum(Float_t*) const
-{
- cout << " TrackMomentum" << endl;
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::VolId( Text_t* name ) const
-{
- cout << " VolId" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-const char* AliGEODB::VolName(Int_t ) const
-{
- cout << " VolName" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Float_t AliGEODB::TrackCharge() const
-{
- cout << " TrackCharge" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Float_t AliGEODB::TrackMass() const
-{
- cout << " TrackMass" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Bool_t AliGEODB::TrackInside() const
-{
- cout << " TrackInside" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Bool_t AliGEODB::TrackEntering() const
-{
- cout << " TrackEntering" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Bool_t AliGEODB::TrackExiting() const
-{
- cout << " TrackExiting" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Bool_t AliGEODB::TrackOut() const
-{
- cout << " TrackOut" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Bool_t AliGEODB::TrackDisappear() const
-{
- cout << " TrackDisappear" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Bool_t AliGEODB::TrackStop() const
-{
- cout << " TrackStop" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::NSecondaries() const
-{
- cout << " NSecondaries" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-AliMCProcess AliGEODB::ProdProcess() const
-{
- cout << " ProdProcess" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-void AliGEODB::GetSecondary(Int_t, Int_t&, Float_t*, Float_t*)
-{
- cout << " GetSecondary" << endl;
-}
-
-/***********************************************************************/
-
-Float_t AliGEODB::MaxStep() const
-{
- cout << " MaxStep" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetMaxStep(Float_t )
-{
- cout << " SetMaxStep" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::GetParticle(const Int_t, char*, Float_t&) const
-{
- cout << " GetParticle" << endl;
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::CurrentEvent() const
-{
- cout << " CurrentEvent" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::GetMedium() const
-{
- cout << " GetMedium" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Float_t AliGEODB::Edep() const
-{
- cout << " Edep" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Float_t AliGEODB::Etot() const
-{
- cout << " Etot" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Rndm(Float_t*, const Int_t) const
-{
- cout << " Rndm" << endl;
-}
-
-/***********************************************************************/
-
-Float_t AliGEODB::TrackStep() const
-{
- cout << " TrackStep" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Float_t AliGEODB::TrackLength() const
-{
- cout << " TrackLength" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Float_t AliGEODB::TrackTime() const
-{
- cout << " TrackTime" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::TrackPid() const
-{
- cout << " TrackPid" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Bool_t AliGEODB::TrackAlive() const
-{
- cout << " TrackAlive" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-void AliGEODB::StopTrack()
-{
- cout << " StopTrack" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::StopEvent()
-{
- cout << " StopEvent" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetMaxNStep(Int_t)
-{
- cout << " SetMaxNStep" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetColors()
-{
- cout << " SetColors" << endl;
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::GetMaxNStep() const
-{
- cout << " GetMaxNStep" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Material( Int_t& kmat, const char* name, Float_t a, Float_t z, Float_t dens, Float_t radl, Float_t absl,Float_t* buf, Int_t nwbuf )
-{
- if( MateCount >= MAXMAT ) {
- printf( " ERROR: Material number: %d bigger that MAXMAT: %d => Out of array\n", MateCount, MAXMAT );
- exit(0);
- }
-
- Mater* AliMat = new Mater;
- char* fname = new char[strlen(name)+1];
- Float_t* fbuf = new Float_t[nwbuf];
-
- strcpy( fname, name );
- fname[strlen(name)] = '\x0';
-
- AliMat->fName = fname;
- AliMat->fA = a;
- AliMat->fZ = z;
- AliMat->fDens = dens;
- AliMat->fRadl = radl;
- AliMat->fAbsl = absl;
- AliMat->fNwbuf = nwbuf;
-
- for( int i=0; i<nwbuf; i++ )
- fbuf[i] = buf[i];
-
- AliMat->fBuf = fbuf;
-
- AliMaterials[MateCount] = AliMat;
-
- kmat = MateCount++;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Mixture( Int_t& imat, const char* name, Float_t* a, Float_t* z, Float_t dens, Int_t nlmat, Float_t* wmat )
-{
- if( MateCount >= MAXMAT ) {
- printf( " ERROR: Mixture number: %d bigger that MAXMAT: %d => Out of array\n", MateCount, MAXMAT );
- exit(0);
- }
-
- Mater* AliMat = new Mater;
- char* fname = new char[strlen(name)+1];
-
- strcpy( fname, name );
- fname[strlen(name)] = '\x0';
-
- AliMat->fName = fname;
- Float_t MidA = 0.;
- Float_t MidZ = 0.;
- Float_t SUMwmat = 0.;
-
- for( int i=0; i<nlmat; i++ ) {
- MidA += wmat[i]*a[i];
- MidZ += wmat[i]*z[i];
- SUMwmat += wmat[i];
- }
-
- MidA = MidA/SUMwmat;
- MidZ = MidZ/SUMwmat;
-
- AliMat->fA = MidA;
- AliMat->fZ = MidZ;
- AliMat->fDens = dens;
- AliMat->fRadl = 0.;
- AliMat->fAbsl = 0.;
- AliMat->fNwbuf = 0;
-
- AliMat->fBuf = NULL;
-
- AliMaterials[MateCount] = AliMat;
-
- imat = MateCount++;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Medium( Int_t& numed, const char* name, Int_t nmat, Int_t isvol, Int_t ifield, Float_t fieldm, Float_t tmaxfd, Float_t stemax, Float_t deemax, Float_t epsil, Float_t stmin, Float_t* ubuf, Int_t nbuf )
-{
- if( MedCount >= MAXMAT ) {
- printf( " ERROR: Medium number: %d bigger that MAXMAT: %d => Out of array\n", MedCount, MAXMAT );
- exit(0);
- }
-
- Med* AliMed = new Med;
- char* fname = new char[strlen(name)+1];
- Float_t* fUbuf = new Float_t[nbuf];
-
- strcpy( fname, name );
- fname[strlen(name)] = '\x0';
-
- AliMed->fName = fname;
- AliMed->fNmat = nmat;
- AliMed->fIsvol = isvol;
- AliMed->fIfield = ifield;
- AliMed->fFieldm = fieldm;
- AliMed->fTmaxfd = tmaxfd;
- AliMed->fStemax = stemax;
- AliMed->fDeemax = deemax;
- AliMed->fEpsil = epsil;
- AliMed->fStmin = stmin;
- AliMed->fNbuf = nbuf;
-
- for( int i=0; i<nbuf; i++ )
- fUbuf[i] = ubuf[i];
-
- AliMed->fUbuf = fUbuf;
-
- AliMediums[MedCount] = AliMed;
-
- numed = MedCount++;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Matrix( Int_t &nmate , Float_t theta1, Float_t phi1, Float_t theta2, Float_t phi2, Float_t theta3, Float_t phi3 )
-{
- char* transname = new char[10];
- sprintf(transname, "%s%d", "tra", MatrCount);
-
- AliGTransform* tra = new AliGTransform( transname, transname, theta1, phi1, theta2, phi2, theta3, phi3 );
-
- //printf( " Created new AliGTransform( %s, %s, %f, %f, %f, %f, %f, %f );\n", transname, transname, theta1, phi1, theta2, phi2, theta3, phi3 );
-
- listTransf->AddAt( tra, MatrCount );
-
- nmate = ++MatrCount;
-
-}
-
-/***********************************************************************/
-
-void AliGEODB::WriteEuclid(const char*, const char*, Int_t, Int_t)
-{
- cout << " WriteEuclid" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gpcxyz()
-{
- cout << " Gpcxyz " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Ggclos()
-{
-
- for( int i=0; i<listNodes->GetSize(); i++ ) {
- AliGNode* node = (AliGNode*) listNodes->At(i);
- char* name = new char[strlen(node->GetName())+1];
- strcpy(name, node->GetName());
- name[strlen(node->GetName())] = '\x0';
- node->AddConfig(name, name,"detail",981201,991201);
- }
-
- printf( " Total number of nodes = %d\n", listNodes->GetSize() );
-
- SetVisibility( "TPC_1", 1 );
- SetVisibility( "TGAS_1", 1 );
- SetVisibility( "TPSG_1", 1 );
- SetVisibility( "TPHV_1", 1 );
- SetVisibility( "TRCS_1", 1 );
- SetVisibility( "TSGA_1", 1 );
- SetVisibility( "TRCL_1", 1 );
- SetVisibility( "TLGA_1", 1 );
- SetVisibility( "TSST_1", 1 );
- SetVisibility( "TSST_2", 1 );
- SetVisibility( "TSST_3", 1 );
- SetVisibility( "TSST_4", 1 );
- SetVisibility( "TSST_5", 1 );
- SetVisibility( "TSST_6", 1 );
- SetVisibility( "TSST_7", 1 );
- SetVisibility( "TSST_8", 1 );
- SetVisibility( "TSST_9", 1 );
- SetVisibility( "TSST_10", 1 );
- SetVisibility( "TSST_11", 1 );
- SetVisibility( "TSST_12", 1 );
- SetVisibility( "TSST_13", 1 );
- SetVisibility( "TSST_14", 1 );
- SetVisibility( "TSST_15", 1 );
- SetVisibility( "TSST_16", 1 );
- SetVisibility( "TSST_17", 1 );
- SetVisibility( "TSST_18", 1 );
- SetVisibility( "TSST_19", 1 );
- SetVisibility( "TSST_20", 1 );
- SetVisibility( "TSST_21", 1 );
- SetVisibility( "TSST_22", 1 );
- SetVisibility( "TSST_23", 1 );
- SetVisibility( "TLST_1", 1 );
- SetVisibility( "TLST_2", 1 );
- SetVisibility( "TLST_3", 1 );
- SetVisibility( "TLST_4", 1 );
- SetVisibility( "TLST_5", 1 );
- SetVisibility( "TLST_6", 1 );
- SetVisibility( "TLST_7", 1 );
- SetVisibility( "TLST_8", 1 );
- SetVisibility( "TLST_9", 1 );
- SetVisibility( "TLST_10", 1 );
- SetVisibility( "TLST_11", 1 );
- SetVisibility( "TLST_12", 1 );
- SetVisibility( "TLST_13", 1 );
- SetVisibility( "TLST_14", 1 );
- SetVisibility( "TLST_15", 1 );
- SetVisibility( "TLST_16", 1 );
- SetVisibility( "TLST_17", 1 );
- SetVisibility( "TLST_18", 1 );
- SetVisibility( "TLST_19", 1 );
- SetVisibility( "TLST_20", 1 );
- SetVisibility( "TLST_21", 1 );
- SetVisibility( "TLST_22", 1 );
- SetVisibility( "TLST_23", 1 );
- SetVisibility( "TLST_24", 1 );
- SetVisibility( "TLST_25", 1 );
- SetVisibility( "TLST_26", 1 );
- SetVisibility( "TLST_27", 1 );
- SetVisibility( "TLST_28", 1 );
- SetVisibility( "TLST_29", 1 );
- SetVisibility( "TLST_30", 1 );
- SetVisibility( "TLST_31", 1 );
- SetVisibility( "TLST_32", 1 );
- SetVisibility( "TLST_33", 1 );
- SetVisibility( "TLST_34", 1 );
- SetVisibility( "TLST_35", 1 );
- SetVisibility( "TLST_36", 1 );
- SetVisibility( "TLST_37", 1 );
- SetVisibility( "TLST_38", 1 );
- SetVisibility( "TLST_39", 1 );
- SetVisibility( "TLST_40", 1 );
- SetVisibility( "TLST_41", 1 );
- SetVisibility( "TLST_42", 1 );
- SetVisibility( "TLST_43", 1 );
- SetVisibility( "TLST_44", 1 );
- SetVisibility( "TLST_45", 1 );
- SetVisibility( "TLST_46", 1 );
- SetVisibility( "TLST_47", 1 );
- SetVisibility( "TLST_48", 1 );
- SetVisibility( "TLST_49", 1 );
- SetVisibility( "TLST_50", 1 );
- SetVisibility( "TLST_51", 1 );
- SetVisibility( "TLST_52", 1 );
- SetVisibility( "TSWS_1", 1 );
- SetVisibility( "TSWS_2", 1 );
- SetVisibility( "TSWS_3", 1 );
- SetVisibility( "TPW1_1", 1 );
- SetVisibility( "TPW2_1", 1 );
- SetVisibility( "TPW3_1", 1 );
- SetVisibility( "TPW4_1", 1 );
- SetVisibility( "TSPI_1", 1 );
- SetVisibility( "TSP1_1", 1 );
- SetVisibility( "TSPO_1", 1 );
- SetVisibility( "TSP2_1", 1 );
- SetVisibility( "TSWH_1", 1 );
- SetVisibility( "TSW1_1", 1 );
- SetVisibility( "TCOV_1", 1 );
- SetVisibility( "TPOI_1", 1 );
- SetVisibility( "TSWS_4", 1 );
- SetVisibility( "TSWS_5", 1 );
- SetVisibility( "TSWS_6", 1 );
- SetVisibility( "TSWS_7", 1 );
- SetVisibility( "TSWS_8", 1 );
- SetVisibility( "TSWS_9", 1 );
- SetVisibility( "TSWS_10", 1 );
- SetVisibility( "TSWS_11", 1 );
- SetVisibility( "TSWS_12", 1 );
- SetVisibility( "TSWS_13", 1 );
- SetVisibility( "TPIV_1", 1 );
- SetVisibility( "TPVD_1", 1 );
-
- printf( " Visibilities activated \n" );
-
- AliGeometry* Geom1 = new AliGeometry( "Geom1", "Geom1", TopNode, 0 );
-
- TCanvas* c1 = new TCanvas( "TPC", "Geometry Shapes", 100, 100, 750, 750 );
- c1->Range(0,0,1,1);
- c1->SetFillColor(32); // Light Green
- c1->SetBorderSize(3);
- c1->SetBorderMode(0); // -1 (down) 0 (no) 1 (up)
-
- TopNode->Draw("same");
-
- TFile* file1 = new TFile( "GeoDB.root", "RECREATE" );
- cout << endl << " Storing GeoDB.root file. Please, be patient... :-)" << endl;
- TopNode->SaveAll(file1);
-
- file1->cd();
-
- if( Geom1 ) {
- Geom1->Write();
- cout << " Geometry saved in disk " << endl;
- }
-
- file1->Write();
- file1->Close();
-
- TFile* file2 = new TFile( "GeoDB.root", "READ" );
- file2->cd();
- AliGeometry* Geom2 = new AliGeometry( (AliGeometry*) file2->Get("Geom1") );
-
- // Retrieve the memory tree structure from AliGeoDB.root and stores it in memory, being tree_root the top node
- AliGNode* tree_root = new AliGNode( Geom2->FileToMemTree( file2 ) );
- //AliGNode* tree_root = new AliGNode( Geom2->FileToMemTree( "GeoDB.root", "Geom1" ) );
-
- TFile* file3 = new TFile( "GeoDB2.root", "RECREATE" );
- cout << " Storing GeoDB2.root file. Please, be patient again... :-)" << endl;
- tree_root->SaveAll( file3 ); // Memory tree structure saved in disk (second time)
-
- file3->cd();
-
- if( Geom2 ) {
- Geom2->Write();
- cout << " Geometry saved in disk " << endl;
- }
-
- file3->Write();
- file3->Close();
-
- file2->Close();
-
- cout << " The two databases are stored in disk." << endl;
-
- TFile* file4 = new TFile( "GeoDB.root" , "READ" );
- TFile* file5 = new TFile( "GeoDB2.root", "READ" );
-
- TBrowser* a = new TBrowser();
-
- //DrawTree( TopNode, 0 );
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetVisibility(Text_t* name, Int_t val)
-{
- AliGNode* node = (AliGNode*) listNodes->FindObject( name );
-
- if( node )
- node->SetVis(val);
- else
- printf( " ERROR!!! I couldn't find the node %s in the listNodes.\n", name );
-}
-
-/***********************************************************************/
-
-void AliGEODB::DrawTree( AliGNode* topnode, Int_t tabs )
-{
-
- for( int i=0; topnode->GetNodeFromfNode(i); i++ ) {
- for( int j=0; j<tabs; j++ )
- cout << " ";
- cout << topnode->GetNodeFromfNode(i)->GetName() << endl;
- tabs+=5;
- DrawTree( topnode->GetNodeFromfNode(i), tabs );
- tabs-=5;
- }
-
-}
-
-/***********************************************************************/
-
-void AliGEODB::Glast()
-{
- cout << " Glast " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gprint(const char*)
-{
- cout << " Gprint " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Grun()
-{
- cout << " Grun " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gtrig()
-{
- cout << " Gtrig " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gtrigc()
-{
- cout << " Gtrigc " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gtrigi()
-{
- cout << " Gtrigi " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gwork(Int_t)
-{
- cout << " Gwork " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gzinit()
-{
- cout << " Gzinit " << endl;
-}
-
-//=======================functions from GCONS
-
-/***********************************************************************/
-
-void AliGEODB::Gfmate(Int_t, char*, Float_t&, Float_t&, Float_t&, Float_t&, Float_t&, Float_t*, Int_t&)
-{
- cout << " Gfmate " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gfpart(Int_t, char*, Int_t&, Float_t&, Float_t&, Float_t&)
-{
- cout << " Gfpart " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gftmed(Int_t, char*, Int_t&, Int_t&, Int_t&, Float_t&, Float_t&,Float_t&, Float_t&, Float_t&, Float_t&, Float_t*, Int_t*)
-{
- cout << " Gftmed " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gmate() {
- cout << " Gmate " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gpart()
-{
- AliGTransform* Identity = new AliGTransform("Identity","Identity","rot 0. 0. 0.");
- //printf( " Created new AliGTransform( Identity, Identity, rot 0. 0. 0. );\n" );
-
- listTransf->AddAt( Identity, MatrCount );
- MatrCount++;
-
- AliGBox* box = new AliGBox("box","box", 400,400,400);
- AliGNode* ALIC = new AliGNode( "ALIC", 1,"ALIC", box);
- TopNode = ALIC;
-
- listNodes->Add(ALIC);
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsdk(Int_t, Float_t*, Int_t*) {
- cout << " Gsdk " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsmate(Int_t, const char*, Float_t, Float_t, Float_t, Float_t, Float_t) {
- cout << " Gsmate " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsmixt(Int_t, const char*, Float_t*, Float_t*, Float_t, Int_t, Float_t*) {
- cout << " Gsmixt " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gspart(Int_t, const char*, Int_t, Float_t, Float_t, Float_t) {
- cout << " Gspart " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gstmed(Int_t, const char*, Int_t, Int_t, Int_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t) {
- cout << " Gstmed " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gstpar(Int_t, const char*, Float_t)
-{
- //cout << " Gstpar " << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsckov(Int_t, Int_t, Float_t *, Float_t *, Float_t *, Float_t *)
-{
- cout << " Gsclov " << endl;
-}
-
-/***********************************************************************/
-
-//=======================functions from GKINE
-
-void AliGEODB::Gfkine(Int_t, Float_t*, Float_t*, Int_t&, Int_t&)
-{
- cout << " Gfkine" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gfvert(Int_t, Float_t*, Int_t&, Int_t&, Float_t&)
-{
- cout << " Gfvert" << endl;
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::Gskine(Float_t*, Int_t, Int_t, Float_t*, Int_t)
-{
- cout << " Gskine" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::Gsvert(Float_t*, Int_t, Int_t, Float_t*, Int_t)
-{
- cout << " Gsvert" << endl;
- return 0;
-}
-
-/***********************************************************************/
-
-//=======================functions from GPHYS
-
-void AliGEODB::Gphysi()
-{
- cout << " Gphysi" << endl;
-}
-
-/***********************************************************************/
-
-//=======================functions from GTRAK
-
-void AliGEODB::Gdebug()
-{
- cout << " Gdebug" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gekbin()
-{
- cout << " Gekbin" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gfinds()
-{
- cout << " Gfinds" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsking(Int_t)
-{
- cout << " Gsking" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gskpho(Int_t)
-{
- cout << " Gskpho" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsstak(Int_t)
-{
- cout << " Gsstak" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsxyz()
-{
- cout << " Gsxyz" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gtrack()
-{
- cout << " Gtrack" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gtreve()
-{
- cout << " Gtreve" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Grndm(Float_t*, const Int_t) const
-{
- cout << " Grndm" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Grndmq(Int_t&, Int_t&, const Int_t, const Text_t*)
-{
- cout << " Grndmq" << endl;
-}
-
-/***********************************************************************/
-
-//=======================functions from GDRAW
-
-void AliGEODB::Gdxyz(Int_t )
-{
- cout << " Gdxyz" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gdcxyz()
-{
- cout << " Gdcxyz" << endl;
-}
-
-/***********************************************************************/
-
-//=======================functions from GGEOM
-
-void AliGEODB::Gdtom(Float_t*, Float_t*, Int_t)
-{
- printf( " Gdtom.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Glmoth(const char*, Int_t, Int_t&, Int_t*, Int_t*)
-{
- printf( " Glmoth.\n" );
-
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gmedia(Float_t*, Int_t&)
-{
- printf( " Gmedia.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gmtod(Float_t*, Float_t*, Int_t)
-{
- printf( " Gmtod.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsdvn(const char* name, const char* parentname, Int_t ndiv, Int_t iaxis)
-{
- cout << " Inside Gsdvn " << endl;
- /* Divides one node in Ndiv nodes in the iaxis direction*/
-
- char* transfname = new char[10];
- char* nodename = new char[10];
-
- AliGNode* parent = (AliGNode*) listNodes->FindObject(parentname);
-
- /* Find the shape that will result from the division*/
-
- /* BOX */
- if( parent->GetShape()->ClassName() == "AliGBox" ) {
- AliGMaterial* material = new AliGMaterial(parent->GetMaterial());
-
- Float_t Dx, Dy, Dz;
-
- switch (iaxis) {
- case 1 : Dx = ((AliGBox*)(parent->GetShape()))->GetX() / ndiv;
- Dy = ((AliGBox*)(parent->GetShape()))->GetY();
- Dz = ((AliGBox*)(parent->GetShape()))->GetZ();
- break;
-
- case 2 : Dx = ((AliGBox*)(parent->GetShape()))->GetX() ;
- Dy = ((AliGBox*)(parent->GetShape()))->GetY()/ ndiv;
- Dz = ((AliGBox*)(parent->GetShape()))->GetZ();
- break;
-
- case 3 : Dx = ((AliGBox*)(parent->GetShape()))->GetX() ;
- Dy = ((AliGBox*)(parent->GetShape()))->GetY();
- Dz = ((AliGBox*)(parent->GetShape()))->GetZ()/ ndiv;
- break;
-
- default: Dx = Dy = Dz = 0.;
- };
-
- AliGBox* box = new AliGBox("box","box", Dx, Dy, Dz);
-
- /* Create the nodes son*/
-
- Float_t x, y, z;
- Text_t* expression;
-
- for( int i=0; i<ndiv; i++ ) {
- //nodename = "Node";
- nodename[4] = '\x0';
- sprintf( nodename, "%s%d", nodename, i );
- transfname = "trans";
- transfname[5] = '\x0';
- sprintf( transfname, "%s%d", transfname, i );
-
- switch (iaxis) {
- case 'X' :
- case 'x' : x = ndiv *i;
- y = 0;
- z = 0;
- break;
- case 'Y' :
- case 'y' : x = 0;
- y = ndiv *i;
- z = 0;
- break;
-
- case 'Z' :
- case 'z' : x = 0;
- y = 0;
- z = ndiv *i;
- break;
- };
-
- /* Positioning the sons (only translations) and adding them to the parent*/
-
- sprintf( expression, "%s %f %f %f", "tra", x, y, z );
- AliGTransform* tran = new AliGTransform( transfname, transfname, expression );
-
- char* nodname = new char[strlen(name)];
- strcpy( nodname, name );
- AliGNode* son = new AliGNode( nodname, i, nodname, box, material );
- if( nodname ) delete [] nodname;
-
- parent->Add( son, tran );
- parent->AddConfig("","");
- listNodes->AddLast(son);
- }
- }
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsdvn2(const char*, const char*, Int_t, Int_t, Float_t, Int_t)
-{
- printf( " Gsdvn2.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsdvs(const char*, const char*, Float_t, Int_t, Int_t)
-{
- printf( " Gsdvs.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsdvs2(const char*, const char*, Float_t, Int_t, Float_t, Int_t)
-{
- printf( " Gsdvs2.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsdvt(const char*, const char*, Float_t, Int_t, Int_t, Int_t)
-{
- printf( " Gsdvt.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsdvt2(const char *, const char *, Float_t, Int_t, Float_t, Int_t, Int_t)
-{
- printf( " Gsdvt2.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsord(const char*, Int_t)
-{
- // Aqui entra pero dice Federico que Dummy.
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gspos( const char *name, Int_t nr, const char *mother, Float_t x, Float_t y, Float_t z, Int_t irot, const char* konly )
-{
-
- if( !strcmp(mother, "ALIC") )
- mother = "ALIC_1";
-
- AliGNode* son = NULL;
- AliGNode* parent = NULL;
-
- char* nodename = new char[strlen(name)+1];
- strcpy( nodename, name );
- nodename[strlen(name)] = '\x0';
-
- TObjLink *lnk = listNodes->FirstLink();
- int quit=0;
-
- while( (lnk) && (!quit) ) {
- TObject *obj = lnk->GetObject();
-
- if( obj->GetName() ) {
- char* NodeName = new char[strlen(obj->GetName())+1];
- strcpy( NodeName, obj->GetName() );
- NodeName[strlen(obj->GetName())] = '\x0';
-
- int i;
- for( i=0; NodeName[i]!='_'; i++ );
-
- if( !strncmp(nodename, NodeName, i) )
- son = (AliGNode*) obj;
- else
- if( !strncmp(mother, NodeName, i) )
- parent = (AliGNode*) obj;
-
- if( NodeName ) delete [] NodeName;
-
- if( (son != NULL) && (parent != NULL) )
- quit = 1;
- }
-
- lnk = lnk->Next();
- }
-
- if( son == NULL ) {
- cout << " ERROR in Gspos. Couldn't find node " << nodename << " inside listNodes." << endl;
- exit(1);
- }
- else
- if( parent == NULL) {
- cout << " ERROR in Gspos. Couldn't find node " << mother << " inside listNodes." << endl;
- exit(1);
- }
-
- AliGTransform* tra = (AliGTransform*)listTransf->At(MatrCount - 1);
-
- TVector* matrix = tra->GetMatrix();
- char* transname = new char[10];
- sprintf(transname, "%s%d", "tra", MatrCount );
-
- TVector &mat = *matrix;
- AliGTransform* newtra = new AliGTransform(transname, transname, mat(0), mat(1), mat(2), mat(4), mat(5), mat(6),mat(8), mat(9), mat(10), x, y, z);
-
- //printf( "\n Created new AliGTransform( %s, %s, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f );\n", transname, transname, mat(0), mat(1), mat(2), mat(4), mat(5), mat(6), mat(8), mat(9), mat(10), x, y, z );
-
- listTransf->AddAt(newtra, MatrCount);
- MatrCount++;
-
- parent->Add(son, newtra);
- //printf( " %s->Add( %s, %s );\n", parent->GetName(), son->GetName(), newtra->GetName() );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsposp( const char* nodename, Int_t nr, const char* mother, Float_t x, Float_t y, Float_t z, Int_t irot, const char* konly, Float_t* upar, Int_t np )
-{
- //printf( "\n" );
-
- Int_t i;
-
- for( i=0; i<PospCount; i++ )
- if( !strcmp(Posp[i]->name, nodename) )
- break;
-
- char* shapename = Posp[i]->shape;
- Int_t nmed = Posp[i]->nmed;
-
- char* fnodename = new char[strlen(nodename)+1];
- strcpy(fnodename, nodename);
- fnodename[strlen(nodename)] = '\x0';
-
- char* fmother = new char[strlen(mother)+1];
- strcpy(fmother, mother);
- fmother[strlen(mother)] = '\x0';
-
- AliGNode* parent = NULL;
-
- TObjLink *lnk = listNodes->FirstLink();
- int quit=0;
-
- while( (lnk) && (!quit) ) {
- TObject *obj = lnk->GetObject();
-
- if( obj->GetName() ) {
- char* NodeName = new char[strlen(obj->GetName())];
- strcpy( NodeName, obj->GetName() );
-
- int i;
- for( i=0; NodeName[i]!='_'; i++ );
-
- if( !strncmp(fmother, NodeName, i) )
- parent = (AliGNode*) obj ;
-
- if( NodeName ) delete [] NodeName;
-
- if( parent != NULL )
- quit = 1;
- }
-
- lnk = lnk->Next();
- }
-
- if( parent == NULL) {
- cout << " ERROR in Gsposp. Couldn't find node " << mother << " inside listNodes." << endl;
- exit(1);
- }
-
- Int_t nmat = AliMediums[nmed]->fNmat;
-
- AliGMaterial* MyMaterial = NULL;
-
- for( int j=0; j<listMaterials->GetSize(); j++ )
- if( ((AliGMaterial*) listMaterials->At(j))->GetfImat() == nmat ) {
- MyMaterial = (AliGMaterial*) listMaterials->At(j);
- /*printf( " AliGMaterial( %d, %s, %s, %d, %d, %f, %f, %f, %f, %f, %f, *fUbuf, %d, %f, %f, %f, %f, %f, *fBuf, %d ); already existed.\n", nmat,AliMaterials[nmat]->fName, AliMaterials[nmat]->fName, AliMediums[nmed]->fIsvol, AliMediums[nmed]->fIfield, AliMediums[nmed]->fFieldm, AliMediums[nmed]->fTmaxfd, AliMediums[nmed]->fStemax, AliMediums[nmed]->fDeemax, AliMediums[nmed]->fEpsil, AliMediums[nmed]->fStmin, AliMediums[nmed]->fNbuf, AliMaterials[nmat]->fA, AliMaterials[nmat]->fZ, AliMaterials[nmat]->fDens, AliMaterials[nmat]->fRadl, AliMaterials[nmat]->fAbsl, AliMaterials[nmat]->fNwbuf );*/
- break;
- }
-
- if( MyMaterial == NULL ) {
- MyMaterial = new AliGMaterial( nmat, AliMaterials[nmat]->fName, AliMaterials[nmat]->fName, AliMediums[nmed]->fIsvol, AliMediums[nmed]->fIfield, AliMediums[nmed]->fFieldm, AliMediums[nmed]->fTmaxfd, AliMediums[nmed]->fStemax, AliMediums[nmed]->fDeemax, AliMediums[nmed]->fEpsil, AliMediums[nmed]->fStmin, AliMediums[nmed]->fUbuf, AliMediums[nmed]->fNbuf, AliMaterials[nmat]->fA, AliMaterials[nmat]->fZ, AliMaterials[nmat]->fDens, AliMaterials[nmat]->fRadl, AliMaterials[nmat]->fAbsl, AliMaterials[nmat]
-->fBuf, AliMaterials[nmat]->fNwbuf );
-
- /*printf( " Created new AliGMaterial( %d, %s, %s, %d, %d, %f, %f, %f, %f, %f, %f, *fUbuf, %d, %f, %f, %f, %f, %f, *fBuf, %d );\n", nmat,AliMaterials[nmat]->fName, AliMaterials[nmat]->fName, AliMediums[nmed]->fIsvol, AliMediums[nmed]->fIfield, AliMediums[nmed]->fFieldm, AliMediums[nmed]->fTmaxfd, AliMediums[nmed]->fStemax, AliMediums[nmed]->fDeemax, AliMediums[nmed]->fEpsil, AliMediums[nmed]->fStmin, AliMediums[nmed]->fNbuf, AliMaterials[nmat]->fA, AliMaterials[nmat]->fZ, AliMaterials[nmat]->fDens, AliMaterials[nmat]->fRadl, AliMaterials[nmat]->fAbsl, AliMaterials[nmat]->fNwbuf );*/
-
- listMaterials->Add( MyMaterial );
- }
-
- AliGNode* son = NULL;
-
- // Different constructor depending on the shape
- if( !strncmp(shapename, "TUBE", 4) ) {
-
- AliGTube* Shape = NULL;
-
- for( int j=0; j<listShapes->GetSize(); j++ )
- if( ((AliGShape*) listShapes->At(j))->GetName() == shapename ) {
- Shape = (AliGTube*) listShapes->At(j);
- //printf( " AliGTube( %s, %s, %f, %f, %f ); already existed.\n", shapename, shapename, upar[0], upar[1], upar[2] );
- break;
- }
-
- if( Shape == NULL ) {
- Shape = new AliGTube( shapename, shapename, upar[0], upar[1], upar[2] );
- //printf( " Created new AliGTube( %s, %s, %f, %f, %f );\n", shapename, shapename, upar[0], upar[1], upar[2] );
- listShapes->Add(Shape);
- }
-
- Shape->SetCol(Color);
- son = new AliGNode( fnodename, nr, fnodename, Shape, MyMaterial );
- }
- else
- if( !strncmp(shapename, "BOX", 3) ) {
-
- AliGBox* Shape = NULL;
-
- for( int j=0; j<listShapes->GetSize(); j++ )
- if( ((AliGShape*) listShapes->At(j))->GetName() == shapename ) {
- Shape = (AliGBox*) listShapes->At(j);
- //printf( " AliGBox( %s, %s, %f, %f, %f ); already existed.\n", shapename, shapename, upar[0], upar[1], upar[2] );
- break;
- }
-
- if( Shape == NULL ) {
- Shape = new AliGBox( shapename, shapename, upar[0], upar[1], upar[2] );
- //printf( " Created new AliGBox( %s, %s, %f, %f, %f );\n", shapename, shapename, upar[0], upar[1], upar[2] );
- listShapes->Add(Shape);
- }
-
- Shape->SetCol(Color);
- son = new AliGNode( fnodename, nr, fnodename, Shape, MyMaterial );
- }
- else
- if( !strncmp(shapename, "TRD1", 4) ) {
-
- AliGTRD1* Shape = NULL;
-
- for( int j=0; j<listShapes->GetSize(); j++ )
- if( ((AliGShape*) listShapes->At(j))->GetName() == shapename ) {
- Shape = (AliGTRD1*) listShapes->At(j);
- //printf( " AliGTRD1( %s, %s, %f, %f, %f, %f ); already existed.\n", shapename, shapename, upar[0], upar[1], upar[2], upar[3] );
- break;
- }
-
- if( Shape == NULL ) {
- Shape = new AliGTRD1( shapename, shapename, upar[0], upar[1], upar[2], upar[3] );
- //printf( " Created new AliGTRD1( %s, %s, %f, %f, %f, %f );\n", shapename, shapename, upar[0], upar[1], upar[2], upar[3] );
- listShapes->Add(Shape);
- }
-
- Shape->SetCol(Color);
- son = new AliGNode( fnodename, nr, fnodename, Shape, MyMaterial );
- }
- else
- if( !strncmp(shapename, "PCON", 4) ) {
-
- AliGPCone* Shape = NULL;
-
- for( int j=0; j<listShapes->GetSize(); j++ )
- if( ((AliGShape*) listShapes->At(j))->GetName() == shapename ) {
- Shape = (AliGPCone*) listShapes->At(j);
- //printf( " AliGPCone( %s, %s, %f, %f, %f ); already existed.\n", shapename, shapename, upar[0], upar[1], upar[2] );
- break;
- }
-
- if( Shape == NULL ) {
- Shape = new AliGPCone( shapename, shapename, upar, np );
- //printf( " Created new AliGPCone( %s, %s, %f, %f, %f );\n", shapename, shapename, upar[0], upar[1], upar[2] );
- listShapes->Add(Shape);
- }
-
- Shape->SetCol(Color);
- son = new AliGNode( fnodename, nr, fnodename, Shape, MyMaterial );
- }
-
- Color++;
- if( Color == 50 )
- Color = 0;
-
- AliGTransform* tra = (AliGTransform*) listTransf->At(0);
-
- TVector* matrix = tra->GetMatrix();
-
- char* transname = new char[10];
- sprintf( transname, "%s%d", "tra", MatrCount );
-
- TVector &mat = *matrix;
- AliGTransform* newtra = new AliGTransform(transname, transname, mat(0), mat(1), mat(2), mat(4), mat(5), mat(6), mat(8), mat(9), mat(10), x, y, z);
-
- //printf( " Created new AliGTransform( %s, %s, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f );\n", transname, transname, mat(0), mat(1), mat(2), mat(4), mat(5), mat(6), mat(8), mat(9), mat(10), x, y, z );
-
- listTransf->AddAt(newtra, MatrCount);
- MatrCount++;
-
- parent->Add(son, newtra);
-
- //printf( " %s->Add( %s, %s );\n", parent->GetName(), son->GetName(), newtra->GetName() );
-
- listNodes->Add(son);
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsrotm(Int_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t)
-{
- printf( " Gsrotm.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gprotm(Int_t)
-{
- printf( " Gprotm.\n" );
-}
-
-/***********************************************************************/
-
-Int_t AliGEODB::Gsvolu(const char* vname, const char* shape, Int_t nmed, Float_t* upar, Int_t np)
-{
- Int_t lenvname = strlen(vname);
-
- char* nodename = new char[lenvname+1];
- strcpy( nodename, vname );
- nodename[lenvname] = '\x0';
-
- int pos;
- for( pos=0; pos<lenvname; pos++ )
- if( (nodename[pos] == '\x0') || (nodename[pos] == ' ') )
- break;
-
- if( pos < lenvname ) {
- if( nodename ) delete [] nodename;
- nodename = new char[pos+1];
- strncpy( nodename, vname, pos );
- nodename[pos] = '\x0';
- }
-
- char* shapename = new char[strlen(shape)+1];
- strcpy( shapename, shape );
- shapename[strlen(shape)] = '\x0';
-
- //printf( "\n Trying to build node: %s with shape: %s, nmed: %d, upar[0]: %f and np: %d\n", nodename, shapename, nmed, upar[0], np );
-
- if( !np ) {
- /* if number of parameters is 0, stores the nodename, shapename and nmed to be used in GSPOSP */
- NodePosp* AliPosp = new NodePosp;
- AliPosp->name = nodename;
- AliPosp->shape = shapename;
- AliPosp->nmed = nmed;
- Posp[PospCount] = AliPosp;
- PospCount++;
- return 0;
- }
-
- if( (listNodes) && (listNodes->FindObject(nodename)) ) { // Trying to find the node inside listNodes
- // The node existed in listNodes.
- printf( "\n ERROR!!! Node %s already existed in listNodes\n", nodename );
- exit(1);
- }
- else {
- // It's a new node.
- Int_t nmat = AliMediums[nmed]->fNmat;
-
- AliGMaterial* MyMaterial = NULL;
-
- for( int j=0; j<listMaterials->GetSize(); j++ )
- if( ((AliGMaterial*) listMaterials->At(j))->GetfImat() == nmat ) {
- MyMaterial = (AliGMaterial*) listMaterials->At(j);
- /*printf( " AliGMaterial( %d, %s, %s, %d, %d, %f, %f, %f, %f, %f, %f, *fUbuf, %d, %f, %f, %f, %f, %f, *fBuf, %d ); already existed.\n", nmat,AliMaterials[nmat]->fName, AliMaterials[nmat]->fName, AliMediums[nmed]->fIsvol, AliMediums[nmed]->fIfield, AliMediums[nmed]->fFieldm, AliMediums[nmed]->fTmaxfd, AliMediums[nmed]->fStemax, AliMediums[nmed]->fDeemax, AliMediums[nmed]->fEpsil, AliMediums[nmed]->fStmin, AliMediums[nmed]->fNbuf, AliMaterials[nmat]->fA, AliMaterials[nmat]->fZ, AliMaterials[nmat]->fDens, AliMaterials[nmat]->fRadl, AliMaterials[nmat]->fAbsl, AliMaterials[nmat]->fNwbuf );*/
- break;
- }
-
- if( MyMaterial == NULL ) {
- MyMaterial = new AliGMaterial( nmat, AliMaterials[nmat]->fName, AliMaterials[nmat]->fName, AliMediums[nmed]->fIsvol, AliMediums[nmed]->fIfield, AliMediums[nmed]->fFieldm, AliMediums[nmed]->fTmaxfd, AliMediums[nmed]->fStemax, AliMediums[nmed]->fDeemax, AliMediums[nmed]->fEpsil, AliMediums[nmed]->fStmin, AliMediums[nmed]->fUbuf, AliMediums[nmed]->fNbuf, AliMaterials[nmat]->fA, AliMaterials[nmat]->fZ, AliMaterials[nmat]->fDens, AliMaterials[nmat]->fRadl, AliMaterials[nmat]->fAbsl, AliMaterials[nmat]->fBuf, AliMaterials[nmat]->fNwbuf );
-
- listMaterials->Add( MyMaterial );
-
- /*printf( " Created new AliGMaterial( %d, %s, %s, %d, %d, %f, %f, %f, %f, %f, %f, *fUbuf, %d, %f, %f, %f, %f, %f, *fBuf, %d );\n", nmat,AliMaterials[nmat]->fName, AliMaterials[nmat]->fName, AliMediums[nmed]->fIsvol, AliMediums[nmed]->fIfield, AliMediums[nmed]->fFieldm, AliMediums[nmed]->fTmaxfd, AliMediums[nmed]->fStemax, AliMediums[nmed]->fDeemax, AliMediums[nmed]->fEpsil, AliMediums[nmed]->fStmin, AliMediums[nmed]->fNbuf, AliMaterials[nmat]->fA, AliMaterials[nmat]->fZ, AliMaterials[nmat]->fDens, AliMaterials[nmat]->fRadl, AliMaterials[nmat]->fAbsl, AliMaterials[nmat]->fNwbuf );*/
- }
-
- // Different constructor depending on the shape
- AliGNode* node = NULL;
-
- if( !strncmp(shapename, "TUBE", 4) ) {
-
- AliGTube* Shape = NULL;
-
- for( int j=0; j<listShapes->GetSize(); j++ )
- if( ((AliGShape*) listShapes->At(j))->GetName() == shapename ) {
- Shape = (AliGTube*) listShapes->At(j);
- printf( " AliGTube( %s, %s, %f, %f, %f ); already existed.\n", shapename, shapename, upar[0], upar[1], upar[2] );
- break;
- }
-
- if( Shape == NULL ) {
- Shape = new AliGTube( shapename, shapename, upar[0], upar[1], upar[2] );
- //printf( " Created new AliGTube( %s, %s, %f, %f, %f );\n", shapename, shapename, upar[0], upar[1], upar[2] );
- listShapes->Add(Shape);
- }
-
- Shape->SetCol(Color);
- node = new AliGNode( nodename, 1, nodename, Shape, MyMaterial );
- }
- else
- if( !strncmp(shapename, "BOX", 3) ) {
-
- AliGBox* Shape = NULL;
-
- for( int j=0; j<listShapes->GetSize(); j++ )
- if( ((AliGShape*) listShapes->At(j))->GetName() == shapename ) {
- Shape = (AliGBox*) listShapes->At(j);
- printf( " AliGBox( %s, %s, %f, %f, %f ); already existed.\n", shapename, shapename, upar[0], upar[1], upar[2] );
- break;
- }
-
- if( Shape == NULL ) {
- Shape = new AliGBox( shapename, shapename, upar[0], upar[1], upar[2] );
- //printf( " Created new AliGBox( %s, %s, %f, %f, %f );\n", shapename, shapename, upar[0], upar[1], upar[2] );
- listShapes->Add(Shape);
- }
-
- Shape->SetCol(Color);
- node = new AliGNode( nodename, 1, nodename, Shape, MyMaterial );
- }
- else
- if( !strncmp(shapename, "TRD1", 4) ) {
-
- AliGTRD1* Shape = NULL;
-
- for( int j=0; j<listShapes->GetSize(); j++ )
- if( ((AliGShape*) listShapes->At(j))->GetName() == shapename ) {
- Shape = (AliGTRD1*) listShapes->At(j);
-
- break;
- }
-
- if( Shape == NULL ) {
- Shape = new AliGTRD1( shapename, shapename, upar[0], upar[1], upar[2], upar[3] );
- //printf( " Created new AliGTRD1( %s, %s, %f, %f, %f, %f );\n", shapename, shapename, upar[0], upar[1], upar[2], upar[3] );
- listShapes->Add(Shape);
- }
-
- Shape->SetCol(Color);
- node = new AliGNode( nodename, 1, nodename, Shape, MyMaterial );
- }
- else
- if( !strncmp(shapename, "PCON", 4) ) {
-
- AliGPCone* Shape = NULL;
-
- for( int j=0; j<listShapes->GetSize(); j++ )
- if( ((AliGShape*) listShapes->At(j))->GetName() == shapename ) {
- Shape = (AliGPCone*) listShapes->At(j);
- break;
- }
-
- if( Shape == NULL ) {
- Shape = new AliGPCone( shapename, shapename, upar, np );
- //printf( " Created new AliGPCone( %s, %s, %f, %f, %f );\n", shapename, shapename, upar[0], upar[1], upar[2] );
- listShapes->Add(Shape);
- }
-
- Shape->SetCol(Color);
- node = new AliGNode( nodename, 1, nodename, Shape, MyMaterial );
- }
-
- //printf( " Created new AliGNode( %s, %d, %s, %s, %s );\n", nodename, 1+listNodes->GetSize(), nodename, shapename, MyMaterial->GetName() );
-
- listNodes->Add(node);
-
- //printf( " node->fShape->Color = %d\n", node->GetShape()->GetCol() );
-
- Color++;
- if( Color == 50 )
- Color = 1;
- }
-
- return 0;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gsatt(const char*, const char*, Int_t)
-{
- printf( " Gsatt.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gfpara(const char*, Int_t, Int_t, Int_t&, Int_t&, Float_t*, Float_t*)
-{
- printf( " Gfpara.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gckpar(Int_t, Int_t, Float_t*)
-{
- printf( " Gckpar.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gckmat(Int_t, char*)
-{
- printf( " Gckmat.\n" );
-}
-
-/***********************************************************************/
-
-//=======================DRAW functions
-
-void AliGEODB::InitHIGZ()
-{
- printf( "InitHIGZ.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gdopen(Int_t)
-{
- printf( "Gdopen.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gdclose()
-{
- printf( "Gdclose.\n" );
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gdelete(Int_t)
-{
- cout << " Gdelete" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gdshow(Int_t)
-{
- cout << " Gdshow" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gdopt(const char *,const char *)
-{
- cout << " Gdopt" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gdraw(const char *,Float_t, Float_t, Float_t,Float_t,Float_t,Float_t,Float_t)
-{
- cout << " Gdraw" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gdrawc(const char *,Int_t, Float_t,Float_t,Float_t,Float_t,Float_t)
-{
- cout << " Gdrawc" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gdrawx(const char *,Float_t, Float_t, Float_t, Float_t, Float_t,Float_t,Float_t,Float_t,Float_t)
-{
- cout << " Gdrawx" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gdhead(Int_t, const char *, Float_t)
-{
- cout << " Gdhead" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gdman(Float_t, Float_t, const char *)
-{
- cout << " Gdman" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gdspec(const char *)
-{
- cout << " Gdspec" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::DrawOneSpec(const char *)
-{
- cout << " DrawOneSpec" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Gdtree(const char *,Int_t,Int_t)
-{
- cout << " Gdtree" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::GdtreeParent(const char *,Int_t,Int_t)
-{
- cout << " GdtreeParent" << endl;
-}
-
-/***********************************************************************/
-
-//=======================Set functions
-
-void AliGEODB::SetABAN(Int_t)
-{
- cout << " SetABAN" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetANNI(Int_t)
-{
- cout << " SetANNI" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetAUTO(Int_t)
-{
- cout << " SetAUTO" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetBOMB(Float_t)
-{
- cout << " SetBOMB" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetBREM(Int_t)
-{
- cout << " SetBREM" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetCKOV(Int_t)
-{
- cout << " SetCKOV" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetClipBox(const char *,Float_t,Float_t, Float_t,Float_t,Float_t,Float_t)
-{
- cout << " SetClipBox" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetCOMP(Int_t)
-{
- cout << " SetCOMP" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetCUTS( Float_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t )
-{
- cout << " SetCUTS" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetDCAY(Int_t)
-{
- cout << " SetDCAY" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetDEBU(Int_t, Int_t, Int_t)
-{
- cout << " SetDEBU" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetDRAY(Int_t)
-{
- cout << " SetDRAY" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetHADR(Int_t)
-{
- cout << " SetHADR" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetKINE(Int_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t,Float_t )
-{
- cout << " SetKINE" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetLOSS(Int_t)
-{
- cout << " SetLOSS" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetMULS(Int_t)
-{
- cout << " SetMULS" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetMUNU(Int_t)
-{
- cout << " SetMUNU" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetOPTI(Int_t)
-{
- cout << " SetOPTI" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetPAIR(Int_t)
-{
- cout << " SetPAIR" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetPFIS(Int_t)
-{
- cout << " SetPFIS" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetPHOT(Int_t)
-{
- cout << " SetPHOT" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetRAYL(Int_t)
-{
- cout << " SetRAYL" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetSWIT(Int_t , Int_t)
-{
- cout << " SetSWIT" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::SetTRIG(Int_t)
-{
- cout << " SetTRIG" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::Vname(const char *, char *)
-{
- cout << " Vname" << endl;
-}
-
-/***********************************************************************/
-
-void AliGEODB::InitLego()
-{
- cout << " InitLego" << endl;
-}
-
-/***********************************************************************/
-
-extern "C" void sxpart_(){}
+++ /dev/null
-#ifndef AliGEODB_H
-#define AliGEODB_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-////////////////////////////////////////////////
-// C++ interface to Geant3 basic routines //
-////////////////////////////////////////////////
-
-#include <AliMC.h>
-#include "AliGNode.h"
-
-class AliGEODB : public AliMC {
-
-public:
- AliGEODB() {}
- AliGEODB(const char *title, Int_t nwgeant=0);
- virtual ~AliGEODB() {}
-
-///////////////////////////////////////////////////////////////////////
-// //
-// //
-// Here are the service routines from the geometry //
-// which could be implemented also in other geometries //
-// //
-// //
-///////////////////////////////////////////////////////////////////////
-
- void GeomIter();
- Int_t CurrentMaterial(Float_t &a, Float_t &z, Float_t &dens, Float_t &radl, Float_t &absl) const;
- Int_t NextVolUp(Text_t *name, Int_t ©);
- Int_t CurrentVol(Text_t *name, Int_t ©) const;
- Int_t CurrentVolOff(Int_t off, Text_t *name, Int_t ©) const;
- Int_t VolId(Text_t *name) const;
- const char* VolName(Int_t id) const;
- void TrackPosition(Float_t *xyz) const;
- void TrackMomentum(Float_t *xyz) const;
- Int_t NofVolumes() const;
- Float_t TrackTime() const;
- Float_t TrackCharge() const;
- Float_t TrackMass() const;
- Float_t TrackStep() const;
- Float_t TrackLength() const;
- Int_t TrackPid() const;
- Bool_t TrackInside() const;
- Bool_t TrackEntering() const;
- Bool_t TrackExiting() const;
- Bool_t TrackOut() const;
- Bool_t TrackDisappear() const;
- Bool_t TrackStop() const;
- Bool_t TrackAlive() const;
- Int_t NSecondaries() const;
- Int_t CurrentEvent() const;
- AliMCProcess ProdProcess() const;
- void GetSecondary(Int_t, Int_t&, Float_t*, Float_t*);
- void StopTrack();
- void StopEvent();
- Float_t MaxStep() const;
- void SetColors();
- void SetMaxStep(Float_t maxstep);
- void SetMaxNStep(Int_t maxnstp);
- Int_t GetMaxNStep() const;
- void GetParticle(const Int_t ipart, char *name, Float_t &mass) const;
- virtual Int_t GetMedium() const;
- virtual Float_t Edep() const;
- virtual Float_t Etot() const;
- virtual void Rndm(Float_t* r, const Int_t n) const;
- virtual void Material(Int_t&, const char*, Float_t, Float_t, Float_t, Float_t,
- Float_t, Float_t* buf=0, Int_t nwbuf=0);
- virtual void Mixture(Int_t&, const char*, Float_t*, Float_t*, Float_t, Int_t, Float_t*);
- virtual void Medium(Int_t&, const char*, Int_t, Int_t, Int_t, Float_t, Float_t,
- Float_t, Float_t, Float_t, Float_t, Float_t* ubuf=0, Int_t nbuf=0);
- virtual void Matrix(Int_t&, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t);
-
- // functions from GBASE
- virtual void Gpcxyz();
- virtual void Ggclos();
-
- virtual void SetVisibility(Text_t* name, Int_t val);
- virtual void DrawTree( AliGNode* topnode, Int_t tabs );
-
- virtual void Gfile(const char *filename, const char *option="I");
- virtual void Glast();
- virtual void Gprint(const char *name);
- virtual void Grun();
- virtual void Gtrig();
- virtual void Gtrigc();
- virtual void Gtrigi();
- virtual void Gwork(Int_t nwork);
- virtual void Gzinit();
-
- // functions from GCONS
- virtual void Gfmate(Int_t imat, char *name, Float_t &a, Float_t &z, Float_t &dens,
- Float_t &radl, Float_t &absl, Float_t* ubuf, Int_t& nbuf);
- virtual void Gfpart(Int_t ipart, char *name, Int_t &itrtyp,
- Float_t &amass, Float_t &charge, Float_t &tlife);
- virtual void Gftmed(Int_t numed, char *name, Int_t &nmat, Int_t &isvol,
- Int_t &ifield, Float_t &fieldm, Float_t &tmaxfd,
- Float_t &stemax, Float_t &deemax, Float_t &epsil,
- Float_t &stmin, Float_t *buf=0, Int_t *nbuf=0);
- virtual void Gmate();
- virtual void Gpart();
- virtual void Gsckov(Int_t itmed, Int_t npckov, Float_t *ppckov,
- Float_t *absco, Float_t *effic, Float_t *rindex);
- virtual void Gsdk(Int_t ipart, Float_t *bratio, Int_t *mode);
- virtual void Gsmate(Int_t imat, const char *name, Float_t a, Float_t z,
- Float_t dens, Float_t radl, Float_t absl);
- virtual void Gsmixt(Int_t imat, const char *name, Float_t *a, Float_t *z,
- Float_t dens, Int_t nlmat, Float_t *wmat);
- virtual void Gspart(Int_t ipart, const char *name, Int_t itrtyp,
- Float_t amass, Float_t charge, Float_t tlife);
- virtual void Gstmed(Int_t numed, const char *name, Int_t nmat, Int_t isvol,
- Int_t ifield, Float_t fieldm, Float_t tmaxfd,
- Float_t stemax, Float_t deemax, Float_t epsil,
- Float_t stmin);
- virtual void Gstpar(Int_t itmed, const char *param, Float_t parval);
-
- // functions from GKINE
- virtual void Gfkine(Int_t itra, Float_t *vert, Float_t *pvert,
- Int_t &ipart, Int_t &nvert);
- virtual void Gfvert(Int_t nvtx, Float_t *v, Int_t &ntbeam, Int_t &nttarg, Float_t &tofg);
- virtual Int_t Gskine(Float_t *plab, Int_t ipart, Int_t nv, Float_t *ubuf=0, Int_t nwbuf=0);
- virtual Int_t Gsvert(Float_t *v, Int_t ntbeam, Int_t nttarg, Float_t *ubuf=0, Int_t nwbuf=0);
-
- // functions from GPHYS
- virtual void Gphysi();
-
- // functions from GTRAK
- virtual void Gdebug();
- virtual void Gekbin();
- virtual void Gfinds();
- virtual void Gsking(Int_t igk);
- virtual void Gskpho(Int_t igk);
- virtual void Gsstak(Int_t iflag);
- virtual void Gsxyz();
- virtual void Gtrack();
- virtual void Gtreve();
- virtual void Grndm(Float_t *rvec, const Int_t len) const;
- virtual void Grndmq(Int_t &is1, Int_t &is2, const Int_t iseq, const Text_t *chopt);
-
- // functions from GGEOM
- virtual void Gdxyz(Int_t );
- virtual void Gdcxyz();
-
- // functions from GGEOM
- virtual void Gdtom(Float_t *xd, Float_t *xm, Int_t iflag);
- virtual void Glmoth(const char* iudet, Int_t iunum, Int_t &nlev,
- Int_t *lvols, Int_t *lindx);
- virtual void Gmedia(Float_t *x, Int_t &numed);
- virtual void Gmtod(Float_t *xm, Float_t *xd, Int_t iflag);
- virtual void Gsdvn(const char *name, const char *mother, Int_t ndiv, Int_t iaxis);
- virtual void Gsdvn2(const char *name, const char *mother, Int_t ndiv, Int_t iaxis, Float_t c0i, Int_t numed);
- virtual void Gsdvs(const char *name, const char *mother, Float_t step, Int_t iaxis, Int_t numed);
- virtual void Gsdvs2(const char *name, const char *mother, Float_t step, Int_t iaxis, Float_t c0, Int_t numed);
- virtual void Gsdvt(const char *name, const char *mother, Float_t step, Int_t iaxis, Int_t numed, Int_t ndvmx);
- virtual void Gsdvt2(const char *name, const char *mother, Float_t step, Int_t iaxis,
- Float_t c0, Int_t numed, Int_t ndvmx);
- virtual void Gsord(const char *name, Int_t iax);
- virtual void Gspos(const char *name, Int_t nr, const char *mother,
- Float_t x, Float_t y, Float_t z, Int_t irot, const char *konly="ONLY");
- virtual void Gsposp(const char *nodename, Int_t nr, const char *mother,
- Float_t x, Float_t y, Float_t z, Int_t irot, const char *konly, Float_t *upar, Int_t np);
- virtual void Gsrotm(Int_t nmat, Float_t theta1, Float_t phi1, Float_t theta2, Float_t phi2,
- Float_t theta3, Float_t phi3);
- virtual void Gprotm(Int_t nmat=0);
- virtual Int_t Gsvolu(const char *name, const char *shape, Int_t nmed,
- Float_t *upar, Int_t np);
- virtual void Gsatt(const char *name, const char *att, Int_t val);
- virtual void Gfpara(const char *name, Int_t number, Int_t intext, Int_t& npar,
- Int_t& natt, Float_t* par, Float_t* att);
- virtual void Gckpar(Int_t, Int_t, Float_t*);
- virtual void Gckmat(Int_t, char*);
-
- // functions from GDRAW
- virtual void DefaultRange();
- virtual void InitHIGZ();
- virtual void Gdopen(Int_t view);
- virtual void Gdclose();
- virtual void Gdelete(Int_t view);
- virtual void Gdshow(Int_t view);
- virtual void Gdopt(const char *name,const char *value);
- virtual void Gdraw(const char *name,Float_t theta=30, Float_t phi=30, Float_t psi=0,Float_t u0=10,Float_t v0=10,Float_t ul=0.01,Float_t vl=0.01);
- virtual void Gdrawc(const char *name,Int_t axis=1, Float_t cut=0,Float_t u0=10,Float_t v0=10,Float_t ul=0.01,Float_t vl=0.01);
- virtual void Gdrawx(const char *name,Float_t cutthe, Float_t cutphi, Float_t cutval,
- Float_t theta=30, Float_t phi=30,Float_t u0=10,Float_t v0=10,Float_t ul=0.01,Float_t vl=0.01);
- virtual void Gdhead(Int_t isel, const char *name, Float_t chrsiz=0.6);
- virtual void Gdman(Float_t u0, Float_t v0, const char *type="MAN");
- virtual void Gdspec(const char *name);
- virtual void DrawOneSpec(const char *name);
- virtual void Gdtree(const char *name,Int_t levmax=15,Int_t ispec=0);
- virtual void GdtreeParent(const char *name,Int_t levmax=15,Int_t ispec=0);
-
- virtual void WriteEuclid(const char*, const char*, Int_t, Int_t);
-
- virtual void SetABAN(Int_t par=1);
- virtual void SetANNI(Int_t par=1);
- virtual void SetAUTO(Int_t par=1);
- virtual void SetBOMB(Float_t bomb=1);
- virtual void SetBREM(Int_t par=1);
- virtual void SetCKOV(Int_t par=1);
- virtual void SetClipBox(const char *name,Float_t xmin=-9999,Float_t xmax=0, Float_t ymin=-9999,Float_t ymax=0,Float_t zmin=-9999,Float_t zmax=0);
- virtual void SetCOMP(Int_t par=1);
- virtual void SetCUTS(Float_t cutgam,Float_t cutele,Float_t cutneu,Float_t cuthad,
- Float_t cutmuo ,Float_t bcute ,Float_t bcutm ,Float_t dcute ,
- Float_t dcutm ,Float_t ppcutm, Float_t tofmax);
- virtual void SetDCAY(Int_t par=1);
- virtual void SetDEBU(Int_t emin=1, Int_t emax=999, Int_t emod=1);
- virtual void SetDRAY(Int_t par=1);
- virtual void SetHADR(Int_t par=1);
- virtual void SetKINE(Int_t kine, Float_t xk1=0, Float_t xk2=0, Float_t xk3=0, Float_t xk4=0,
- Float_t xk5=0, Float_t xk6=0, Float_t xk7=0, Float_t xk8=0, Float_t xk9=0,
- Float_t xk10=0);
- virtual void SetLOSS(Int_t par=2);
- virtual void SetMULS(Int_t par=1);
- virtual void SetMUNU(Int_t par=1);
- virtual void SetOPTI(Int_t par=2);
- virtual void SetPAIR(Int_t par=1);
- virtual void SetPFIS(Int_t par=1);
- virtual void SetPHOT(Int_t par=1);
- virtual void SetRAYL(Int_t par=1);
- virtual void SetSWIT(Int_t sw, Int_t val=1);
- virtual void SetTRIG(Int_t nevents=1);
-
- virtual void Vname(const char *name, char *vname);
-
- virtual void InitLego();
-
- ClassDef(AliGEODB,1) //C++ interface to Geant basic routines
-};
-
-#endif
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-Revision 1.2 1999/09/29 09:24:19 fca
-Introduction of the Copyright and cvs Log
-
-*/
-
-// -*- C++ -*-
-//
-// 1998/10/19
-// ---------------------------------------------------------------------------
-//
-// AliGMaterial Class
-//
-// This file is part of the ALICE Geometry Database .
-//
-// Author: Joana E. Santo
-//
-// ---------------------------------------------------------------------------
-
-#include "AliGMaterial.h"
-
-ClassImp(AliGMaterial)
-
-
-//-------------------------------------------------------------------------
-
-AliGMaterial::AliGMaterial( Int_t imat, Text_t* name, Text_t* title, Int_t isvol, Int_t ifield, Float_t fieldm, Float_t tmaxfd, Float_t stemax, Float_t deemax, Float_t epsil, Float_t stmin, Float_t* ubuf, Int_t nbuf, Float_t a, Float_t z, Float_t dens, Float_t radl, Float_t absl, Float_t* buf, Int_t nwbuf ) : TNamed(name, title)
-{
- /* VIC: Very Important Constructor */
-
- fImat = imat;
- fIsvol = isvol;
- fIfield = ifield;
- fFieldm = fieldm;
- fTmaxfd = tmaxfd;
- fStemax = stemax;
- fDeemax = deemax;
- fEpsil = epsil;
- fStmin = stmin;
-
- fUbuf = new Float_t[nbuf];
-
- for( int i=0; i<nbuf; i++ )
- fUbuf[i] = ubuf[i];
-
- fNbuf = nbuf;
- fA = a;
- fZ = z;
- fDens = dens;
- fRadl = radl;
- fAbsl = absl;
-
- fBuf = new Float_t[nwbuf];
-
- for( int j=0; j<nwbuf; j++ )
- fBuf[j] = buf[j];
-
- fNwbuf = nwbuf;
-}
-
-//-------------------------------------------------------------------------
-
-AliGMaterial::AliGMaterial(Text_t* name, Text_t* title, Float_t A, Float_t Z, Float_t rho) : TNamed(name, title)
-{
- /* Constructor */
- fA = A;
- fRho = rho;
- fZ = Z;
-}
-
-//-------------------------------------------------------------------------
-
-AliGMaterial::AliGMaterial( AliGMaterial* Mat )
-{
- /* Copy Constructor */
- if( Mat ) {
- fImat = Mat->fImat;
- fIsvol = Mat->fIsvol;
- fIfield = Mat->fIfield;
- fFieldm = Mat->fFieldm;
- fTmaxfd = Mat->fTmaxfd;
- fStemax = Mat->fStemax;
- fDeemax = Mat->fDeemax;
- fEpsil = Mat->fEpsil;
- fStmin = Mat->fStmin;
-
- fUbuf = new Float_t[Mat->fNbuf];
-
- for( int i=0; i<Mat->fNbuf; i++ )
- fUbuf[i] = Mat->fUbuf[i];
-
- fNbuf = Mat->fNbuf;
- fA = Mat->fA;
- fZ = Mat->fZ;
- fDens = Mat->fDens;
- fRadl = Mat->fRadl;
- fAbsl = Mat->fAbsl;
-
- fBuf = new Float_t[Mat->fNwbuf];
-
- for( int j=0; j<Mat->fNwbuf; j++ )
- fBuf[j] = Mat->fBuf[j];
-
- fNwbuf = Mat->fNwbuf;
-
- fName = Mat->GetName();
- fTitle = Mat->GetTitle();
- }
- else {
- /* Default Constructor */
- fImat = 0;
- fIsvol = 0;
- fIfield = 0;
- fFieldm = 0.;
- fTmaxfd = 0.;
- fStemax = 0.;
- fDeemax = 0.;
- fEpsil = 0.;
- fStmin = 0.;
-
- fUbuf = NULL;
-
- fNbuf = 0;
- fA = 0.;
- fZ = 0.;
- fDens = 0.;
- fRadl = 0.;
- fAbsl = 0.;
-
- fBuf = NULL;
-
- fNwbuf = 0;
-
- fName = "";
- fTitle = "";
- }
-}
-
-//-------------------------------------------------------------------------
-
-AliGMaterial::~AliGMaterial()
-{ /* Destructor */
-
- if( fUbuf ) delete [] fUbuf;
- if( fBuf ) delete [] fBuf;
-}
-
-//-------------------------------------------------------------------------
-
-AliGMaterial* AliGMaterial::operator=( const AliGMaterial* Mat )
-{
- /* Operator = */
- if( this == Mat ) return this; // special case.
-
- fA = Mat->fA;
- fName = Mat->GetName();
- fRho = Mat->fRho;
- fTitle = Mat->GetTitle();
- fZ = Mat->fZ;
-
- return this;
-}
+++ /dev/null
-#ifndef ALIGMATERIAL_H
-#define ALIGMATERIAL_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-#include <TNamed.h>
-
-class AliGMaterial: public TNamed {
- private:
- Int_t fImat;
- Int_t fIsvol;
- Int_t fIfield;
- Float_t fFieldm;
- Float_t fTmaxfd;
- Float_t fStemax;
- Float_t fDeemax;
- Float_t fEpsil;
- Float_t fStmin;
- Int_t fNbuf;
-
- Float_t* fUbuf; //[fNbuf]
-
- Float_t fA;
- Float_t fZ;
- Float_t fDens;
- Float_t fRadl;
- Float_t fAbsl;
-
-
- Float_t* fBuf;
-
- Int_t fNwbuf; //[fNbuf]
- Float_t fRho; /* Density of material */
-
- public:
- AliGMaterial( Int_t imat, Text_t* name, Text_t* title, Int_t isvol, Int_t ifield, Float_t fieldm, Float_t tmaxfd, Float_t stemax, Float_t deemax, Float_t epsil, Float_t stmin, Float_t *ubuf, Int_t nbuf, Float_t a, Float_t z, Float_t dens, Float_t radl, Float_t absl, Float_t *buf, Int_t nwbuf );
- AliGMaterial( Text_t* name, Text_t* title, Float_t A=0., Float_t Z=0., Float_t Rho=0. ); /* Constructor */
- AliGMaterial( AliGMaterial* Mat=NULL ); /* Copy or Default Constructor */
- ~AliGMaterial(); /* Destructor */
- AliGMaterial* operator=( const AliGMaterial* Mat );
- Int_t GetfImat() {return fImat;}
- ClassDef(AliGMaterial,1) //Material Class
-};
-
-#endif
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-*/
-
-/**********************************************/
-/* */
-/* FILE: AliGNode.cxx */
-/* PURPOSE: Tree elemnt of the geometry */
-/* LANGUAGE: C++ */
-/* COMPILER: CC for HP-UX 9.x and 10. */
-/* AUTHOR: Joana && David */
-/* DATE: May 28, 1999 */
-/* ADDRESS: jesanto@cern.ch, dcollado@cern.ch */
-/* */
-/**********************************************/
-
-#include <TCanvas.h>
-#include <TView.h>
-#include <TPadView3D.h>
-#include <iostream.h>
-#include <TFile.h>
-#include <TROOT.h>
-#include "AliGeometry.h"
-#include "AliGBox.h"
-#include "AliGCone.h"
-#include "AliGPCone.h"
-#include "AliGSphere.h"
-#include "AliGNode.h"
-
-const Int_t kSonsInvisible = BIT(17);
-Text_t* ROOT_FILE = "AliGeoDB.root";
-
-ClassImp(AliGNode)
-
-//----------------------------------------------------------------------
-
-AliGNode::AliGNode( AliGNode* node )
-{
-
- if( node ) {
- /* Copy Constructor */
- fConfig = new AliGConfig( node->fConfig );
- fId = node->fId;
- fMaterial = new AliGMaterial( node->fMaterial );
- fName = node->fName;
- fNcopy = new TArrayI( *(node->fNcopy) );
- fNname = node->fNname;
- fNnode = new TArrayI( *(node->fNnode) );
- fNode = new TObjArray( *(node->fNode) );
- fNsons = node->fNsons;
- fNtrans = new TArrayI( *(node->fNtrans) );
- fParent = node->fParent;
- fVis = node->fVis;
- fTitle = node->fTitle;
- fTrans = new TObjArray(*(node->fTrans));
- // fParent = new AliGNode(node->fParent);
-
- if (node->fShape) {
- if( !strcmp(node->fShape->ClassName(), "AliGBox") ) {
- fShape = new AliGBox( (AliGBox*) node->fShape );
- //fShape = new AliGBox(*(AliGBox*)node->fShape);
- }
- else {
- if( !strcmp(node->fShape->ClassName(), "AliGSphere") )
- fShape = new AliGSphere( (AliGSphere*) node->fShape );
- else {
- if( !strcmp(node->fShape->ClassName(), "AliGTube") )
- fShape = new AliGTube( (AliGTube*) node->fShape );
- else {
- if( !strcmp(node->fShape->ClassName(), "AliGCone") )
- fShape = new AliGCone( (AliGCone*) node->fShape );
- else {
- if( !strcmp(node->fShape->ClassName(), "AliGPCone") )
- fShape = new AliGPCone( (AliGPCone*) node->fShape );
- else {
- if( !strcmp(node->fShape->ClassName(), "AliGTRD1") )
- fShape = new AliGTRD1( (AliGTRD1*) node->fShape );
- }
- }
- }
- }
- }
- }
- else
- fShape = NULL;
-
- /*cout << endl << " Comparacion." << endl;
- cout << " El que paso por parametro:" << endl;
- node->Dump();
- cout << " El resultado de la copia:" << endl;
- this->Dump();*/
-
- }
- else {
- /* Default Constructor */
- fConfig = NULL;
- fId = 0;
- fMaterial = NULL;
- fName = "";
- fNcopy = NULL;
- fNname = "";
- fNnode = NULL;
- fNode = new TObjArray();
- fNsons = 0;
- fNtrans = NULL;
- fParent = NULL;
- fShape = NULL;
- fTitle = "";
- fTrans = new TObjArray();
- fVis = 0;
- }
-}
-
-//----------------------------------------------------------------------
-
-AliGNode::AliGNode( Text_t* name, Int_t id, Text_t* title, AliGBox* box, AliGMaterial *material, const Text_t *matrixname, AliGConfig* config )
-{
- /* AliGNode Constructor for AliGBox shape */
-
- if( box )
- fShape = new AliGBox(box); // Shape inside node
- else
- fShape = NULL;
-
- EndConstructor( name, id, title, material, matrixname, config );
-}
-
-//----------------------------------------------------------------------
-
-AliGNode::AliGNode( Text_t* name, Int_t id, Text_t* title, AliGSphere* sphere, AliGMaterial *material, const Text_t *matrixname, AliGConfig* config )
-{
- /* AliGNode Constructor for AliGSphere shape */
-
- if( sphere )
- fShape = new AliGSphere(sphere); // Shape inside node
- else
- fShape = NULL;
-
- EndConstructor( name, id, title, material, matrixname, config );
-}
-
-//----------------------------------------------------------------------
-
-AliGNode::AliGNode( Text_t* name, Int_t id, Text_t* title, AliGTube* tube, AliGMaterial *material, const Text_t *matrixname, AliGConfig* config )
-{
- /* AliGNode Constructor for AliGTube shape */
-
- if( tube )
- fShape = new AliGTube(tube); // Shape inside node
- else
- fShape = NULL;
-
- EndConstructor( name, id, title, material, matrixname, config );
-}
-
-//----------------------------------------------------------------------
-
-AliGNode::AliGNode( Text_t* name, Int_t id, Text_t* title, AliGCone* cone, AliGMaterial *material, const Text_t *matrixname, AliGConfig* config )
-{
- /* AliGNode Constructor for AliGCone shape */
-
- if( cone )
- fShape = new AliGCone(cone); // Shape inside node
- else
- fShape = NULL;
-
- EndConstructor( name, id, title, material, matrixname, config );
-}
-
-//----------------------------------------------------------------------
-
-
-AliGNode::AliGNode( Text_t* name, Int_t id, Text_t* title, AliGPCone* pcone, AliGMaterial *material, const Text_t *matrixname, AliGConfig* config )
-{
- /* AliGNode Constructor for AliGPCone shape */
-
- if( pcone )
- fShape = new AliGPCone(pcone); // Shape inside node
- else
- fShape = NULL;
-
- EndConstructor( name, id, title, material, matrixname, config );
-}
-
-//----------------------------------------------------------------------
-
-
-AliGNode::AliGNode( Text_t* name, Int_t id, Text_t* title, AliGTRD1* trd1, AliGMaterial *material, const Text_t *matrixname, AliGConfig* config )
-{
- /* AliGNode Constructor for AliGTRD1 shape */
-
- if( trd1 )
- fShape = new AliGTRD1(trd1); // Shape inside node
- else
- fShape = NULL;
-
- EndConstructor( name, id, title, material, matrixname, config );
-}
-
-//----------------------------------------------------------------------
-
-void AliGNode::EndConstructor( Text_t* name, Int_t id, Text_t* title, AliGMaterial *material, const Text_t *matrixname, AliGConfig* config )
-{
- /* Finish the construction of AliGNodes */
-
- fConfig = new AliGConfig(config);
- fId = id; // Node id number
- fMaterial = new AliGMaterial(material); // Material inside shape
-
- char* TmpName = new char[strlen(name)+int(TMath::Log10((double) id)+3)];
- sprintf(TmpName,"%s_%d",name,id);
- fName = TmpName; // Complete node name
- delete [] TmpName;
-
- fNcopy = new TArrayI(50); // Array of integers containing the copy number (by family name)
- fNname = name; // Node family name
- fNnode = new TArrayI(50); // Array of integers containing every node son index
- fNode = new TObjArray(100,0); // Array containing every (different)node son
- fNsons = 0;
- fNtrans = new TArrayI(50); // Array of integers containing every transformation index
- fParent = NULL;
- fTitle = title;
- fTrans = new TObjArray(100,0); // Array containing every (different)transformation used
- fVis = 1;
-
-}
-
-//-----------------------------------------------------------------------
-
-AliGNode::AliGNode( Text_t* name, Int_t id, Text_t* title, AliGShape* shape, AliGMaterial* material, const Text_t* matrixname, AliGConfig* config )
-{
- /* AliGNode Constructor for an AliGShape */
-
- fShape = NULL;
-
- EndConstructor( name, id, title, material, matrixname, config );
-}
-
-
-//----------------------------------------------------------------------
-
-AliGNode::~AliGNode()
-{
- /* Destructor */
-
- if(fConfig) delete fConfig;
- if(fMaterial) delete fMaterial;
- if(fNcopy) delete fNcopy;
- if(fNnode) delete fNnode;
- if(fNode) delete fNode;
- if(fNtrans) delete fNtrans;
- if(fShape) delete fShape;
- if(fTrans) delete fTrans;
-}
-
-//----------------------------------------------------------------------
-
-AliGNode* AliGNode::operator=( const AliGNode* node )
-{
- if( this == node ) return this; // special case.
-
- fConfig = node->fConfig;
- fId = node->fId;
- fMaterial = node->fMaterial;
- fName = node->fName;
- fNcopy = node->fNcopy;
- fNname = node->fNname;
- fNnode = node->fNnode;
-
- if( fNode ) fNode->Delete();
-
- if( node->fNode ) {
- //for( int i=0; i<node->fNode->GetSize(); i++ )
- for( int i=0; i<node->fNode->GetSize(); i++ )
- fNode->AddLast(node->fNode->At(i));
- }
-
- fNsons = node->fNsons;
- fNtrans = node->fNtrans;
- fParent = node->fParent;
- fShape = node->fShape;
- fTitle = node->fTitle;
-
- if( fTrans ) fTrans->Delete();
- if( node->fTrans ) {
- for( int i=0; i<node->fTrans->GetSize(); i++ )
- fTrans->AddLast(node->fTrans->At(i));
- }
- //fTrans = node->fTrans;
-
- return this;
-}
-
-//----------------------------------------------------------------------
-
-void AliGNode::Add(AliGNode* son, AliGTransform* tran)
-{
-
- Int_t index = fNode->IndexOf((TObject*)son);
-
- if( index == -1 ) {
- fNode->Add(son); // fNode is TObjArray
- index = fNode->IndexOf((TObject*)son);
- son->fParent = this;
- }
-
- Int_t tranumber = fTrans->IndexOf((TObject*)tran);
- if( tranumber == -1 ) {
- fTrans->Add( tran );
- tranumber = fTrans->IndexOf((TObject*)tran);
- }
-
- Int_t Nsons = this->GetfNsons();
- Int_t copy = 1;
-
- for( Int_t i = 0; i<Nsons; i++ ) {
- if( index == fNnode->At(i) ) {
- if( fNtrans->At(i) == tranumber ) {
- cout << "Error: Node already exists!";
- return;
- }
- }
-
-
- if( ((AliGNode*)fNode->At(fNnode->At(i)))->fNname == son->fNname )
- copy++;
-
- }
-
- if( fNnode->GetSize() == Nsons ) {
-
- IncreaseSize( Nsons+100, *fNnode );
- IncreaseSize( Nsons+100, *fNtrans );
- IncreaseSize( Nsons+100, *fNcopy );
-
- }
- fNnode->AddAt( index, Nsons ); // Add value of index at position Nsons
-
- fNtrans->AddAt( tranumber, Nsons );
- fNcopy->AddAt( copy, Nsons );
- fNsons++; // Because we have added a new node
-
-}
-
-//----------------------------------------------------------------------
-
-void AliGNode::IncreaseSize(Int_t total,TArrayI &array)
-{
- TArrayI *newarray = new TArrayI(array);
- array.Set(total);
-
- for( int i=0; i<newarray->GetSize(); i++ )
- array[i] = (*newarray)[i];
-
- delete newarray;
-}
-
-//----------------------------------------------------------------------
-
-Text_t* AliGNode::GetPath()
-{
- const int kMAXDEPTH = 128;
- const AliGNode* d[kMAXDEPTH];
- AliGNode* node = this;
- int depth = 0, len = 0;
-
- d[depth++] = node;
- len = strlen(node->GetName()) + 1;
-
- while (node->fParent && depth < kMAXDEPTH) {
- node = node->fParent;
- d[depth++] = node;
- len += strlen (node->GetName()) + 1;
- }
-
- char* path = new char[len + 2];
-
- for (int i = depth-1; i>=0; i--) {
- if (i == depth-1) { // file or TROOT name
- strcpy(path, d[i]->GetName());
- if (i == 0) strcat(path, "/");
- }
- else {
- strcat(path, "/");
- strcat(path, d[i]->GetName());
- }
- }
-
- return path;
-}
-
-
-//----------------------------------------------------------------------
-
-void AliGNode::Save( TFile* file )
-{
- if( fParent ) { // it's not the root node
- // So I must check if the father node is in disk
-
- if( file->cd(fParent->GetPath()) ) {
-
- if( !gDirectory->Get(GetName()) )
- file->mkdir( GetName() );
-
- file->cd( GetPath() );
-
- if( !gDirectory->Get( fShape->GetName() ) )
- if ( fShape ) {
-/* const Text_t* shapetype = fShape->ClassName();
- if( !strcmp(shapetype,"AliGBox") ) {
- fShape->Write();
- }
- else {
- if (!strcmp(shapetype,"AliGSphere")) {
- fShape->Write();
- }
- else {
- if (!strcmp(shapetype,"AliGTube")) {
- fShape->Write();
- }
- else {
- if (!strcmp(shapetype,"AliGCone")) {
- fShape->Write();
- }
- else {
- if (!strcmp(shapetype,"AliGPCone")) {
- cout << " Saving an AliGPCone:" << endl;
- fShape->Dump();
- cout << endl;
- fShape->Write();
- }
- else {
- if (!strcmp(shapetype,"AliGTRD1")) {
- fShape->Write();
- }
- }
- }
- }
- }
- }*/
- fShape->Write();
- }
-
-
- if( !gDirectory->Get( fMaterial->GetName() ) )
- if ( fMaterial )
- fMaterial->Write();
-
- if ( fConfig ) {
- /*cout << " Con capacidad: " << fConfig->GetFormula().Capacity() << " voy a grabar esta configuracion: " << fConfig->GetFormula().Data() << endl;*/
- fConfig->Write();
- }
-
- if ( fTrans )
- fTrans->Write();
- }
- else
- cout << " ERROR : Father exists but I can't find it. See AliGNode::Save, please..." << endl;
- }
- else { // if it's the root node
- file->mkdir( GetName() );
- file->cd( GetPath() );
-
- if ( fShape )
- fShape->Write();
-
- if ( fMaterial )
- fMaterial->Write();
-
- if ( fConfig ) {
- /*cout << " Con capacidad: " << fConfig->GetFormula().Capacity() << " voy a grabar esta configuracion: " << fConfig->GetFormula().Data() << endl;*/
- fConfig->Write();
- }
-
- if ( fTrans )
- fTrans->Write();
- }
-
- fflush(stdout);
- file->Write();
-}
-
-//----------------------------------------------------------------------
-
-void AliGNode::SaveAll( TFile* file )
-{
-/* if( fParent )
- file->cd( fParent->GetPath() );
- else
- file->cd();
-
- Save( file );
-
- for( int i=0; i<fNsons; i++ ) {
- cout << " Saving node: " << GetPath() << " with copy number " << << endl;
- GetNodeFromfNnode(i)->SaveAll( file );
- }
-*/
-
- if( !gDirectory->Get(GetName()) ) {
- Save( file );
-
- for( int i=0; i<fNsons; i++ )
- GetNodeFromfNnode(i)->SaveAll( file );
- }
-
-/* if (!file->cd(GetPath())) {
- Save( file );
-
- for( int i=0; i<fNsons; i++ )
- GetNodeFromfNnode(i)->SaveAll( file );
- }
-*/
-}
-
-//----------------------------------------------------------------------
-
-void AliGNode::AddConfig( Text_t* name, Text_t* title, Text_t* detail, Int_t beg, Int_t end )
-{
- Int_t Nsons = GetfNsons();
-
- TStringLong formula = "";
-
- for( int i=0; i<Nsons; i++ ) {
- Int_t index = fNnode->At(i); // Gets every node son's index
- const Text_t* NodeName = ((AliGNode*)fNode->At(index))->GetName();
- Int_t tranumber = fNtrans->At(i); // And the correspondent transform
- const Text_t* TransfName = ((AliGTransform*)fTrans->At(tranumber))->GetName();
-
- formula.Append(NodeName);
- formula.Append(":");
- formula.Append(TransfName);
-
- if( i != fNsons-1 )
- formula.Append("+");
- }
-
- //cout << " Acabo de crear la formula: " << formula << endl << endl;
-
- const Text_t* shapetype = fShape->ClassName();
- const Text_t* shapename = fShape->GetName();
- const Text_t* materialname = fMaterial->GetName();
-
- AliGConfig* tmp = new AliGConfig( name, title, formula, detail, shapetype, shapename, materialname, beg, end );
-
- //if(fConfig) delete fConfig;
-
- fConfig = tmp;
-}
-
-//----------------------------------------------------------------------
-
-/*void AliGNode::AddConfig( Text_t* name, Text_t* title, Text_t* detail, Int_t beg, Int_t end )
-{
- // Creates the configuration of a node using the information passed as arguments
- // and building the formula of the level below by building the list of its sons
- // recursively.
-
- Int_t Nsons = GetfNsons();
-
- char* formula = NULL;
-
- cout << " Nsons = " << Nsons << endl;
-
- for( int i=0; i<Nsons; i++ ) {
- Int_t index = fNnode->At(i); // Gets every node son's index
- const Text_t* NodeName = ((AliGNode*)fNode->At(index))->GetName();
- Int_t tranumber = fNtrans->At(i); // And the correspondent transform
- const Text_t* TransfName = ((AliGTransform*)fTrans->At(tranumber))->GetName();
-
- int lenF, lenN, lenT;
- lenF = lenN = lenT = 0;
-
- cout << " i = " << i << " and fNsons = " << fNsons << endl;
-
- if ( formula ) {
- lenF = strlen(formula);
- cout << " formula = #" << formula << "#" << endl;
- }
-
- if ( NodeName ) {
- lenN = strlen(NodeName);
- cout << " NodeName = #" << NodeName << "#" << endl;
- }
-
- if ( TransfName ) {
- lenT = strlen(TransfName);
- cout << " TransfName = #" << TransfName << "#" << endl;
- }
-
- cout << " lenF: " << lenF << " - lenN: " << lenN << " - lenT: " << lenT << endl;
-
- char* formula2;
-
- if( i != fNsons-1 ) {
- cout << " Arriba" << endl;
- formula2 = new char[lenF+lenN+lenT+2];
- }
- else {
- cout << " Embaixo" << endl;
- formula2 = new char[lenF+lenN+lenT+1];
- }
-
- formula2[0] = '\x0';
-
- cout << "@@@ :) @@@" << endl;
-
- if ( formula ) {
- strcpy( formula2, formula );
- cout << "1 formula2 = #" << formula2 << "#" << endl;
- }
-
- if( NodeName ) {
- strcat( formula2, NodeName );
- cout << "2 formula2 = #" << formula2 << "#" << endl;
- }
-
- strcat( formula2, ":" );
-
- if( TransfName ) {
- strcat( formula2, TransfName );
- cout << "3 formula2 = #" << formula2 << "#" << endl;
- }
-
- if( i != fNsons-1 ) {
- strcat( formula2, "+" );
- cout << "4 formula2 = #" << formula2 << "#" << endl;
- }
-
- //strcat( formula2, "\x0" );
- //cout << "5 formula2 = #" << formula2 << "#" << endl;
-
- cout << " Y formula2 tiene un tamanyo de: " << strlen(formula2) << " caracteres." << endl;
-
- //if( formula ) delete [] formula;
- formula = new char[strlen(formula2)];
- strcpy( formula, formula2 );
- if( formula2 ) delete [] formula2;
- }
-
- const Text_t* shapetype = fShape->ClassName();
- const Text_t* shapename = fShape->GetName();
- const Text_t* materialname = fMaterial->GetName();
-
- AliGConfig* tmp = new AliGConfig( name, title, formula, detail, shapetype, shapename, materialname, beg, end );
-
- if(fConfig) delete fConfig;
-
- fConfig = tmp;
-}
-*/
-
-//-------------------------------------------------------------------------
-
-void AliGNode::DrawShape(Option_t *option)
-{
- Draw(option);
- gPad->Update();
-}
-
-//----------------------------------------------------------------------
-
-void AliGNode::Draw(Option_t* option)
-{
-
- TString opt = option;
- opt.ToLower();
-//*-*- Clear pad if option "same" not given
- if (!gPad) {
- if (!gROOT->GetMakeDefCanvas()) return;
- (gROOT->GetMakeDefCanvas())();
- }
- if (!opt.Contains("same")) gPad->Clear();
-
-//*-*- Draw Referenced node
- //gGeometry->SetGeomLevel();
- //gGeometry->UpdateTempMatrix();
-
- AppendPad(option);
-
-//*-*- Create a 3-D View
- TView *view = gPad->GetView();
- if (!view) {
- view = new TView(1);
- view->SetAutoRange(kTRUE);
- Paint(option);
- view->SetAutoRange(kFALSE);
- }
-}
-
-//------------------------------------------------------------------
-
-void AliGNode::Paint(Option_t *option)
-{
- // Print();
- TPadView3D *view3D=gPad->GetView3D();
-
- //Int_t level = gGeometry->GeomLevel();
-// restrict the levels for "range" option
- //if (level > 3 && strcmp(option,"range") == 0) return;
-//*-*- Update translation vector and rotation matrix for new level
- //if (level) {
- // gGeometry->UpdateTempMatrix(fX,fY,fZ,fMatrix->GetMatrix(),fMatrix->IsReflection());
- // if (view3D)
- // view3D->UpdateNodeMatrix(this,option);
- // }
-
-//*-*- Paint Referenced shape
-// Int_t vis = fShape->GetVisibility();
-// if ( vis == -1) return;
-// if (vis == -3) {
-// if (nsons == 0) vis = 1;
-// else vis = 0;
-// }
-
- // TAttLine::Modify();
- // TAttFill::Modify();
- //if (fVisibility && fShape->GetVisibility()) {
- gNode = this;
- //fShape->SetLineColor(GetLineColor());
- //fShape->SetLineStyle(GetLineStyle());
- //fShape->SetLineWidth(GetLineWidth());
- //fShape->SetFillColor(GetFillColor());
- //fShape->SetFillStyle(GetFillStyle());
-
- Int_t nsons = 0;
- if (fNnode) nsons = GetfNsons();
- if (view3D)
- view3D->SetAttNode((TNode*)this,option);
-
-
- if(fVis) {
- if( fShape )
- fShape->Paint(option);
- else
- cout << " Intente dibujar donde no habia shape!!! " << endl;
- }
- //}
- if ( TestBit(kSonsInvisible) ) return;
-
-//*-*- Paint all sons
- if(!nsons) return;
-
- //gGeometry->PushLevel();
- for( int i=0; i<nsons; i++ ) {
-
- gAliGeometry->PushMatrix(gMatrix);
-
- AliGNode* node = (AliGNode*) fNode->At(fNnode->At(i));
-
- AliGTransform* trans = (AliGTransform*) fTrans->At(fNtrans->At(i));
- gAliGeometry->UpdateMatrix(trans);
- node->Paint(option);
- gAliGeometry->PopMatrix();
-
- }
- //gGeometry->PopLevel();
-
-}
-
-
-//--------------------------------------------------------------------
-
-Int_t AliGNode::DistancetoPrimitive(Int_t px, Int_t py)
-{
- TView *view = gPad->GetView();
- gPad->SetSelected(view);
- return 0;
-}
-
-//--------------------------------------------------------------------
-
+++ /dev/null
-#ifndef ALIGNODE_H
-#define ALIGNODE_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-#include <TObjArray.h>
-#include <TNamed.h>
-#include <TArrayI.h>
-#include <TFile.h>
-#include "AliGTransform.h"
-#include "AliGShape.h"
-#include "AliGBox.h"
-#include "AliGSphere.h"
-#include "AliGTube.h"
-#include "AliGCone.h"
-#include "AliGPCone.h"
-#include "AliGTRD1.h"
-#include "AliGMaterial.h"
-#include "AliGConfig.h"
-
-class AliGNode : public TNamed {
-
-protected:
- AliGConfig* fConfig;
- Int_t fId; /* node id number */
- AliGMaterial* fMaterial; /* material */
- TArrayI* fNcopy; /* copy numbers list (associated with the sons list) */
- TString fNname; /* node 'short' name */
- TArrayI* fNnode; /* Sons list */
- TObjArray* fNode; /* list of all nodes below */
- Int_t fNsons; /* Number of elements in fNnode */
- TArrayI* fNtrans; /* transf list (associated with the sons list) */
- AliGNode* fParent; /* Pointer to the parent node */
- AliGShape* fShape; /* shape */
- TObjArray* fTrans; /* list of all the transformations involved */
- Int_t fVis; /* Visibility */
-
-
-public:
- AliGNode( AliGNode* node=NULL ); /* Copy or Default Constructor */
-
- AliGNode( Text_t* name, Int_t id, Text_t* title, AliGBox* box, AliGMaterial* material=NULL, const Text_t* matrixname="", AliGConfig* config=NULL ); /* AliGNode Constructor for AliGBox shape */
-
- AliGNode( Text_t* name, Int_t id, Text_t* title, AliGSphere* sphere, AliGMaterial* material=NULL, const Text_t* matrixname="", AliGConfig* config=NULL ); /* AliGNode Constructor for AliGSphere shape */
-
- AliGNode( Text_t* name, Int_t id, Text_t* title, AliGTube* tube, AliGMaterial* material=NULL, const Text_t* matrixname="", AliGConfig* config=NULL ); /* AliGNode Constructor for AliGTube shape */
-
- AliGNode( Text_t* name, Int_t id, Text_t* title, AliGCone* cone, AliGMaterial* material=NULL, const Text_t* matrixname="", AliGConfig* config=NULL ); /* AliGNode Constructor for AliGCone shape */
-
- AliGNode( Text_t* name, Int_t id, Text_t* title, AliGPCone* pcone,AliGMaterial* material=NULL, const Text_t* matrixname="", AliGConfig* config=NULL ); /* AliGNode Constructor for AliGPCone shape */
-
- AliGNode( Text_t* name, Int_t id, Text_t* title, AliGShape* shape, AliGMaterial* material=NULL, const Text_t* matrixname="", AliGConfig* config=NULL ); /* AliGNode Constructor for an AliGShape */
-
- AliGNode( Text_t* name, Int_t id, Text_t* title, AliGTRD1* trd1, AliGMaterial* material=NULL, const Text_t* matrixname="", AliGConfig* config=NULL );
-
- virtual ~AliGNode(); /* Destructor */
- AliGNode* operator=( const AliGNode* node ); /* Operator = */
- virtual AliGMaterial *Material() const { return fMaterial;}
-
- void Add(AliGNode *son,AliGTransform *tran);
- void AddConf(AliGConfig* configname) { fConfig = configname;}
- void AddConfig(Text_t* name, Text_t* title, Text_t* detail="",Int_t beg=0, Int_t end=0);
- void AddMaterial(AliGMaterial* materialname) { fMaterial = materialname;}
- void AddShape( AliGShape* shapename) { fShape = shapename;}
- Int_t DistancetoPrimitive( Int_t px, Int_t py);
- void Draw( Option_t* option);
- void DrawShape( Option_t* option); /* MENU */
- void EndConstructor( Text_t* name, Int_t id, Text_t* title, AliGMaterial *material, const Text_t *matrixname, AliGConfig* config );
- AliGConfig* GetConfig() {return fConfig;}
-
- TArrayI* GetfNnode() {return fNnode;}
- TObjArray* GetfNode() {return fNode;}
- Int_t GetfNsons() {return fNsons;}
- TArrayI* GetfNtrans(){return fNtrans;}
- TArrayI* GetfNcopy(){return fNcopy;}
- TObjArray* GetfTrans() {return fTrans;}
- AliGMaterial* GetMaterial() {return fMaterial;}
- AliGNode* GetNodeFromfNnode(int position) {return (AliGNode*)
- this->fNode->At(fNnode->At(position));}
- const Text_t* GetFamName() {return fNname;}
- AliGNode* GetNodeFromfNode(int position) {return (AliGNode*)
- this->fNode->At(position);}
- AliGNode* GetParent() {return fParent;}
- Text_t* GetPath();
- AliGShape* GetShape() {return fShape;}
- AliGTransform* GetTransFromfTrans(int position) {return (AliGTransform*) this->fTrans->At(position);}
- //void IncreaseSize(const Int_t total, TArrayI** array);
- void IncreaseSize(Int_t total,TArrayI &array);
- void Paint( Option_t *option);
- void Save(TFile* file);
- void SaveAll(TFile* file);
- Int_t SizefNode() {return this->fNode->GetSize();}
- //void Streamer(TBuffer &b);
- void SetVis(Int_t val) {fVis = val;}
-
- ClassDef(AliGNode,1) //Node class
-};
-
-//R__EXTERN TArrayF* gMatrix;
-
-#endif
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-*/
-
-// -*- C++ -*-
-//
-// 1998/10/19
-// ---------------------------------------------------------------------------
-//
-// AliGPCone Class
-//
-// This file is part of the ALICE Geometry Database .
-//
-// By: Joana E. Santo & David Collados
-//
-// ---------------------------------------------------------------------------
-
-#include <TView.h>
-#include <TVirtualPad.h>
-#include <iostream.h>
-#include <TGLKernelABC.h>
-#include <TCanvas.h>
-#include "AliGPCone.h"
-#include "TROOT.h"
-
-ClassImp(AliGPCone)
-
-AliGPCone::AliGPCone() : AliGShape()
-{
- /* Default Constructor */
-
- fPhi1 = 0.;
- fDphi1 = 0.;
- fNz = 0;
- fNdiv = 0;
- fRmin = NULL;
- fRmax = NULL;
- fDz = NULL;
- fCoTab = NULL;
- fSiTab = NULL;
-}
-
-//-------------------------------------------------------------------------
-
-AliGPCone::AliGPCone( AliGPCone* pcone )
-{
- /* Copy Constructor */
- if( pcone->fNz < 2 ) {
- Error( pcone->GetName(), "number of z planes for %s must be at least two !", pcone->GetName() );
- return;
- }
-
- fName = pcone->fName;
- fTitle = pcone->fTitle;
-
- fColor = pcone->fColor;
- fPhi1 = pcone->fPhi1;
- fDphi1 = pcone->fDphi1;
- fNz = pcone->fNz;
- fNdiv = pcone->fNdiv;
-
- fRmin = new Float_t [fNz+1];
- fRmax = new Float_t [fNz+1];
- fDz = new Float_t [fNz+1];
-
- fCoTab = NULL;
- fSiTab = NULL;
-
- while (fDphi1 > 360) fDphi1 -= 360;
-
- MakeTableOfCoSin();
-
- for( int k=0; k<fNz; k++ ) {
- fDz[k] = pcone->fDz[k];
- fRmin[k] = pcone->fRmin[k];
- fRmax[k] = pcone->fRmax[k];
- }
-
-}
-
-//-------------------------------------------------------------------------
-
-AliGPCone::AliGPCone( Text_t *name, Text_t *title, Float_t phi1, Float_t dphi1, Int_t nz ) : AliGShape(name, title)
-{
- /* Constructor */
-
- if (nz < 2 ) {
- Error(name, "number of z planes for %s must be at least two !", name);
- return;
- }
-
- fPhi1 = phi1;
- fDphi1 = dphi1;
- fNz = nz;
- fNdiv = 0;
- fRmin = new Float_t [fNz+1];
- fRmax = new Float_t [fNz+1];
- fDz = new Float_t [fNz+1];
-
- fCoTab = NULL;
- fSiTab = NULL;
-
- while (fDphi1 > 360) fDphi1 -= 360;
-
- MakeTableOfCoSin();
-}
-
-//---------------------------------------------------------------------------
-
-AliGPCone::AliGPCone( Text_t *name, Text_t* title, Float_t *upar, Int_t np) : AliGShape(name, title)
-{
- if (upar[2] < 2 ) {
- Error(name, "number of z planes for %s must be at least two !", name);
- return;
- }
-
- fPhi1 = upar[0];
- fDphi1 = upar[1];
- fNz = (Int_t) upar[2];
- fNdiv = 0;
- fRmin = new Float_t [fNz+1];
- fRmax = new Float_t [fNz+1];
- fDz = new Float_t [fNz+1];
- fCoTab = NULL;
- fSiTab = NULL;
-
- while (fDphi1 > 360) fDphi1 -= 360;
-
- MakeTableOfCoSin();
-
- for( int j=3, k=0; k<fNz; k++ ) {
- fDz[k] = upar[j];
- fRmin[k] = upar[j+1];
- fRmax[k] = upar[j+2];
- j+=3;
- }
-}
-
-//-------------------------------------------------------------------------
-
-AliGPCone::AliGPCone( Text_t *name, Text_t* title, Float_t phi1, Float_t dphi1, Int_t nz, Float_t Z[10], Float_t RMIN[10], Float_t RMAX[10] ) : AliGShape(name, title)
-{
- cout << " ENTRA EN EL CONSTRUCTOR CHUNGO !!!!!! " << endl;
-
- //AliGPCone(name, title, phi1, dphi1, nz);
-
- //for (int i= 0; i<nz; i++)
- //DefineSection(i, Z[i], RMIN[i], RMAX[i]);
-}
-
-//---------------------------------------------------------------------------
-
-AliGPCone::~AliGPCone()
-{
- /* Destructor */
-
- if( fRmin ) delete [] fRmin;
- if( fRmax ) delete [] fRmax;
- if( fDz ) delete [] fDz;
- //if( fSiTab ) delete fSiTab;
- //if( fCoTab ) delete fCoTab;
-
- fRmin = NULL;
- fRmax = NULL;
- fDz = NULL;
- //fCoTab = NULL;
- //fSiTab = NULL;
-}
-
-//-------------------------------------------------------------------------
-
-void AliGPCone::DrawShape(Option_t *option)
-{
- Draw(option);
- gPad->Update();
-}
-
-//-------------------------------------------------------------------------
-
-void AliGPCone::Draw(Option_t *option)
-{
- //cout << " Entra en " << this->GetName() << "::Draw " << endl;
-
- TString opt = option;
- opt.ToLower();
-
- if( !gPad ) {
- //TCanvas* Cone = new TCanvas("AliGPCone","AliGPCone",0,0,400,300);
- gPad = new TCanvas("AliGPCone","AliGPCone",0,0,400,300);
- gPad->Range(0,0,1,1);
- gPad->SetFillColor(32); // Light Green
- gPad->SetBorderSize(3);
- gPad->SetBorderMode(0); // -1 (down) 0 (no) 1 (up)
- }
- else {
- if( !opt.Contains("same") ) {
- gPad->Clear();
- gPad->SetName("AliGPCone");
- gPad->SetTitle("AliGPCone");
- }
- else {
- gPad->SetName("AliShapes");
- gPad->SetTitle("AliShapes");
- }
- }
-
- AppendPad(option);
- TView *view = gPad->GetView();
-
- if (!view)
- view = new TView(1);
-
- view->SetAutoRange(kTRUE);
- Paint(option);
- view->SetAutoRange(kFALSE);
- //cout << " Sale de " << this->GetName() << "::Draw " << endl;
-}
-
-//-------------------------------------------------------------------------
-
-void AliGPCone::SetPoints(Float_t *buff)
-{
- //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Create PCON points*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
-//*-* ==================
-
- Int_t i, j;
- Int_t indx = 0;
-
- if (buff) {
-
- Int_t n = GetNumberOfDivisions()+1;
-
-//*-* We've to check whether the table does exist and create it
-//*-* since fCoTab/fSiTab are not saved with any TShape::Streamer function
- if (!fCoTab) MakeTableOfCoSin();
-
- for (i = 0; i < fNz; i++)
- {
- for (j = 0; j < n; j++)
- {
- buff[indx++] = fRmin[i] * fCoTab[j];
- buff[indx++] = fRmin[i] * fSiTab[j];
- buff[indx++] = fDz[i];
- }
- for (j = 0; j < n; j++)
- {
- buff[indx++] = fRmax[i] * fCoTab[j];
- buff[indx++] = fRmax[i] * fSiTab[j];
- buff[indx++] = fDz[i];
- }
- }
- }
-}
-
-//-------------------------------------------------------------------------
-
-void AliGPCone::Paint(Option_t *option)
-{
-
-//*-*-*-*-*-*-*-*Paint this 3-D shape with its current attributes*-*-*-*-*-*-*-*
-//*-* ================================================
-
- Int_t i, j;
- if (fNz < 2) return;
- const Int_t n = GetNumberOfDivisions()+1;
-
- SetLineColor( GetCol() );
-
- Int_t numpoints = fNz*2*n;
- if (numpoints <= 0) return;
- //*-* Allocate memory for points *-*
-
- Float_t *points = new Float_t[3*numpoints];
- if (!points) return;
- SetPoints(points);
-
- Bool_t rangeView = strcmp(option,"range")==0 ? kTRUE : kFALSE;
- if (!rangeView && gPad->GetView3D()) PaintGLPoints(points);
-
- //== for (i = 0; i < numpoints; i++)
- //== gNode->Local2Master(&points[3*i],&points[3*i]);
-
- Bool_t specialCase = kFALSE;
-
- if (fDphi1 == 360) //mark this as a very special case, when
- specialCase = kTRUE; //we have to draw this PCON like a TUBE
-
- X3DBuffer *buff = new X3DBuffer;
-
- if (buff) {
- buff->numPoints = numpoints;
- buff->numSegs = 4*(fNz*n-1+(specialCase == kTRUE));
- buff->numPolys = 2*(fNz*n-1+(specialCase == kTRUE));
- }
-
- //*-* Allocate memory for points *-*
-
- buff->points = points;
-
- Int_t c = ((GetLineColor() % 8) - 1) * 4; // Basic colors: 0, 1, ... 7
- if (c < 0) c = 0;
-
- //*-* Allocate memory for segments *-*
-
- Int_t indx, indx2, k;
- indx = indx2 = 0;
-
- buff->segs = new Int_t[buff->numSegs*3];
- if (buff->segs) {
-
- //inside & outside circles, number of segments: 2*fNz*(n-1)
- // special case number of segments: 2*fNz*n
- for (i = 0; i < fNz*2; i++) {
- indx2 = i*n;
- for (j = 1; j < n; j++) {
- buff->segs[indx++] = c;
- buff->segs[indx++] = indx2+j-1;
- buff->segs[indx++] = indx2+j;
- }
- if (specialCase) {
- buff->segs[indx++] = c;
- buff->segs[indx++] = indx2+j-1;
- buff->segs[indx++] = indx2;
- }
- }
-
- //bottom & top lines, number of segments: 2*n
- for (i = 0; i < 2; i++) {
- indx2 = i*(fNz-1)*2*n;
- for (j = 0; j < n; j++) {
- buff->segs[indx++] = c;
- buff->segs[indx++] = indx2+j;
- buff->segs[indx++] = indx2+n+j;
- }
- }
-
- //inside & outside cilindres, number of segments: 2*(fNz-1)*n
- for (i = 0; i < (fNz-1); i++) {
-
- //inside cilinder
- indx2 = i*n*2;
- for (j = 0; j < n; j++) {
- buff->segs[indx++] = c+2;
- buff->segs[indx++] = indx2+j;
- buff->segs[indx++] = indx2+n*2+j;
- }
- //outside cilinder
- indx2 = i*n*2+n;
- for (j = 0; j < n; j++) {
- buff->segs[indx++] = c+3;
- buff->segs[indx++] = indx2+j;
- buff->segs[indx++] = indx2+n*2+j;
- }
- }
-
- //left & right sections, number of segments: 2*(fNz-2)
- // special case number of segments: 0
- if (!specialCase) {
- for (i = 1; i < (fNz-1); i++) {
- for (j = 0; j < 2; j++) {
- buff->segs[indx++] = c;
- buff->segs[indx++] = 2*i * n + j*(n-1);
- buff->segs[indx++] = (2*i+1) * n + j*(n-1);
- }
- }
- }
- }
-
-
- Int_t m = n - 1 + (specialCase == kTRUE);
-
-//*-* Allocate memory for polygons *-*
-
- indx = 0;
-
- buff->polys = new Int_t[buff->numPolys*6];
-
- if (buff->polys) {
-
- //bottom & top, number of polygons: 2*(n-1)
- // special case number of polygons: 2*n
- for (i = 0; i < 2; i++) {
- for (j = 0; j < n-1; j++) {
- buff->polys[indx++] = c+3;
- buff->polys[indx++] = 4;
- buff->polys[indx++] = 2*fNz*m+i*n+j;
- buff->polys[indx++] = i*(fNz*2-2)*m+m+j;
- buff->polys[indx++] = 2*fNz*m+i*n+j+1;
- buff->polys[indx++] = i*(fNz*2-2)*m+j;
- }
- if (specialCase) {
- buff->polys[indx++] = c+3;
- buff->polys[indx++] = 4;
- buff->polys[indx++] = 2*fNz*m+i*n+j;
- buff->polys[indx++] = i*(fNz*2-2)*m+m+j;
- buff->polys[indx++] = 2*fNz*m+i*n;
- buff->polys[indx++] = i*(fNz*2-2)*m+j;
- }
- }
-
-
- //inside & outside, number of polygons: (fNz-1)*2*(n-1)
- for (k = 0; k < (fNz-1); k++) {
- for (i = 0; i < 2; i++) {
- for (j = 0; j < n-1; j++) {
- buff->polys[indx++] = c+i;
- buff->polys[indx++] = 4;
- buff->polys[indx++] = (2*k+i*1)*m+j;
- buff->polys[indx++] = fNz*2*m+(2*k+i*1+2)*n+j;
- buff->polys[indx++] = (2*k+i*1+2)*m+j;
- buff->polys[indx++] = fNz*2*m+(2*k+i*1+2)*n+j+1;
- }
- if (specialCase) {
- buff->polys[indx++] = c+i;
- buff->polys[indx++] = 4;
- buff->polys[indx++] = (2*k+i*1)*m+j;
- buff->polys[indx++] = fNz*2*m+(2*k+i*1+2)*n+j;
- buff->polys[indx++] = (2*k+i*1+2)*m+j;
- buff->polys[indx++] = fNz*2*m+(2*k+i*1+2)*n;
- }
- }
- }
-
-
- //left & right sections, number of polygons: 2*(fNz-1)
- // special case number of polygons: 0
- if (!specialCase) {
- indx2 = fNz*2*(n-1);
- for (k = 0; k < (fNz-1); k++) {
- for (i = 0; i < 2; i++) {
- buff->polys[indx++] = c+2;
- buff->polys[indx++] = 4;
- buff->polys[indx++] = k==0 ? indx2+i*(n-1) : indx2+2*fNz*n+2*(k-1)+i;
- buff->polys[indx++] = indx2+2*(k+1)*n+i*(n-1);
- buff->polys[indx++] = indx2+2*fNz*n+2*k+i;
- buff->polys[indx++] = indx2+(2*k+3)*n+i*(n-1);
- }
- }
- buff->polys[indx-8] = indx2+n;
- buff->polys[indx-2] = indx2+2*n-1;
- }
- }
-
- //*-* Paint in the pad
-
- PaintShape(buff,rangeView);
-
- if (strstr(option, "x3d")) {
- if(buff && buff->points && buff->segs)
- FillX3DBuffer(buff);
- else {
- gSize3D.numPoints -= buff->numPoints;
- gSize3D.numSegs -= buff->numSegs;
- gSize3D.numPolys -= buff->numPolys;
- }
- }
-
- delete [] points;
- if (buff->segs) delete [] buff->segs;
- if (buff->polys) delete [] buff->polys;
- if (buff) delete buff;
-
- }
-
-//-------------------------------------------------------------------------
-
-void AliGPCone::MakeTableOfCoSin()
-{
- const Double_t PI = TMath::ATan(1) * 4.0;
- const Double_t ragrad = PI/180.0;
-
- Int_t j;
- Int_t n = GetNumberOfDivisions () + 1;
- if (fCoTab)
- delete [] fCoTab; // Delete the old tab if any
- fCoTab = new Double_t [n];
- if (!fCoTab ) return;
-
- if (fSiTab)
- delete [] fSiTab; // Delete the old tab if any
- fSiTab = new Double_t [n];
- if (!fSiTab ) return;
-
- Double_t range = Double_t(fDphi1 * ragrad);
- Double_t phi1 = Double_t(fPhi1 * ragrad);
- Double_t angstep = range/(n-1);
-
- Double_t ph = phi1;
- for (j = 0; j < n; j++)
- {
- ph = phi1 + j*angstep;
- fCoTab[j] = TMath::Cos(ph);
- fSiTab[j] = TMath::Sin(ph);
- }
-
-}
-
-//----------------------------------------------------
-
-void AliGPCone::SetNumberOfDivisions (Int_t p)
-{
- if (GetNumberOfDivisions () == p) return;
- fNdiv=p;
- MakeTableOfCoSin();
-}
-
-//-------------------------------------------------------
-
-void AliGPCone::DefineSection(Int_t secNum, Float_t z, Float_t rmin, Float_t rmax )
-{
-
-//*-*-*-*-*-*-*-*-*-*Defines section secNum of the polycone*-*-*-*-*-*-*-*-*-*-*
-//*-* ======================================
-//
-// - rmin radius of the inner circle in the cross-section
-//
-// - rmax radius of the outer circle in the cross-section
-//
-// - z z coordinate of the section
-
- if ((secNum < 0) || (secNum >= fNz)) return;
-
- fRmin[secNum] = rmin;
- fRmax[secNum] = rmax;
- fDz[secNum] = z;
-}
-
-//-------------------------------------------------------
-
-void AliGPCone::Streamer(TBuffer &R__b)
-{
- // Stream an object of class AliGPCone.
-
- if (R__b.IsReading()) {
- Version_t R__v = R__b.ReadVersion(); if (R__v) { }
- AliGShape::Streamer(R__b);
- R__b.ReadArray(fSiTab); //
- R__b.ReadArray(fCoTab); //
- R__b >> fPhi1;
- R__b >> fDphi1;
- R__b >> fNz;
- R__b.ReadArray(fRmin); //
- R__b.ReadArray(fRmax); //
- R__b.ReadArray(fDz); //
- R__b >> fNdiv;
- } else {
- R__b.WriteVersion(AliGPCone::IsA());
- AliGShape::Streamer(R__b);
- R__b.WriteArray(fSiTab, GetNumberOfDivisions()+1); //
- R__b.WriteArray(fCoTab, GetNumberOfDivisions()+1); //
- R__b << fPhi1;
- R__b << fDphi1;
- R__b << fNz;
- R__b.WriteArray(fRmin, fNz+1); //
- R__b.WriteArray(fRmax, fNz+1); //
- R__b.WriteArray(fDz, fNz+1); //
- R__b << fNdiv;
- }
-}
-
-//-------------------------------------------------------
-
-
+++ /dev/null
-#ifndef AliGPCone_H
-#define AliGPCone_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-#include "AliGTube.h"
-const Int_t kDiv = 20; //default number of divisions
-
-class AliGPCone: public AliGShape {
-
- private:
-
- Double_t* fSiTab; //Table of sin(fPhi1) .... sin(fPhil+fDphi1)
- Double_t* fCoTab; //Table of cos(fPhi1) .... cos(fPhil+fDphi1)
-
- protected:
-
- Float_t fPhi1; //lower phi limit
- Float_t fDphi1; //range in phi
- Int_t fNz; //number of z segments
- Float_t* fRmin; // pointer to array of inside radiuses
- Float_t* fRmax; // pointer to array of outside radiuses
- Float_t* fDz; // pointer to array of half lengths in z
- Int_t fNdiv; //number of divisions
-
- public:
- AliGPCone(); /* Default Constructor */
- AliGPCone( Text_t *name, Text_t* title, Float_t phi1, Float_t dphi1, Int_t nz);
- AliGPCone( AliGPCone* pcone );
- AliGPCone( Text_t *name, Text_t* title, Float_t phi1, Float_t dphi1,
- Int_t nz, Float_t Z[10], Float_t RMIN[10], Float_t RMAX[10]);
- AliGPCone( Text_t *name, Text_t* title, Float_t *upar, Int_t np);
- virtual ~AliGPCone(); /* Destructor */
-
- //Float_t GetRmin2() {return fRmin2;}
- //Float_t GetRmax2() {return fRmax2;}
- void DefineSection(Int_t secNum, Float_t z, Float_t rmin, Float_t rmax);
- virtual void Draw(Option_t *option);
- virtual void DrawShape(Option_t *option); // *MENU*
- virtual Int_t GetNumberOfDivisions () const {if (fNdiv) return fNdiv; else return kDiv;}
- void MakeTableOfCoSin();
- void Paint(Option_t *option);
- void SetNumberOfDivisions (Int_t p);
- virtual void SetPoints(Float_t *buff);
-
-
- ClassDef(AliGPCone,1) // Polycone class
-};
-#endif
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-*/
-
-// -*- C++ -*-
-//
-// 1998/10/22
-// ---------------------------------------------------------------------------
-//
-// AliGShape Class
-//
-// This file is part of the ALICE Geometry Database .
-//
-// Author: Joana E. Santo
-//
-// ---------------------------------------------------------------------------
-
-#include <TView.h>
-#include <TVirtualPad.h>
-#include <iostream.h>
-#include "AliGShape.h"
-#include "AliGNode.h"
-#include "AliGeometry.h"
-
-//---------------------------------------------------------------------------
-
-ClassImp(AliGShape)
-
-AliGShape::AliGShape()
-{
- /* Default Constructor */
- fName = "";
- fTitle = "";
-}
-
-//---------------------------------------------------------------------------
-
-AliGShape::AliGShape(Text_t* name, Text_t* title): TNamed(name, title), TAttLine(), TAttFill()
-{
- /* Constructor */
-}
-
-//---------------------------------------------------------------------------
-
-AliGShape::AliGShape( AliGShape* shape )
-{
- /* Copy Constructor */
- fColor = shape->fColor;
-}
-
-
-//---------------------------------------------------------------------------
-
-void AliGShape::Paint(Option_t *)
-{
- // This method must be overridden by the real shape implementation.
- // AbstractMethod("Paint");
-}
-
-// ---------------------------------------------------------------------------
-
-Int_t AliGShape::DistancetoPrimitive(Int_t, Int_t)
-{
- TView *view = gPad->GetView();
- gPad->SetSelected(view);
- return 0;
-}
-
-// ---------------------------------------------------------------------------
-
-void AliGShape::PaintShape(X3DBuffer *buff, Bool_t rangeView)
-{
-//*-*-*-*-*Paint 3-D shape in current pad with its current attributes*-*-*-*-*
-//*-* ==========================================================
-
- if (!buff) return;
-
- Float_t *point = &(buff->points[0]);
- for (Int_t j = 0; j < buff->numPoints; j++) {
- // printf("Before %f %f %f\n",point[3*j],point[3*j+1],point[3*j+2]);
- gAliGeometry->Local2Master(&point[3*j],&point[3*j]);
- // printf("After %f %f %f\n",point[3*j],point[3*j+1],point[3*j+2]);
- }
-
- Float_t points[6], x0, y0, z0, x1, y1, z1;
- const Int_t kExpandView = 2;
- int i0;
-
- x0 = y0 = z0 = x1 = y1 = z1 = buff->points[0];
-
- TAttLine::Modify(); //Change line attributes only if necessary
- TAttFill::Modify(); //Change fill area attributes only if necessary
-
- for (Int_t i = 0; i < buff->numSegs; i++) {
- i0 = 3*buff->segs[3*i+1];
- points[0] = buff->points[i0++];
- points[1] = buff->points[i0++];
- points[2] = buff->points[i0];
-
- i0 = 3*buff->segs[3*i+2];
- points[3] = buff->points[i0++];
- points[4] = buff->points[i0++];
- points[5] = buff->points[i0];
-
- x0 = points[0] < x0 ? points[0] : x0;
- y0 = points[1] < y0 ? points[1] : y0;
- z0 = points[2] < z0 ? points[2] : z0;
- x1 = points[0] > x1 ? points[0] : x1;
- y1 = points[1] > y1 ? points[1] : y1;
- z1 = points[2] > z1 ? points[2] : z1;
-
- Float_t *ptpoints_0 = &points[0];
- Float_t *ptpoints_3 = &points[3];
-
- //printf("Painting from %f to %f\n",*ptpoints_0, *ptpoints_3);
-
- gPad->PaintLine3D(ptpoints_0, ptpoints_3);
-// gPad->PaintLine3D(&points[0], &points[3]);
- }
-
- TView *view = gPad->GetView();
- //cout << "x0,y0,x1,y1=" << x0 << y0 << x1 << y1 << endl;
- if (view->GetAutoRange()) view->SetRange(-500,-500,-500,500,500,500,kExpandView);
-
- // if (view->GetAutoRange()) view->SetRange(-1,-1,-1,1,1,1,kExpandView);
-}
-
-
-
-// ---------------------------------------------------------------------------
-
-void AliGShape::SetPoints(Float_t *) {
- AbstractMethod("SetPoints(Float_t *buffer)");
-}
-
-// ---------------------------------------------------------------------------
-
-
+++ /dev/null
-#ifndef ALIGSHAPE_H
-#define ALIGSHAPE_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-/* -*- C++ -*- */
-/* */
-/* 1998/10/22 */
-/* -------------------------------------------------------------------------- */
-/* */
-/* AliGShape Class */
-/* */
-/* This file is part of the ALICE Geometry Database . */
-/* */
-/* Author: Joana E. Santo */
-/* */
-/* -------------------------------------------------------------------------- */
-/* The shape virtual class represents the basic elements used in this */
-/* geometry to build the constituents of a detector. Deriving from this */
-/* class there are simple shapes like box, sphere, cone and thorus, */
-/* supershapes that are obtained from the previous by Boolean operations */
-/* and also user defined shapes. */
-
-#ifndef ROOT_TNamed
-#include <TNamed.h>
-
-#endif
-
-//#ifndef ROOT_TMaterial
-//#include <TMaterial.h>
-//#endif
-
-#ifndef ROOT_TAttLine
-#include <TAttLine.h>
-#endif
-
-#ifndef ROOT_TAttFill
-#include <TAttFill.h>
-#endif
-
-#ifndef ROOT_X3DBuffer
-#include <X3DBuffer.h>
-#endif
-
-#ifndef ROOT_TPolyLine3D
-#include <TPolyLine3D.h>
-#endif
-
-#include "TVector.h"
-class AliGNode;
-extern "C" { void FillX3DBuffer (X3DBuffer *buff); }
-
-class AliGShape: public TNamed, public TAttLine, public TAttFill {
- protected:
- Int_t fColor;
-
- public:
- AliGShape(Text_t* name, Text_t* title);
- AliGShape();
- AliGShape( AliGShape* shape ); // Copy Constructor
- virtual ~AliGShape() {}
-
- Int_t DistancetoPrimitive(Int_t, Int_t);
- Int_t GetCol() { return fColor; }
- virtual Bool_t Is3D () {return kTRUE;}
- virtual void Paint(Option_t *option="");
- virtual void PaintGLPoints(Float_t *vertex);
- virtual void PaintShape(X3DBuffer *buff, Bool_t rangeView);
- void SetCol( Int_t color ) { fColor = color; }
- virtual void SetName(const Text_t *name);
- virtual void SetPoints(Float_t *buffer);
-
- ClassDef(AliGShape,1) //Generic shape class
-};
-
-R__EXTERN AliGNode* gNode;
-R__EXTERN TVector* gMatrix;
-R__EXTERN Size3D gSize3D;
-
-inline void AliGShape::PaintGLPoints(Float_t *) { }
-inline void AliGShape::SetName(const Text_t *) { }
-
-#endif
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-*/
-
- // -*- C++ -*-
-//
-// 1998/07/23
-// ---------------------------------------------------------------------------
-//
-// AliGSphere Class
-//
-// This file is part of the ALICE Geometry Database .
-//
-// Author: Joana E. Santo
-//
-// ---------------------------------------------------------------------------
-
-#include <TView.h>
-#include <TVirtualPad.h>
-#include <iostream.h>
-#include <TCanvas.h>
-#include <TGLKernelABC.h>
-#include "TROOT.h"
-#include "AliGSphere.h"
-
-
-ClassImp(AliGSphere)
-
-AliGSphere::AliGSphere()
-{
- /* Default Constructor */
- faX = 1.; // Coeff along Ox
- faY = 1.; // Coeff along Oy
- faZ = 1.; // Coeff along Oz
- fAspectRatio = 1.; // Relation between asumth and grid size (by default 1.0)
- fCoTab = NULL;// Table of cos(fPhimin) .... cos(Phi)
- fCoThetaTab = NULL;// Table of sin(gThemin) .... cos(Theta)
- fName = "";
- fNdiv = 0; // number of divisions
- fNz = 0; // number of sections
- fPhimax = 0.; // maximum phi
- fPhimin = 0.; // minimum phi
- fRmax = 0.; // maximum radius
- fRmin = 0.; // minimum radius
- fSiTab = NULL;// Table of sin(fPhimin) .... sin(Phi)
- fThemax = 0.; // maximum theta
- fThemin = 0.; // minimum theta
- fTitle = "";
-}
-
-// ---------------------------------------------------------------------------
-
-AliGSphere::AliGSphere(Text_t *name, Text_t *title, Float_t rmin, Float_t rmax, Float_t themin, Float_t themax, Float_t phimin, Float_t phimax) : AliGShape(name, title)
-{
- /* Constructor */
- faX = 1.; // Coeff along Ox
- faY = 1.; // Coeff along Oy
- faZ = 1.; // Coeff along Oz
- fAspectRatio = 1.; // Relation between asumth and grid size (by default 1.0)
- fCoTab = NULL; // Table of cos(fPhimin) .... cos(Phi)
- fCoThetaTab = NULL; // Table of sin(gThemin) .... cos(Theta)
- fNdiv = 0; // number of divisions
- fNz = 0; // number of sections
- fPhimax = phimax;// maximum phi
- fPhimin = phimin;// minimum phi
- fRmax = rmax; // maximum radius
- fRmin = rmin; // minimum radius
- fSiTab = NULL; // Table of sin(fPhimin) .... sin(Phi)
- fThemax = themax;// maximum theta
- fThemin = themin;// minimum theta
-
- SetNumberOfDivisions (20);
-}
-
-// ---------------------------------------------------------------------------
-
-AliGSphere::AliGSphere(AliGSphere *sphere)
-{
- /* Copy Constructor */
- faX = 1.; // Coeff along Ox
- faY = 1.; // Coeff along Oy
- faZ = 1.; // Coeff along Oz
- fAspectRatio = 1.; // Relation between asumth and grid size (by default 1.0)
- fColor = sphere->fColor;
- fCoTab = NULL; // Table of cos(fPhimin) .... cos(Phi)
- fCoThetaTab = NULL; // Table of sin(gThemin) .... cos(Theta)
- fNdiv = 0; // number of divisions
- fNz = 0; // number of sections
- fPhimax = sphere->fPhimax;// maximum phi
- fPhimin = sphere->fPhimin;// minimum phi
- fRmax = sphere->fRmax; // maximum radius
- fRmin = sphere->fRmin; // minimum radius
- fSiTab = NULL; // Table of sin(fPhimin) .... sin(Phi)
- fThemax = sphere->fThemax;// maximum theta
- fThemin = sphere->fThemin;// minimum theta
-
- SetNumberOfDivisions (20);
-}
-// ---------------------------------------------------------------------------
-
-AliGSphere::AliGSphere(Text_t *name, Text_t *title, Float_t rmax) : AliGShape(name, title)
-{
- /* Simplified Constructor */
- faX = 1.; // Coeff along Ox
- faY = 1.; // Coeff along Oy
- faZ = 1.; // Coeff along Oz
- fAspectRatio = 1.; // Relation between asumth and grid size (by default 1.0)
- fCoTab = NULL; // Table of cos(fPhimin) .... cos(Phi)
- fCoThetaTab = NULL; // Table of sin(gThemin) .... cos(Theta)
- fNdiv = 0; // number of divisions
- fNz = 0; // number of sections
- fPhimax = 360.; // maximum phi
- fPhimin = 0.; // minimum phi
- fRmax = rmax; // maximum radius
- fRmin = 0.; // minimum radius
- fSiTab = NULL; // Table of sin(fPhimin) .... sin(Phi)
- fThemax = 180.; // maximum theta
- fThemin = 0.; // minimum theta
-
- SetNumberOfDivisions (20);
-}
-
-// ---------------------------------------------------------------------------
-
-AliGSphere::~AliGSphere() {
- /* Destructor */
- delete [] fCoThetaTab; // Table of sin(gThemin) .... cos(Theta)
- delete [] fCoTab;
- delete [] fSiTab;
-}
-
-// ---------------------------------------------------------------------------
-
-void AliGSphere::DrawShape(Option_t *option)
-{
- Draw(option);
- gPad->Update();
-}
-
-//-------------------------------------------------------------------------
-
-//void AliGSphere::Draw()
-void AliGSphere::Draw(Option_t *option)
-{
- TString opt = option;
- opt.ToLower();
-
- if( !gPad ) {
- gPad = new TCanvas("AliGSphere","AliGSphere",0,0,400,300);
- gPad->Range(0,0,1,1);
- gPad->SetFillColor(32); // Light Green
- gPad->SetBorderSize(3);
- gPad->SetBorderMode(0); // -1 (down) 0 (no) 1 (up)
- }
- else {
- if( !opt.Contains("same") ) {
- gPad->Clear();
- gPad->SetName("AliGSphere");
- gPad->SetTitle("AliGSphere");
- }
- else {
- gPad->SetName("AliShapes");
- gPad->SetTitle("AliShapes");
- }
- }
-
- AppendPad(option);
- TView *view = gPad->GetView();
-
- if (!view)
- view = new TView(1);
-
- view->SetAutoRange(kTRUE);
- Paint(option);
- view->SetAutoRange(kFALSE);
-}
-
-// ---------------------------------------------------------------------------
-
-void AliGSphere::Paint(Option_t *option)
-{
-//*-*-*-*-*-*-*-*Paint this 3-D shape with its current attributes*-*-*-*-*-*-*-*
-//*-* ================================================
-
- SetLineColor( GetCol() );
-
- Int_t i, j;
- const Int_t n = GetNumberOfDivisions()+1;
- Int_t nz = fNz+1;
- Int_t numpoints = 2*n*nz;
- if (nz < 2) return;
-
- if (numpoints <= 0) return;
- //*-* Allocate memory for points *-*
-
- Float_t *points = new Float_t[3*numpoints];
- if (!points) return;
- SetPoints(points);
-
- if (gPad->GetView3D()) PaintGLPoints(points);
-
- //== for (i = 0; i < numpoints; i++)
- //== gNode->Local2Master(&points[3*i],&points[3*i]);
-
- Bool_t specialCase = kFALSE;
-
- if (TMath::Abs(TMath::Sin(2*(fPhimax - fPhimin))) <= 0.01) //mark this as a very special case, when
- specialCase = kTRUE; //we have to draw this PCON like a TUBE
-
- X3DBuffer *buff = new X3DBuffer;
- if (buff) {
- buff->numPoints = numpoints;
- buff->numSegs = 4*(nz*n-1+(specialCase == kTRUE));
- buff->numPolys = 2*(nz*n-1+(specialCase == kTRUE));
- }
-
-//*-* Allocate memory for points *-*
-
- buff->points = points;
-
- Int_t c = ((GetLineColor() % 8) - 1) * 4; // Basic colors: 0, 1, ... 7
- if (c < 0) c = 0;
-
-//*-* Allocate memory for segments *-*
-
- Int_t indx, indx2, k;
- indx = indx2 = 0;
-
- buff->segs = new Int_t[buff->numSegs*3];
- if (buff->segs) {
-
- //inside & outside spheres, number of segments: 2*nz*(n-1)
- // special case number of segments: 2*nz*n
- for (i = 0; i < nz*2; i++) {
- indx2 = i*n;
- for (j = 1; j < n; j++) {
- buff->segs[indx++] = c;
- buff->segs[indx++] = indx2+j-1;
- buff->segs[indx++] = indx2+j;
- }
- if (specialCase) {
- buff->segs[indx++] = c;
- buff->segs[indx++] = indx2+j-1;
- buff->segs[indx++] = indx2;
- }
- }
-
- //bottom & top lines, number of segments: 2*n
- for (i = 0; i < 2; i++) {
- indx2 = i*(nz-1)*2*n;
- for (j = 0; j < n; j++) {
- buff->segs[indx++] = c;
- buff->segs[indx++] = indx2+j;
- buff->segs[indx++] = indx2+n+j;
- }
- }
-
- //inside & outside spheres, number of segments: 2*(nz-1)*n
- for (i = 0; i < (nz-1); i++) {
-
- //inside sphere
- indx2 = i*n*2;
- for (j = 0; j < n; j++) {
- buff->segs[indx++] = c+2;
- buff->segs[indx++] = indx2+j;
- buff->segs[indx++] = indx2+n*2+j;
- }
- //outside sphere
- indx2 = i*n*2+n;
- for (j = 0; j < n; j++) {
- buff->segs[indx++] = c+3;
- buff->segs[indx++] = indx2+j;
- buff->segs[indx++] = indx2+n*2+j;
- }
- }
-
- //left & right sections, number of segments: 2*(nz-2)
- // special case number of segments: 0
- /*if (!specialCase) {
- for (i = 1; i < (nz-1); i++) {
- for (j = 0; j < 2; j++) {
- buff->segs[indx++] = c;
- buff->segs[indx++] = 2*i * n + j*(n-1);
- buff->segs[indx++] = (2*i+1) * n + j*(n-1);
- }
- }
- }*/
- }
-
-
- Int_t m = n - 1 + (specialCase == kTRUE);
-
-//*-* Allocate memory for polygons *-*
-
- indx = 0;
-
- buff->polys = new Int_t[buff->numPolys*6];
-
- if (buff->polys) {
- //bottom & top, number of polygons: 2*(n-1)
- // special case number of polygons: 2*n
- for (i = 0; i < 2; i++) {
- for (j = 0; j < n-1; j++) {
- buff->polys[indx++] = c+3;
- buff->polys[indx++] = 4;
- buff->polys[indx++] = 2*nz*m+i*n+j;
- buff->polys[indx++] = i*(nz*2-2)*m+m+j;
- buff->polys[indx++] = 2*nz*m+i*n+j+1;
- buff->polys[indx++] = i*(nz*2-2)*m+j;
- }
- if (specialCase) {
- buff->polys[indx++] = c+3;
- buff->polys[indx++] = 4;
- buff->polys[indx++] = 2*nz*m+i*n+j;
- buff->polys[indx++] = i*(nz*2-2)*m+m+j;
- buff->polys[indx++] = 2*nz*m+i*n;
- buff->polys[indx++] = i*(nz*2-2)*m+j;
- }
- }
-
-
- //inside & outside, number of polygons: (nz-1)*2*(n-1)
- for (k = 0; k < (nz-1); k++) {
- for (i = 0; i < 2; i++) {
- for (j = 0; j < n-1; j++) {
- buff->polys[indx++] = c+i;
- buff->polys[indx++] = 4;
- buff->polys[indx++] = (2*k+i*1)*m+j;
- buff->polys[indx++] = nz*2*m+(2*k+i*1+2)*n+j;
- buff->polys[indx++] = (2*k+i*1+2)*m+j;
- buff->polys[indx++] = nz*2*m+(2*k+i*1+2)*n+j+1;
- }
- if (specialCase) {
- buff->polys[indx++] = c+i;
- buff->polys[indx++] = 4;
- buff->polys[indx++] = (2*k+i*1)*m+j;
- buff->polys[indx++] = nz*2*m+(2*k+i*1+2)*n+j;
- buff->polys[indx++] = (2*k+i*1+2)*m+j;
- buff->polys[indx++] = nz*2*m+(2*k+i*1+2)*n;
- }
- }
- }
-
- //left & right sections, number of polygons: 2*(nz-1)
- // special case number of polygons: 0
- /*if (!specialCase) {
- indx2 = nz*2*(n-1);
- for (k = 0; k < (nz-1); k++) {
- for (i = 0; i < 2; i++) {
- buff->polys[indx++] = c+2;
- buff->polys[indx++] = 4;
- buff->polys[indx++] = k==0 ? indx2+i*(n-1) : indx2+2*nz*n+2*(k-1)+i;
- buff->polys[indx++] = indx2+2*(k+1)*n+i*(n-1);
- buff->polys[indx++] = indx2+2*nz*n+2*k+i;
- buff->polys[indx++] = indx2+(2*k+3)*n+i*(n-1);
- }
- }
- buff->polys[indx-8] = indx2+n;
- buff->polys[indx-2] = indx2+2*n-1;
- }*/
- }
-
- //*-* Paint in the pad
- //*-* Paint in the pad
- Bool_t rangeView = strcmp(option,"range")==0 ? kTRUE : kFALSE;
- PaintShape(buff,rangeView);
- //PaintShape(buff);
-
- if (strstr(option, "x3d")) {
- if(buff && buff->points && buff->segs)
- FillX3DBuffer(buff);
- else {
- gSize3D.numPoints -= buff->numPoints;
- gSize3D.numSegs -= buff->numSegs;
- gSize3D.numPolys -= buff->numPolys;
- }
- }
-
- delete [] points;
- if (buff->segs) delete [] buff->segs;
- if (buff->polys) delete [] buff->polys;
- if (buff) delete buff;
-
-
-
-}
-
-// ---------------------------------------------------------------------------
-
-void AliGSphere::SetEllipse(Float_t *factors)
-{
- if (factors[0] > 0) faX = factors[0];
- if (factors[1] > 0) faY = factors[1];
- if (factors[2] > 0) faZ = factors[2];
- MakeTableOfCoSin();
-}
-
-// ---------------------------------------------------------------------------
-
-void AliGSphere::SetNumberOfDivisions (Int_t p)
-{
- if (GetNumberOfDivisions () == p)
- return;
- fNdiv = p;
- fNz = Int_t(fAspectRatio*fNdiv*(fThemax - fThemin )/(fPhimax - fPhimin )) + 1;
- MakeTableOfCoSin();
-}
-
-// ---------------------------------------------------------------------------
-
-void AliGSphere::SetPoints(Float_t *buff)
-{
-//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Create SPHE points*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
-//*-* ==================
- Int_t i, j;
- Int_t indx = 0;
-
- if (buff) {
- Int_t n = GetNumberOfDivisions()+1;
-
-//*-* We've to check whether the table does exist and create it
-//*-* since fCoTab/fSiTab are not saved with any TShape::Streamer function
- if (!fCoTab) MakeTableOfCoSin();
-
- Float_t z;
- for (i = 0; i < fNz+1; i++)
- {
- z = fRmin * fCoThetaTab[i]; // fSinPhiTab[i];
- Float_t sithet = TMath::Sqrt(TMath::Abs(1-fCoThetaTab[i]*fCoThetaTab[i]));
- Float_t zi = fRmin*sithet;
- for (j = 0; j < n; j++)
- {
- buff[indx++] = zi * fCoTab[j];
- buff[indx++] = zi * fSiTab[j];
- buff[indx++] = z;
- }
- z = fRmax * fCoThetaTab[i];
- zi = fRmax*sithet;
- for (j = 0; j < n; j++)
- {
- buff[indx++] = zi * fCoTab[j];
- buff[indx++] = zi * fSiTab[j];
- buff[indx++] = z;
- }
- }
- }
-}
-
-// ---------------------------------------------------------------------------
-
-void AliGSphere::MakeTableOfCoSin()
-{
- const Double_t PI = TMath::ATan(1) * 4.0;
- const Double_t ragrad = PI/180.0;
-
- Float_t dphi = fPhimax - fPhimin;
- while (dphi > 360) dphi -= 360;
-
- Float_t dtet = fThemax - fThemin;
- while (dtet > 180) dtet -= 180;
-
- Int_t j;
- Int_t n = GetNumberOfDivisions () + 1;
- if (fCoTab)
- delete [] fCoTab; // Delete the old tab if any
- fCoTab = new Double_t [n];
- if (!fCoTab ) return;
-
- if (fSiTab)
- delete [] fSiTab; // Delete the old tab if any
- fSiTab = new Double_t [n];
- if (!fSiTab ) return;
-
- Double_t range = Double_t(dphi * ragrad);
- Double_t phi1 = Double_t(fPhimin * ragrad);
- Double_t angstep = range/(n-1);
-
- Double_t ph = phi1;
- for (j = 0; j < n; j++)
- {
- ph = phi1 + j*angstep;
- fCoTab[j] = TMath::Cos(ph);
- fSiTab[j] = TMath::Sin(ph);
- }
-
- n = fNz + 1;
-
- if (fCoThetaTab)
- delete [] fCoThetaTab; // Delete the old tab if any
- fCoThetaTab = new Double_t [n];
- if (!fCoThetaTab ) return;
-
- range = Double_t(dtet * ragrad);
- phi1 = Double_t(fThemin * ragrad);
- angstep = range/(n-1);
-
- ph = phi1;
- for (j = 0; j < n; j++)
- {
- fCoThetaTab[n-j-1] = TMath::Cos(ph);
- ph += angstep;
- }
-
-}
-
-// ---------------------------------------------------------------------------
-
-void AliGSphere::PaintGLPoints(Float_t *vertex)
-{
- gGLKernel->PaintCone(vertex,-(GetNumberOfDivisions()+1),fNz+1);
-}
-
-// ---------------------------------------------------------------------------
-
-void AliGSphere::Sizeof3D() const
-{
-//*-*-*-*-*-*-*Return total X3D size of this shape with its attributes*-*-*-*-*-*
-//*-* =======================================================
-
- cout << " Entra en AliGSphere::Sizeof3D() " << endl;
-
- Int_t n;
-
- n = GetNumberOfDivisions()+1;
- Int_t nz = fNz+1;
-
- //cout << " n = " << n << " y nz = " << nz << endl;
-
- Bool_t specialCase = kFALSE;
-
- if (TMath::Abs(TMath::Sin(2*(fPhimax - fPhimin))) <= 0.01) //mark this as a very special case, when
- specialCase = kTRUE; //we have to draw this PCON like a TUBE
-
- gSize3D.numPoints += 2*n*nz;
- gSize3D.numSegs += 4*(nz*n-1+(specialCase == kTRUE));
- gSize3D.numPolys += 2*(nz*n-1+(specialCase == kTRUE));
-}
-
-// ---------------------------------------------------------------------------
-
-void AliGSphere::Streamer(TBuffer &R__b)
-{
- // Stream an object of class AliGSphere.
-
- if (R__b.IsReading()) {
- Version_t R__v = R__b.ReadVersion(); if (R__v) { }
- AliGShape::Streamer(R__b);
- R__b >> fAspectRatio;
- R__b.ReadArray(fCoTab); //
- R__b.ReadArray(fCoThetaTab); //
- R__b >> fNdiv;
- R__b >> fNz;
- R__b.ReadArray(fSiTab); //
- R__b >> faX;
- R__b >> faY;
- R__b >> faZ;
- R__b >> fPhimax;
- R__b >> fPhimin;
- R__b >> fRmax;
- R__b >> fRmin;
- R__b >> fThemax;
- R__b >> fThemin;
- } else {
- R__b.WriteVersion(AliGSphere::IsA());
- AliGShape::Streamer(R__b);
- R__b << fAspectRatio;
- R__b.WriteArray(fCoTab, GetNumberOfDivisions()+1); //
- R__b.WriteArray(fCoThetaTab, fNz+1); //
- R__b << fNdiv;
- R__b << fNz;
- R__b.WriteArray(fSiTab, GetNumberOfDivisions()+1); //
- R__b << faX;
- R__b << faY;
- R__b << faZ;
- R__b << fPhimax;
- R__b << fPhimin;
- R__b << fRmax;
- R__b << fRmin;
- R__b << fThemax;
- R__b << fThemin;
- }
-}
-
-// ---------------------------------------------------------------------------
-
+++ /dev/null
-#ifndef ALIGSPHERE_H
-#define ALIGSPHERE_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-#include "AliGShape.h"
-
-class AliGSphere: public AliGShape {
-
- private:
- Float_t fAspectRatio; // Relation between asumth and grid size (by default 1.0)
- Double_t* fCoTab; // Table of cos(fPhimin) .... cos(Phi)
- Double_t* fCoThetaTab; // Table of sin(gThemin) .... cos(Theta)
- Int_t fNdiv; // number of divisions
- Int_t fNz; // number of sections
- Double_t* fSiTab; // Table of sin(fPhimin) .... sin(Phi)
-
- protected:
- Float_t faX; // Coeff along Ox
- Float_t faY; // Coeff along Oy
- Float_t faZ; // Coeff along Oz
- Float_t fPhimax; // maximum phi
- Float_t fPhimin; // minimum phi
- Float_t fRmax; // maximum radius
- Float_t fRmin; // minimum radius
- Float_t fThemax; // maximum theta
- Float_t fThemin; // minimum theta
-
- virtual void MakeTableOfCoSin(); // Create the table of the fSiTab; fCoTab
- virtual void PaintGLPoints(Float_t *vertex);
-
- public:
- AliGSphere();
- AliGSphere(Text_t *name, Text_t *title, Float_t rmin, Float_t rmax, Float_t themin, Float_t themax, Float_t phimin, Float_t phimax);
- AliGSphere(Text_t *name, Text_t *title, Float_t rmax);
- AliGSphere(AliGSphere *sphere);
- virtual ~AliGSphere(); // Destructor
-
- virtual void Draw(Option_t *option);
- virtual void DrawShape(Option_t *option); // *MENU*
- virtual Int_t GetNumberOfDivisions () const {if (fNdiv) return fNdiv; else return 0; /*kDiv;*/}
- virtual void Paint(Option_t *option);
- virtual void SetEllipse(Float_t *factors);
- virtual void SetNumberOfDivisions (Int_t p);
- virtual void SetPoints(Float_t *buff);
- void Sizeof3D() const;
-
- ClassDef(AliGSphere,1) //Simple sphere class
-};
-#endif
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-*/
-
-// -*- C++ -*-
-//
-// 1998/10/22
-// ---------------------------------------------------------------------------
-//
-// AliGSuperShape Class
-//
-// This file is part of the ALICE Geometry Database .
-//
-// Author: Joana E. Santo
-//
-
-#include "AliGSuperShape.h"
-#include <TString.h>
-
-ClassImp(AliGSuperShape)
-
-//----------------------------------------------------------------------
-
-AliGSuperShape::AliGSuperShape()
-{
- /* Default Constructor */
- fExpression = "";
- fName = "";
- fShapes = NULL;
- fTitle = "";
- fTransf = NULL;
-}
-
-//----------------------------------------------------------------------
-
-AliGSuperShape::AliGSuperShape( Text_t* name, Text_t* title, AliGShape* shapes, AliGTransform* trans, Text_t* expression ):AliGShape(name,title)
-{
- /* Constructor */
- fExpression = expression;
- fShapes = new TObjArray();
- fTransf = new TObjArray();
-}
-
-//----------------------------------------------------------------------
-
-AliGSuperShape::~AliGSuperShape(){
- /* Destructor */
- if(fShapes) delete fShapes;
- if(fTransf) delete fTransf;
-}
-
-//----------------------------------------------------------------------
-
-void AliGSuperShape::Add( AliGShape *shape )
-{
-
-}
-
-//----------------------------------------------------------------------
-
-void AliGSuperShape::Add( AliGTransform *trans )
-{
-
-}
-
-//----------------------------------------------------------------------
-
-void AliGSuperShape::Add( Text_t *expression )
-{
-
-}
-
-//----------------------------------------------------------------------
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+++ /dev/null
-#ifndef ALIGSUPERSHAPE_H
-#define ALIGSUPERSHAPE_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-
-#include <TObjArray.h>
-#include <TNamed.h>
-#include "AliGShape.h"
-#include "AliGTransform.h"
-
-class AliGSuperShape : public AliGShape {
- protected:
- TString fExpression;
- TObjArray* fShapes;
- TObjArray* fTransf;
-
- public:
- AliGSuperShape(); /* Default Constructor */
- AliGSuperShape( Text_t* name, Text_t* title, AliGShape* shapes=NULL, AliGTransform* trans=NULL, Text_t* expression=NULL); /* Constructor */
- virtual ~AliGSuperShape(); /* Destructor */
-
- void Add( AliGShape* shape );
- void Add( AliGTransform* trans );
- void Add( Text_t* expression );
-
- ClassDef(AliGSuperShape,1) //SuperShape class
-};
-#endif
-
-
-
-
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-*/
-
-// -*- C++ -*-
-//
-// 1998/10/19
-// ---------------------------------------------------------------------------
-//
-// AliGTRD1 Class
-//
-// This file is part of the ALICE Geometry Database .
-//
-// Author: Joana E. Santo & company...
-//
-// ---------------------------------------------------------------------------
-
-#include <TView.h>
-#include <TCanvas.h>
-#include <TVirtualPad.h>
-#include <iostream.h>
-#include <TGLKernelABC.h>
-#include "AliGTRD1.h"
-#include <TROOT.h>
-
-ClassImp(AliGTRD1)
-
-//-------------------------------------------------------------------------
-
-AliGTRD1::AliGTRD1(Text_t *name, Text_t *title, Float_t dx1, Float_t dx2, Float_t dy, Float_t dz) : AliGShape(name, title)
-{
-//*-*-*-*-*-*-*-*-*-*-*-*-*AliGTRD1 shape normal constructor*-*-*-*-*-*-*-*-*-*-*-*-*
-//*-* =============================
-
- fDx2 = dx2;
- fDx1 = dx1;
- fDy = dy;
- fDz = dz;
-}
-
-//-------------------------------------------------------------------------
-
-AliGTRD1::AliGTRD1()
-{
- /* Default Constructor */
-
- fDx2 = 0;
- fName = "";
- fTitle = "";
-}
-
-//-------------------------------------------------------------------------
-
-AliGTRD1::AliGTRD1( AliGTRD1* trd1 )
-{
- /* Copy Constructor */
- fColor = trd1->fColor;
- fDx1 = trd1->fDx1;
- fDx2 = trd1->fDx2;
- fDy = trd1->fDy;
- fDz = trd1->fDz;
- fName = trd1->fName;
- fTitle = trd1->fTitle;
-}
-
-//----------------------------------------------------------------------------
-
-void AliGTRD1::SetPoints(Float_t *buff)
-{
-//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Create AliGTRD1 points*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
-//*-* ==================
-
- Float_t dx1, dx2, dy, dz;
-
- dx1 = fDx1;
- dx2 = fDx2;
- dy = fDy;
- dz = fDz;
-
- if (buff) {
- buff[ 0] = -dx1; buff[ 1] = -dy; buff[ 2] = -dz;
- buff[ 3] = dx1; buff[ 4] = -dy; buff[ 5] = -dz;
- buff[ 6] = dx1; buff[ 7] = dy; buff[ 8] = -dz;
- buff[ 9] = -dx1; buff[10] = dy; buff[11] = -dz;
- buff[12] = -dx2; buff[13] = -dy; buff[14] = dz;
- buff[15] = dx2; buff[16] = -dy; buff[17] = dz;
- buff[18] = dx2; buff[19] = dy; buff[20] = dz;
- buff[21] = -dx2; buff[22] = dy; buff[23] = dz;
- }
-}
-
-//-------------------------------------------------------------------------
-
-void AliGTRD1::Paint(Option_t *option)
-{
- SetLineColor( GetCol() );
-
- const Int_t numpoints = 8;
-
- //*-* Allocate memory for points *-*
-
- Float_t *points = new Float_t[3*numpoints];
- if (!points) return;
-
- SetPoints(points);
-
- if (gPad->GetView3D()) PaintGLPoints(points);
-
- //== for (Int_t i = 0; i < numpoints; i++)
- // gNode->Local2Master(&points[3*i],&points[3*i]);
-
- Int_t c = ((GetLineColor() % 8) - 1) * 4; // Basic colors: 0, 1, ... 7
- if (c < 0) c = 0;
-
- //*-* Allocate memory for segments *-*
-
- X3DBuffer *buff = new X3DBuffer;
- if (buff) {
- buff->numPoints = 8;
- buff->numSegs = 12;
- buff->numPolys = 6;
- }
-
-//*-* Allocate memory for points *-*
-
- buff->points = points;
- buff->segs = new Int_t[buff->numSegs*3];
-
- if (buff->segs) {
- buff->segs[ 0] = c; buff->segs[ 1] = 0; buff->segs[ 2] = 1;
- buff->segs[ 3] = c+1; buff->segs[ 4] = 1; buff->segs[ 5] = 2;
- buff->segs[ 6] = c+1; buff->segs[ 7] = 2; buff->segs[ 8] = 3;
- buff->segs[ 9] = c; buff->segs[10] = 3; buff->segs[11] = 0;
- buff->segs[12] = c+2; buff->segs[13] = 4; buff->segs[14] = 5;
- buff->segs[15] = c+2; buff->segs[16] = 5; buff->segs[17] = 6;
- buff->segs[18] = c+3; buff->segs[19] = 6; buff->segs[20] = 7;
- buff->segs[21] = c+3; buff->segs[22] = 7; buff->segs[23] = 4;
- buff->segs[24] = c; buff->segs[25] = 0; buff->segs[26] = 4;
- buff->segs[27] = c+2; buff->segs[28] = 1; buff->segs[29] = 5;
- buff->segs[30] = c+1; buff->segs[31] = 2; buff->segs[32] = 6;
- buff->segs[33] = c+3; buff->segs[34] = 3; buff->segs[35] = 7;
- }
-
-//*-* Allocate memory for polygons *-*
-
- buff->polys = new Int_t[buff->numPolys*6];
-
- if (buff->polys) {
- buff->polys[ 0] = c; buff->polys[ 1] = 4; buff->polys[ 2] = 0;
- buff->polys[ 3] = 9; buff->polys[ 4] = 4; buff->polys[ 5] = 8;
- buff->polys[ 6] = c+1; buff->polys[ 7] = 4; buff->polys[ 8] = 1;
- buff->polys[ 9] = 10; buff->polys[10] = 5; buff->polys[11] = 9;
- buff->polys[12] = c; buff->polys[13] = 4; buff->polys[14] = 2;
- buff->polys[15] = 11; buff->polys[16] = 6; buff->polys[17] = 10;
- buff->polys[18] = c+1; buff->polys[19] = 4; buff->polys[20] = 3;
- buff->polys[21] = 8; buff->polys[22] = 7; buff->polys[23] = 11;
- buff->polys[24] = c+2; buff->polys[25] = 4; buff->polys[26] = 0;
- buff->polys[27] = 3; buff->polys[28] = 2; buff->polys[29] = 1;
- buff->polys[30] = c+3; buff->polys[31] = 4; buff->polys[32] = 4;
- buff->polys[33] = 5; buff->polys[34] = 6; buff->polys[35] = 7;
- }
-
- //*-* Paint in the pad
- Bool_t rangeView = strcmp(option,"range")==0 ? kTRUE : kFALSE;
- PaintShape(buff,rangeView);
-
- if (strstr(option, "x3d")) {
- if(buff && buff->points && buff->segs)
- FillX3DBuffer(buff);
- else {
- gSize3D.numPoints -= buff->numPoints;
- gSize3D.numSegs -= buff->numSegs;
- gSize3D.numPolys -= buff->numPolys;
- }
- }
-
- delete [] points;
- if (buff->segs) delete [] buff->segs;
- if (buff->polys) delete [] buff->polys;
- if (buff) delete buff;
-}
-
+++ /dev/null
-#ifndef AliGTRD1_H
-#define AliGTRD1_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-
-/* -*- C++ -*-
-//
-// 1998/10/19
-// ---------------------------------------------------------------------------
-//
-// AliGTRD1 Class
-//
-// This file is part of the ALICE Geometry Database .
-//
-// Author: Joana E. Santo
-//
-// ---------------------------------------------------------------------------
-//AliGTRD1 is a subclass of AliGShape. Its dimensions are:
-// - Dx half-length of the bosx along X-axis
-// - Dy hlf-length of the box along Y-axis
-// - Dz half-length of the box along Z-axis */
-
-
-#include "AliGShape.h"
-
-class AliGTRD1: public AliGShape {
-
- protected:
- Float_t fDx2; //half length in x at the high z surface
- Float_t fDx1;
- Float_t fDy;
- Float_t fDz;
-
- public:
- AliGTRD1( Text_t* name,Text_t* title, Float_t dx1,Float_t dx2, Float_t dy, Float_t dz ); /* Constructor */
- AliGTRD1( ); /* Default Constructor */
- AliGTRD1( AliGTRD1* trd1 );
- virtual ~AliGTRD1() {} /* Destructor */
-
- Float_t GetDx1() {return fDx1;}
- Float_t GetDx2() {return fDx2;}
- Float_t GetDy() {return fDy;}
- Float_t GetDz() {return fDz;}
- void Paint(Option_t *option);
- void SetDx1(Float_t dx1) {fDx1 = dx1;}
- void SetDx2(Float_t dx2) {fDx2 = dx2;}
- void SetDy(Float_t dy) {fDy = dy;}
- void SetDz(Float_t dz) {fDz = dz;}
- void SetPoints( Float_t* buff );
-
- ClassDef(AliGTRD1,1) // Simple trapezoid class
-};
-
-#endif
-
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-*/
-
-/**********************************************/
-/* */
-/* FILE: AliGTransform.cxx */
-/* PURPOSE: To define the relative positions */
-/* of AliGNodes. */
-/* LANGUAGE: C++ */
-/* COMPILER: CC for HP-UX 9.x and 10. */
-/* AUTHOR: Joana && David */
-/* DATE: May 28, 1999 */
-/* ADDRESS: jesanto@cern.ch, dcollado@cern.ch */
-/* */
-/**********************************************/
-
-
-#include <TMath.h>
-#include <TVector.h>
-#include <iostream.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include "AliGTransform.h"
-
-ClassImp(AliGTransform)
-
-//----------------------------------------------------------------------
-
-AliGTransform::AliGTransform()
-{
- /* Default Constructor */
- fExpression = "";
- fMatrix = NULL;
- fName = "";
- fTitle = "";
- fX = 0.;
- fY = 0.;
- fZ = 0.;
- fTheta = 0.;
- fPsi = 0.;
- fPhi = 0.;
-
-}
-
-//----------------------------------------------------------------------
-
-//----------------------------------------------------------------------
-
-AliGTransform::AliGTransform(AliGTransform *tra)
-{
- /* Copy Constructor */
-
- fMatrix = tra->fMatrix;
- fName = tra->fName;
- fTitle = tra->fTitle;
-
-
- }
-
-//----------------------------------------------------------------------}
-
-AliGTransform::AliGTransform(Text_t* name, Text_t* title) : TNamed(name,title)
-{
- /* Constructor */
- fExpression = "";
- //float matrix[16] = {1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.}
- fMatrix = new TVector(0,15,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1., "END");
- fX = 0.;
- fY = 0.;
- fZ = 0.;
- fTheta = 0.;
- fPsi = 0.;
- fPhi = 0.;
-}
-
-//----------------------------------------------------------------------
-
-AliGTransform::AliGTransform(Text_t* name, Text_t* title, Text_t *expression): TNamed(name, title)
-{
- /* Constructor */
- fExpression = expression;
-
- //float matrix[16] = {1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.};
- //fMatrix = new TArrayF(16,matrix);
- fMatrix = new TVector(0,15,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.,
- "END");
- CheckExpression();
- BuildMatrix(fX,fY,fZ,fTheta,fPsi,fPhi);
-
-}
-
-//----------------------------------------------------------------------
-
-AliGTransform::AliGTransform(Text_t* name,Text_t* title, Text_t *axis, Float_t angle) : TNamed(name, title)
-{
- /* Constructor */
- fX=fY=fZ=0.;
-
-
- if (!strcmp(axis,"X")) {
-
- fTheta = 90;
- fPsi = angle;
- fPhi = -90;
- }
- if (!strcmp(axis,"Y")) {
-
- fTheta = 0.;
- fPsi = angle;
- fPhi = 0.;
- }
- if (!strcmp(axis,"Z")) {
-
- fTheta = 0.;
- fPsi = 0.;
- fPhi = angle;
- }
-
- //cout << "fTheta" << fTheta << endl;
- //cout << "fPsi" << fPsi << endl;
- //cout << "fPhi" << fPhi << endl;
-
-
- BuildMatrix(fX,fY,fZ,fTheta,fPsi,fPhi);
-
-
-}
-
-//----------------------------------------------------------------------
-
-AliGTransform::AliGTransform( Text_t* name, Text_t* title, Float_t theta1,Float_t phi1,
- Float_t theta2,
- Float_t phi2,
- Float_t theta3,Float_t phi3
- ) : TNamed(name,title)
-{
- const Double_t degrad = 0.0174532925199432958;
- float a1=0.,a2=0.,a3=0.,b1=0.,b2=0.,b3=0.,c1=0.,c2=0.,c3=0.;
- fX = 0;
- fY = 0;
- fZ = 0;
-
- a1 = TMath::Sin(theta1*degrad)*TMath::Cos(phi1*degrad);
- a2 = TMath::Sin(theta1*degrad)*TMath::Sin(phi1*degrad);
- a3 = TMath::Cos(theta1*degrad);
- b1 = TMath::Sin(theta2*degrad)*TMath::Cos(phi2*degrad);
- b2 = TMath::Sin(theta2*degrad)*TMath::Sin(phi2*degrad);
- b3 = TMath::Cos(theta2*degrad);
- c1 = TMath::Sin(theta3*degrad)*TMath::Cos(phi3*degrad);
- c2 = TMath::Sin(theta3*degrad)*TMath::Sin(phi3*degrad);
- c3 = TMath::Cos(theta3*degrad);
-
- // fMatrix = new TVector(0,15,a1,a2,a3,0.,b1,b2,b3,0.,c1,c2,c3,0.,0.,0.,0.,1., "END");
- fMatrix = new TVector(0,15,a1,b1,c1,0.,a2,b2,c2,0.,a3,b3,c3,0.,0.,0.,0.,1., "END");
-}
-//----------------------------------------------------------------------
-AliGTransform::AliGTransform( Text_t* name, Text_t* title, Float_t a1,Float_t a2,Float_t a3,Float_t b1,Float_t b2,
- Float_t b3,Float_t c1,Float_t c2,Float_t c3,Float_t Dx,Float_t
- Dy,Float_t Dz) : TNamed(name,title)
-{
-
-
-fMatrix = new TVector(0,15,a1,a2,a3,Dx,b1,b2,b3,Dy,c1,c2,c3,Dz,0.,0.,0.,1., "END");
-
-}
-
-//----------------------------------------------------------------------
-
-AliGTransform::~AliGTransform() {
- /* Destructor */
- if(fMatrix) delete fMatrix;
-}
-
-//----------------------------------------------------------------------
-
-void AliGTransform::CheckExpression()
-/*Extracts the transformation arguments from the expression given in the
-constructor*/
-
-{
- TString* string = new TString(fExpression);
- string->ToUpper();
- float Dx, Dy, Dz,theta, psi,phi;
-
-
- if (strstr(*string, "+")) {
- sscanf( *string, "TRA %f %f %f + ROT %f %f %f ", &Dx, &Dy, &Dz, &theta, &psi, &phi );
-
- if( sscanf(*string, "TRA %f %f %f", &Dx, &Dy, &Dz ) == EOF )
- printf( "Error! Must introduce 3 distances\n" );
-
- if( sscanf(*string, "ROT %f %f %f", &theta, &psi, &phi ) == EOF )
- printf( "Error! Must introduce 3 angles\n" );
- fX = Dx;
- fY = Dy;
- fZ = Dz;
- fTheta = theta;
- fPsi = psi;
- fPhi = phi;
-
- } else {
-
- if( strstr(*string,"TRA") ) {
- sscanf( *string, "TRA %f %f %f", &Dx, &Dy, &Dz );
-
- if( sscanf(*string, "TRA %f %f %f", &Dx, &Dy, &Dz ) == EOF )
- printf( "Error! Must introduce 3 distances\n" );
-
- fX = Dx;
- fY = Dy;
- fZ = Dz;
-
- } else {
-
- if( strstr(*string,"ROT") ) {
- sscanf( *string, "ROT %f %f %f", &theta, &psi, &phi );
-
- if( sscanf(*string, "ROT %f %f %f", &theta, &psi, &phi ) == EOF )
- printf( "Error! Must introduce 3 angles\n" );
-
- fTheta = theta;
- fPsi = psi;
- fPhi = phi;
-
- }
- }
- }
-
-
-}
-
-//----------------------------------------------------------------------
-
-void AliGTransform::BuildMatrix(Float_t Dx=0., Float_t Dy=0., Float_t Dz=0., Float_t
-theta=0., Float_t psi=0.,Float_t phi=0. )
-{
-/* Builds the 4X4 matrix of a transformation */
-
-
- float a1=0.,a2=0.,a3=0.,b1=0.,b2=0.,b3=0.,c1=0.,c2=0.,c3=0.;
-
- const Double_t degrad = 0.0174532925199432958;
-
- a1 =
- TMath::Cos(phi*degrad)*TMath::Cos(psi*degrad)*TMath::Cos(theta*degrad) -
- TMath::Sin(phi*degrad)*TMath::Sin(theta*degrad);
- a2 =
- TMath::Cos(phi*degrad)*TMath::Cos(psi*degrad)*TMath::Sin(theta*degrad) +
- TMath::Sin(phi*degrad)*TMath::Cos(theta*degrad);
- a3 = - TMath::Cos(phi*degrad)*TMath::Sin(psi*degrad);
- b1 = - TMath::Sin(phi*degrad)*TMath::Cos(psi*degrad)*TMath::Cos(theta*degrad) -
- TMath::Cos(phi*degrad)*TMath::Sin(theta*degrad);
- b2 = - TMath::Sin(phi*degrad)*TMath::Cos(psi*degrad)*TMath::Sin(theta*degrad) +
- TMath::Cos(phi*degrad)*TMath::Cos(theta*degrad);
- b3 = TMath::Sin(phi*degrad)*TMath::Sin(psi*degrad);
- c1 = TMath::Sin(psi*degrad)*TMath::Cos(theta*degrad);
- c2 = TMath::Sin(psi*degrad)*TMath::Sin(theta*degrad);
- c3 = TMath::Cos(psi*degrad);
-
- /*
- a1 =
- TMath::Cos(psi*degrad)*TMath::Cos(phi*degrad);
- a2 =
- TMath::Cos(psi*degrad)*TMath::Sin(phi*degrad);
- a3 = - TMath::Sin(psi*degrad);
- b1 = TMath::Sin(theta*degrad)*TMath::Sin(psi*degrad)*TMath::Cos(phi*degrad) -
- TMath::Cos(theta*degrad)*TMath::Sin(phi*degrad);
- b2 = TMath::Sin(theta*degrad)*TMath::Sin(psi*degrad)*TMath::Sin(phi*degrad) +
- TMath::Cos(theta*degrad)*TMath::Cos(phi*degrad);
- b3 = TMath::Sin(theta*degrad)*TMath::Cos(psi*degrad);
- c1 =
- TMath::Cos(theta*degrad)*TMath::Sin(psi*degrad)*TMath::Cos(phi*degrad) +
- TMath::Sin(theta*degrad)*TMath::Sin(phi*degrad);
- c2 =
- TMath::Cos(theta*degrad)*TMath::Sin(psi*degrad)*TMath::Sin(phi*degrad) -
- TMath::Sin(theta*degrad)*TMath::Cos(phi*degrad);
- c3 = TMath::Cos(theta*degrad)*TMath::Sin(psi*degrad);
- */
- fMatrix = new TVector(0,15,a1,a2,a3,Dx,b1,b2,b3,Dy,c1,c2,c3,Dz,0.,0.,0.,1., "END");
-
-}
-
-//----------------------------------------------------------------------
-
-/*
-
-void AliGTransform::CheckExpression( Text_t* expression )
-{
- char axis;
- float theta, phi, psi,Dx, Dy, Dz;
-
- TString* string = new TString( expression );
- string->ToUpper();
-
- if( strstr(*string,"ROT") ) {
- sscanf( *string, "ROT%c", &axis );
-
- switch (axis) {
- case 'A':
- sscanf( *string, "ROTA%f %f %f", &phi, &psi, &theta );
- if( (!psi) || (!theta) || (!phi) )
- printf("Error! Must introduce 3 angles\n");
- break;
-
- case 'X':
- sscanf( *string, "ROTX%f", &theta );
- if( !theta )
- printf("Error! Must introduce 1 angle\n");
- break;
-
- case 'Y':
- sscanf( *string, "ROTY%f", &theta);
- if( !theta )
- printf("Error! Must introduce 1 angle\n");
- break;
-
- case 'Z':
- sscanf( *string, "ROTZ%f", &theta );
- if( !theta )
- printf("Error! Must introduce 1 angle\n");
- break;
-
- default:
- printf("Unrecognised rotation around axis %c\n",axis);
- }
- }
- else {
- if( strstr(*string, "TRA") ) {
- sscanf( *string, "TRA %f %f %f", &Dx, &Dy, &Dz );
- if( sscanf(*string, "TRA %f %f %f", &Dx, &Dy, &Dz) == EOF )
- printf("Error! Must introduce 3 distances\n");
- printf( "%f%f%f\n", Dx, Dy, Dz );
- }
- else
- printf( "ERROR!\n" );
- }
-
- delete string;
-}
-
-*/
+++ /dev/null
-#ifndef ALIGTRANSFORM_H
-#define ALIGTRANSFORM_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-
-/* -*- C++ -*- */
-/* */
-/* 1999/01/13 */
-/* --------------------------------------------------------------------------- */
-/* */
-/* AliGTransform Class */
-/* */
-/* This file is part of the ALICE Geometry Database . */
-/* */
-/* Author: Joana E. Santo */
-/* */
-/* --------------------------------------------------------------------------- */
-/* This class represents the transformations applied to regions to position them*/
-/* in the node structure. */
-
-
-#include <TNamed.h>
-#include <TVector.h>
-#include <TSystem.h>
-#include <TString.h>
-
-class AliGTransform: public TNamed {
-
- private:
- TString fExpression;
- TVector* fMatrix;
- Float_t fX;
- Float_t fY;
- Float_t fZ;
- Float_t fTheta;
- Float_t fPsi;
- Float_t fPhi;
-
- public:
- AliGTransform(); /* Default Constructor */
- AliGTransform(AliGTransform *tra);
- AliGTransform( Text_t* name, Text_t* title );
- AliGTransform( Text_t* name, Text_t* title, Text_t *expression );
- AliGTransform( Text_t* name, Text_t* title, Text_t *axis, Float_t angle);
- AliGTransform( Text_t* name, Text_t* title, Float_t theta1,Float_t phi1,
- Float_t theta2,
- Float_t phi2,
- Float_t theta3,Float_t
-phi3);
-
- AliGTransform( Text_t* name, Text_t* title, Float_t a1,Float_t a2,Float_t a3,Float_t b1,Float_t b2,
- Float_t b3,Float_t c1,Float_t c2,Float_t c3,Float_t Dx,Float_t Dy,Float_t Dz);
- virtual ~AliGTransform(); /* Destructor */
-
- void BuildMatrix(Float_t Dx=0., Float_t Dy=0., Float_t Dz=0., Float_t
-theta=0., Float_t psi=0.,Float_t phi=0. );
- void CheckExpression();
- TVector* GetMatrix() {return fMatrix;}
-
- ClassDef(AliGTransform,1) //Transformation class (Rotation and Translation)
-};
-#endif
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-*/
-
-// -*- C++ -*-
-//
-// 1998/10/19
-// ---------------------------------------------------------------------------
-//
-// AliTube Class
-//
-// This file is part of the ALICE Geometry Database .
-//
-// By: Joana E. Santo & David Collados
-//
-// ---------------------------------------------------------------------------
-
-#include <TVirtualPad.h>
-#include <TView.h>
-#include <TCanvas.h>
-#include <iostream.h>
-#include <TGLKernelABC.h>
-#include "TROOT.h"
-#include "AliGTube.h"
-#include "AliGShape.h"
-
-ClassImp(AliGTube)
-
-AliGTube::AliGTube()
-{
- /* Default Constructor */
- fCoTab = NULL; // Table of cos(fPhi1) .... cos(fPhil+fDphi1)
- fAspectRatio = 1; // defines (the ellipse semi-axis in Y)/(the ellipse semi-axis in X)
- fDz = 0.; // half length in z
- fName = "";
- fNdiv = 0; // number of segments (precision)
- fRmax = 0.; // ellipse semi-axis in X outside
- fRmin = 0.; // ellipse semi-axis in X inside
- fSiTab = NULL; // Table of sin(fPhi1) .... sin(fPhil+fDphi1)
- fTitle = "";
-}
-
-//-------------------------------------------------------------------------
-
-AliGTube::AliGTube( Text_t *name, Text_t *title, Float_t rmin, Float_t rmax, Float_t dz, Float_t aspect ) : AliGShape(name, title)
-{
- /* Constructor */
- fCoTab = NULL; // Table of cos(fPhi1) .... cos(fPhil+fDphi1)
- fAspectRatio = aspect; // defines (the ellipse semi-axis in Y)/(the ellipse semi-axis in X)
- fDz = dz; // half length in z
- fNdiv = 0; // number of segments (precision)
- fRmax = rmax; // ellipse semi-axis in X outside
- fRmin = rmin; // ellipse semi-axis in X inside
- fSiTab = NULL; // Table of sin(fPhi1) .... sin(fPhil+fDphi1)
-
- MakeTableOfCoSin();
-}
-
-
-//-------------------------------------------------------------------------
-
-AliGTube::AliGTube( AliGTube *tube )
-{
- /* Copy Constructor */
- fCoTab = NULL; // Table of cos(fPhi1) .... cos(fPhil+fDphi1)
- fAspectRatio = tube->fAspectRatio; // defines (the ellipse semi-axis in Y)/(the ellipse semi-axis in X)
- fDz = tube->fDz; // half length in z
- fColor = tube->fColor;
- fName = tube->fName;
- fNdiv = 0; // number of segments (precision)
- fRmax = tube->fRmax; // ellipse semi-axis in X outside
- fRmin = tube->fRmin; // ellipse semi-axis in X inside
- fSiTab = NULL; // Table of sin(fPhi1) .... sin(fPhil+fDphi1)
- fTitle = tube->fTitle;
-
- MakeTableOfCoSin();
-}
-
-//-------------------------------------------------------------------------
-
-AliGTube::AliGTube(Text_t *name, Text_t *title, Float_t rmax, Float_t dz) : AliGShape(name, title)
-{
- /* Tube simplified constructor */
- fCoTab = NULL; // Table of cos(fPhi1) .... cos(fPhil+fDphi1)
- fAspectRatio = 1; // defines (the ellipse semi-axis in Y)/(the ellipse semi-axis in X)
- fDz = dz; // half length in z
- fNdiv = 0; // number of segments (precision)
- fRmax = rmax; // ellipse semi-axis in X outside
- fRmin = 0.; // ellipse semi-axis in X inside
- fSiTab = NULL; // Table of sin(fPhi1) .... sin(fPhil+fDphi1)
-
- MakeTableOfCoSin();
-}
-
-//-------------------------------------------------------------------------
-
-AliGTube::~AliGTube()
-{
- /* Destructor */
- delete [] fCoTab;
- delete [] fSiTab;
-}
-
-//-------------------------------------------------------------------------
-
-void AliGTube::MakeTableOfCoSin()
-{
- const Double_t PI = TMath::ATan(1) * 4.0;
- const Double_t TWOPI = 2*PI;
-
- Int_t j;
- Int_t n = GetNumberOfDivisions ();
-
- if (fCoTab)
- delete [] fCoTab; // Delete the old tab if any
- fCoTab = new Double_t [n];
-
- if (!fCoTab ) {
- Error("MakeTableOfCoSin()","No cos table done");
- return;
- }
-
- if (fSiTab)
- delete [] fSiTab; // Delete the old tab if any
- fSiTab = new Double_t [n];
-
- if (!fSiTab )
- {
- Error("MakeTableOfCoSin()","No sin table done");
- return;
- }
-
- Double_t range = TWOPI;
- Double_t angstep = range/n;
-
- Double_t ph = 0;
- for (j = 0; j < n; j++)
- {
- ph = j*angstep;
- fCoTab[j] = TMath::Cos(ph);
- fSiTab[j] = TMath::Sin(ph);
- }
-
-}
-
-//-------------------------------------------------------------------------
-
-void AliGTube::DrawShape(Option_t *option)
-{
- Draw(option);
- gPad->Update();
-}
-
-//-------------------------------------------------------------------------
-
-void AliGTube::Draw(Option_t *option)
-{
- //cout << " Entra en " << this->GetName() << "::Draw " << endl;
- TString opt = option;
- opt.ToLower();
-
- if( !gPad ) {
- gPad = new TCanvas("AliGTube","AliGTube",0,0,400,300);
- gPad->Range(0,0,1,1);
- gPad->SetFillColor(32); // Light Green
- gPad->SetBorderSize(3);
- gPad->SetBorderMode(0); // -1 (down) 0 (no) 1 (up)
- }
- else {
- if( !opt.Contains("same") ) {
- gPad->Clear();
- gPad->SetName("AliGTube");
- gPad->SetTitle("AliGTube");
- }
- else {
- gPad->SetName("AliShapes");
- gPad->SetTitle("AliShapes");
- }
- }
-
- AppendPad(option);
- TView *view = gPad->GetView();
-
- if (!view)
- view = new TView(1);
-
- view->SetAutoRange(kTRUE);
- Paint(option);
- view->SetAutoRange(kFALSE);
-
- cout << " Sale de " << this->GetName() << "::Draw " << endl;
-}
-
-//-------------------------------------------------------------------------
-
-void AliGTube::Paint(Option_t *option)
-{
-//*-*-*-*-*-*-*-*Paint this 3-D shape with its current attributes*-*-*-*-*-*-*-*
-//*-* ================================================
-
- SetLineColor( GetCol() );
-
- Int_t i, j;
- Int_t n = GetNumberOfDivisions();
- const Int_t numpoints = 4*n;
-
-//*-* Allocate memory for points *-*
-
- Float_t *points = new Float_t[3*numpoints];
- if (!points) return;
-
- SetPoints(points);
-
- if (gPad->GetView3D()) PaintGLPoints(points);
-
-//== for (i = 0; i < numpoints; i++)
-//== gNode->Local2Master(&points[3*i],&points[3*i]);
-
- X3DBuffer *buff = new X3DBuffer;
- if (buff) {
- buff->numPoints = numpoints;
- buff->numSegs = n*8;
- buff->numPolys = n*4;
- }
-
-
-//*-* Allocate memory for points *-*
-
- buff->points = points;
-
- Int_t c = ((GetLineColor() % 8) - 1) * 4; // Basic colors: 0, 1, ... 7
- if (c < 0) c = 0;
-
-//*-* Allocate memory for segments *-*
-
- buff->segs = new Int_t[buff->numSegs*3];
- if (buff->segs) {
- for (i = 0; i < 4; i++) {
- for (j = 0; j < n; j++) {
- buff->segs[(i*n+j)*3 ] = c;
- buff->segs[(i*n+j)*3+1] = i*n+j;
- buff->segs[(i*n+j)*3+2] = i*n+j+1;
- }
- buff->segs[(i*n+j-1)*3+2] = i*n;
- }
- for (i = 4; i < 6; i++) {
- for (j = 0; j < n; j++) {
- buff->segs[(i*n+j)*3 ] = c+1;
- buff->segs[(i*n+j)*3+1] = (i-4)*n+j;
- buff->segs[(i*n+j)*3+2] = (i-2)*n+j;
- }
- }
- for (i = 6; i < 8; i++) {
- for (j = 0; j < n; j++) {
- buff->segs[(i*n+j)*3 ] = c;
- buff->segs[(i*n+j)*3+1] = 2*(i-6)*n+j;
- buff->segs[(i*n+j)*3+2] = (2*(i-6)+1)*n+j;
- }
- }
- }
-
-//*-* Allocate memory for polygons *-*
-
- Int_t indx = 0;
-
- buff->polys = new Int_t[buff->numPolys*6];
- if (buff->polys) {
- for (i = 0; i < 2; i++) {
- for (j = 0; j < n; j++) {
- indx = 6*(i*n+j);
- buff->polys[indx ] = c;
- buff->polys[indx+1] = 4;
- buff->polys[indx+2] = i*n+j;
- buff->polys[indx+3] = (4+i)*n+j;
- buff->polys[indx+4] = (2+i)*n+j;
- buff->polys[indx+5] = (4+i)*n+j+1;
- }
- buff->polys[indx+5] = (4+i)*n;
- }
- for (i = 2; i < 4; i++) {
- for (j = 0; j < n; j++) {
- indx = 6*(i*n+j);
- buff->polys[indx ] = c+(i-2)*2+1;
- buff->polys[indx+1] = 4;
- buff->polys[indx+2] = (i-2)*2*n+j;
- buff->polys[indx+3] = (4+i)*n+j;
- buff->polys[indx+4] = ((i-2)*2+1)*n+j;
- buff->polys[indx+5] = (4+i)*n+j+1;
- }
- buff->polys[indx+5] = (4+i)*n;
- }
- }
-
- //*-* Paint in the pad
- //*-* Paint in the pad
- Bool_t rangeView = strcmp(option,"range")==0 ? kTRUE : kFALSE;
-
- PaintShape(buff,rangeView);
- //PaintShape(buff);
-
- if (strstr(option, "x3d")) {
- if(buff && buff->points && buff->segs)
- FillX3DBuffer(buff);
- else {
- gSize3D.numPoints -= buff->numPoints;
- gSize3D.numSegs -= buff->numSegs;
- gSize3D.numPolys -= buff->numPolys;
- }
- }
-
- if( points ) delete [] points;
-
- //if (buff->points) delete [] buff->points;
-
- if (buff->segs) delete [] buff->segs;
-
- if (buff->polys) delete [] buff->polys;
-
- if (buff) delete buff;
-
-}
-
-//-------------------------------------------------------------------------
-
-void AliGTube::PaintGLPoints(Float_t *vertex)
-{
-//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Paint BRIK via OpenGL *-*-*-*-*-*-*-*-*-*-*-*-*
-//*-* =====================
- gGLKernel->PaintCone(vertex,GetNumberOfDivisions(),2);
-}
-
-//-------------------------------------------------------------------------
-
-void AliGTube::SetPoints(Float_t *buff)
-{
-//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Create TUBE points*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
-//*-* ==================
-
- Float_t dz;
- Int_t j, n;
-
- n = GetNumberOfDivisions();
-
- dz = fDz;
-
- Int_t indx = 0;
-
- if (buff) {
-//*-* We've to checxk whether the table does exist and create it
-//*-* since fCoTab/fSiTab are not saved with any TShape::Streamer function
- if (!fCoTab) MakeTableOfCoSin();
-
- for (j = 0; j < n; j++) {
- buff[indx+6*n] = buff[indx] = fRmin * fCoTab[j];
- indx++;
- buff[indx+6*n] = buff[indx] = fAspectRatio*fRmin * fSiTab[j];
- indx++;
- buff[indx+6*n] = dz;
- buff[indx] =-dz;
- indx++;
- }
- for (j = 0; j < n; j++) {
- buff[indx+6*n] = buff[indx] = fRmax * fCoTab[j];
- indx++;
- buff[indx+6*n] = buff[indx] = fAspectRatio*fRmax * fSiTab[j];
- indx++;
- buff[indx+6*n]= dz;
- buff[indx] =-dz;
- indx++;
- }
- }
-}
-
-//-------------------------------------------------------------------------
-
-void AliGTube::Sizeof3D() const
-{
-//*-*-*-*-*-*Return total X3D size of this shape with its attributes*-*-*-*-*-*-*
-//*-* =======================================================
-
- cout << " Entra en AliGTube::Sizeof3D() " << endl;
-
- Int_t n = GetNumberOfDivisions();
-
- gSize3D.numPoints += n*4;
- gSize3D.numSegs += n*8;
- gSize3D.numPolys += n*4;
-}
-
-//-------------------------------------------------------------------------
-
-void AliGTube::Streamer(TBuffer &R__b)
-{
- // Stream an object of class AliGTube.
-
- if (R__b.IsReading()) {
- Version_t R__v = R__b.ReadVersion(); if (R__v) { }
- AliGShape::Streamer(R__b);
- R__b.ReadArray(fCoTab); //
- R__b >> fAspectRatio;
- R__b >> fDz;
- R__b >> fNdiv;
- R__b >> fRmax;
- R__b >> fRmin;
- R__b.ReadArray(fSiTab); //
- } else {
- R__b.WriteVersion(AliGTube::IsA());
- AliGShape::Streamer(R__b);
- R__b.WriteArray(fCoTab, GetNumberOfDivisions()); //
- R__b << fAspectRatio;
- R__b << fDz;
- R__b << fNdiv;
- R__b << fRmax;
- R__b << fRmin;
- R__b.WriteArray(fSiTab, GetNumberOfDivisions()); //
- }
-}
-
-//-------------------------------------------------------------------------
-
+++ /dev/null
-#ifndef ALIGTUBE_H
-#define ALIGTUBE_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-
-#include "AliGShape.h"
-
-const Int_t kDivNum = 20; //default number of divisions
-
-class AliGTube: public AliGShape {
-
- protected:
- Double_t* fCoTab; // Table of cos(fPhi1) .... cos(fPhil+fDphi1)
- Float_t fAspectRatio; // defines (the ellipse semi-axis in Y)/(the ellipse semi-axis in X)
- Float_t fDz; // half length in z
- Int_t fNdiv; // number of segments (precision)
- Float_t fRmax; // ellipse semi-axis in X outside
- Float_t fRmin; // ellipse semi-axis in X inside
- Double_t* fSiTab; // Table of sin(fPhi1) .... sin(fPhil+fDphi1)
-
- virtual void MakeTableOfCoSin(); // Create the table of the fSiTab; fCoTab
-
- public:
- AliGTube(); /* Default Constructor */
- AliGTube( Text_t *name, Text_t *title, Float_t rmin, Float_t rmax, Float_t dz, Float_t aspect=1); /* Constructor*/
- AliGTube( Text_t *name, Text_t *title, Float_t rmax, Float_t dz); /* Constructor */
- AliGTube( AliGTube *tube );
- ~AliGTube(); /* Destructor */
-
- void Draw(Option_t *option);
- void DrawShape(Option_t *option); // *MENU*
- Float_t GetAspectRatio(){return fAspectRatio;}
- Float_t GetDz() {return fDz;}
- Int_t GetNdiv() {return fNdiv;}
- Int_t GetNumberOfDivisions () const {if (fNdiv) return fNdiv; else return kDivNum;}
- Float_t GetRmax() {return fRmax;}
- Float_t GetRmin() {return fRmin;}
- void Paint(Option_t *option);
- void PaintGLPoints(Float_t *vertex);
- void SetDz(Float_t dz) {fDz= dz;}
- void SetPoints(Float_t *buff);
- void SetRmin(Float_t rmin) {fRmin= rmin;}
- void SetRmax(Float_t rmax) {fRmax= rmax;}
- void Sizeof3D() const;
-
- ClassDef(AliGTube,1) // Simple cone class
-};
-
-#endif
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Author: The ALICE Off-line Project. *
- * Contributors are mentioned in the code where appropriate. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/*
-$Log$
-*/
-
-/**********************************************/
-/* */
-/* FILE: AliGeometry.cxx */
-/* PURPOSE: To store and retrieve a complete */
-/* geometry in/from a root file. */
-/* LANGUAGE: C++ */
-/* COMPILER: CC for HP-UX 9.x and 10. */
-/* AUTHOR: Joana && David */
-/* DATE: May 28, 1999 */
-/* ADDRESS: jesanto@cern.ch, dcollado@cern.ch */
-/* */
-/**********************************************/
-
-#include <iostream.h>
-#include <TFile.h>
-#include <TROOT.h>
-#include "AliGConfig.h"
-#include "AliGeometry.h"
-#include "AliGBox.h"
-#include "AliGSphere.h"
-#include "AliGCone.h"
-#include "AliGTube.h"
-#include "AliGTransform.h"
-
-#define FormLeng 80
-
-//float matrix[16] = {1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.};
-//TArrayF* gMatrix = new TArrayF( 16, matrix );
-TVector *gMatrix = new TVector(0,15,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1., "END");
-AliGeometry *gAliGeometry = 0;
-
-ClassImp(AliGeometry)
-
-
-// ---------------------------------------------------------------------------
-
-AliGeometry::AliGeometry( AliGeometry* Geom )
-{
- if( Geom ) {
- /* Copy Constructor */
- fBomb = Geom->fBomb; //Bomb factor for exploded geometry
- fGeomLevel = Geom->fGeomLevel;
- fMaxDepth = Geom->fMaxDepth;
- fName = Geom->fName;
-
- fRules = new TList();
- if( Geom->fRules ) {
- for( int i=0; i<Geom->fRules->GetSize(); i++ )
- fRules->AddLast(Geom->fRules->At(i));
- }
-
- fTitle = Geom->fTitle;
- fTopNode = Geom->fTopNode;
-
- gAliGeometry = this;
- fTransformation = new TList();
- if( Geom->fTransformation ) {
- for( int i=0; i<Geom->fTransformation->GetSize(); i++ )
- fTransformation->AddLast(Geom->fTransformation->At(i));
- }
- }
- else {
- /* Default constructor */
- fBomb = 1.; //Bomb factor for exploded geometry
- fGeomLevel = 0;
- fMaxDepth = 0; // 0 = No Depth limitation
- fName = "";
- fRules = new TList(); // Antes estaba a NULL
- fTitle = "";
- fTopNode = "";
- fTransformation = new TList(); // Antes estaba a NULL
- gAliGeometry = this;
- }
-}
-
-// ---------------------------------------------------------------------------
-
-AliGeometry::~AliGeometry()
-{
- /* Destructor */
-
- if( fRules ) {
- fRules->Delete();
- fRules = NULL;
- }
-
- if( fTransformation ) {
- fTransformation->Delete();
- fTransformation = NULL;
- }
-}
-
-// ---------------------------------------------------------------------------
-
-AliGeometry* AliGeometry::operator=( const AliGeometry* Geom )
-{
- /* Operator = */
- if( this == Geom ) return this; // special case.
-
- fBomb = Geom->fBomb; //Bomb factor for exploded geometry
- fGeomLevel = Geom->fGeomLevel;
- fMaxDepth = Geom->fMaxDepth;
- fName = Geom->fName;
- gAliGeometry = this;
-
- if( fRules )
- fRules->Delete();
-
- if( Geom->fRules ) {
- for( int i=0; i<Geom->fRules->GetSize(); i++ )
- fRules->AddLast(Geom->fRules->At(i));
- }
-
- fTitle = Geom->fTitle;
- fTopNode = Geom->fTopNode;
-
- if( fTransformation )
- fTransformation->Delete();
-
- fTransformation = new TList();
-
- if( Geom->fTransformation ) {
- for( int i=0; i<Geom->fTransformation->GetSize(); i++ )
- fTransformation->AddLast(Geom->fTransformation->At(i));
- }
-
- return this;
-}
-
-// ---------------------------------------------------------------------------
-
-AliGNode* AliGeometry::FileToMemTree( TFile* file )
-{
- // Geometry constructor that retrieves a whole geometry from the root file
- // and stores it in memory as a tree structure
-
- // Read the name of my geometry's first node
- file->cd();
- const char* node_name = (const char*) GetTop().Data();
-
- // Call recursion
- AliGNode* new_node = new AliGNode( RecurToMem( node_name, file, NULL, NULL ) );
-
- return new_node;
-}
-
-// ---------------------------------------------------------------------------
-
-AliGNode* AliGeometry::RecurToMem( const char* node_name, TFile* file, AliGNode* father, char *subtransf )
-{
- // Recursive function used to retrieve the root_file structure into memory
-
- const int LenName = strlen(node_name);
-
- int i;
- for( i=0; i<LenName; i++ )
- if( node_name[i] == '_' )
- break;
-
- char* name = new char[i+1];
- strncpy( name, node_name, i );
- name[i] = '\x0';
-
- char* ids = new char[LenName-i];
- for( int g1=0, g2=i+1; g2<LenName; g1++, g2++ )
- ids[g1] = node_name[g2];
-
- ids[LenName-i-1] = '\x0';
-
- const int id = atoi( ids );
- if( ids )
- delete [] ids;
-
- AliGNode* node = NULL;
-
- int new_node = 1;
-
- if (father) {
- AliGTransform* trans = NULL;
-
- int l;
- for( l=0; father->GetNodeFromfNode(l); l++ ) {
- // check if the node has been already added
- if ( !strcmp( node_name, (father->GetNodeFromfNode(l))->GetName()) ) {
- new_node = 0;
- break;
- }
- else
- node = new AliGNode( (Text_t*)name, id, (Text_t*)name, (AliGBox*) NULL );
- }
-
- int new_trans = 1;
- int m;
- for( m=0; father->GetTransFromfTrans(m); m++ ) {
- // check if this tranformations has already been used with this father
- if (!strcmp(subtransf,(father->GetTransFromfTrans(m))->GetName())) {
- new_trans=0;
- break;
- }
- else {
- trans = new AliGTransform();
- file->cd(father->GetPath());
- trans->Read(subtransf);
- }
- }
-
- if ( l == 0 ) node = new AliGNode( (Text_t*)name, id, (Text_t*)name, (AliGBox*) NULL );
- if ( m == 0 ) {
- trans = new AliGTransform();
- trans->Read(subtransf);
- }
-
- if (new_node) {
- if(!new_trans) {
- father->Add(node,father->GetTransFromfTrans(m));
- file->cd(node->GetPath());
- }
- else {
- father->Add(node,trans);
- file->cd(node->GetPath());
- }
- }
- else {
- if(!new_trans) {
- father->Add(father->GetNodeFromfNode(l),father->GetTransFromfTrans(m));
- file->cd(father->GetPath());
- }
- else {
- father->Add(father->GetNodeFromfNode(l),trans);
- file->cd(father->GetPath());
- }
- }
-
- //if( trans ) delete trans;
- }
- else { // There is no father
- node = new AliGNode( (Text_t*)name, id, (Text_t*)name, (AliGBox*) NULL );
- file->cd(node->GetPath());
- }
-
- if( name )
- delete [] name;
-
- if( new_node ) {
- // Read the configuration name
- char* configs = NULL;
-
- if( fRules ) {
- for( int k=0; k<fRules->GetSize(); k++ ) {
- char* rule = new char[strlen((char*)fRules->At(k)->GetName())];
- strcpy( rule, (char*)fRules->At(k)->GetName() );
-
- int w;
- for( w=0; w<strlen(rule); w++ )
- if( rule[w] == '/' )
- break;
-
- configs = new char[w+1];
- strncpy( configs, rule, w );
- configs[w] = '\x0';
-
- if( !strcmp(node->GetName(), configs) ) {
- delete [] rule;
- break;
- }
- else {
- delete [] configs;
- configs = NULL;
- }
-
- delete [] rule;
- }
- }
- else {
- printf( " ERROR: I couldn't find the fRule inside RecurToMem.\n" );
- return NULL;
- }
-
- // Build Configuration
- AliGConfig* Config = new AliGConfig();
-
- Config->Read(configs);
- node->AddConf(Config);
-
- // Read Shape, material and formula from configuration
- const Text_t* shapetype = Config->GetShapeType().Data();
- const Text_t* shapename = Config->GetShapeName().Data();
-
- // Build Shape
-
- if( !strcmp(shapetype,"AliGBox") ) {
- AliGBox* shape = new AliGBox();
- shape->Read(shapename);
- node->AddShape(shape);
- }
- else {
- if (!strcmp(shapetype,"AliGSphere")) {
- AliGSphere* shape = new AliGSphere();
- shape->Read(shapename);
- node->AddShape(shape);
- }
- else {
- if (!strcmp(shapetype,"AliGTube")) {
- AliGTube* shape = new AliGTube();
- shape->Read(shapename);
- node->AddShape(shape);
- }
- else {
- if (!strcmp(shapetype,"AliGCone")) {
- AliGCone* shape = new AliGCone();
- shape->Read(shapename);
- node->AddShape(shape);
- }
- else {
- if (!strcmp(shapetype,"AliGPCone")) {
- AliGPCone* shape = new AliGPCone();
- shape->Read(shapename);
- node->AddShape(shape);
- }
- else {
- if (!strcmp(shapetype,"AliGTRD1")) {
- AliGTRD1* shape = new AliGTRD1();
- shape->Read(shapename);
- node->AddShape(shape);
- }
- }
- }
- }
- }
- }
-
- // Build Material
- const Text_t* materialname = Config->GetMaterialName().Data();
- AliGMaterial *material = new AliGMaterial();
- material->Read(materialname);
- node->AddMaterial(material);
-
- // Read formula
- const char* formula = Config->GetFormula();
-
- int Len = strlen(formula);
- int j = 0;
-
- while( formula[j] ) {
- char* subnode = new char[Len];
- char* subtransf = new char[Len];
- int k;
-
- for( k=0; formula[j] != ':'; k++, j++ )
- subnode[k] = formula[j];
-
- subnode[k] = '\x0';
- if( formula[j] ) j++;
-
- for( k=0; formula[j] && formula[j] != '+'; k++, j++ )
- subtransf[k] = formula[j];
-
- subtransf[k] = '\x0';
- if( formula[j] ) j++;
-
- AliGNode* node1 = this->RecurToMem( subnode, file, node, subtransf );
- }
- }
-
- return node;
-}
-
-// ---------------------------------------------------------------------------
-
-AliGeometry::AliGeometry( Text_t* name, Text_t* title, AliGNode* topNode, int maxDepth ): TNamed(name, title)
-{
- /* Geometry constructor that stores in the root file the geometry file that corresponds to one geometry */
-
- gAliGeometry = this;
- fBomb = 1.; //Bomb factor for exploded geometry
- fGeomLevel = 0;
- fMaxDepth = maxDepth;
- fRules = new TList();
- fTopNode = topNode->GetName();
- fTransformation = new TList();
-
- RulesList( fRules, topNode, 0 );
-
-}
-
-// ---------------------------------------------------------------------------
-
-void AliGeometry::RulesList( TList *fRules, AliGNode* node, int position )
-{
- /* Recursive function used to create the list of rules for the Geometry file */
-
- int len = strlen(node->GetName()) + strlen(node->GetConfig()->GetName());
-
- char* path = new char[len+2];
- strcpy( path, node->GetName() );
- strcat( path, "/" );
- strcat( path, node->GetConfig()->GetName());
- TNamed* rule = new TNamed( path, "" );
- delete [] path;
-
- fRules->AddLast( rule );
- //cout << " Rule: " << rule->GetName() << " added." << endl;
- //if( rule ) delete rule;
-
- while( (position < node->SizefNode()) && (node->GetNodeFromfNode(position) != NULL) ) {
- this->RulesList( fRules, node->GetNodeFromfNode(position), 0 );
- position++;
- }
-
-}
-
-// ---------------------------------------------------------------------------
-
-void AliGeometry::UpdateMatrix(AliGTransform* trans)
-{
-// Update global rotation matrix/translation vector for this node
-// this function must be called before invoking Local2Master
-
- TVector* matrix = trans->GetMatrix(); // Get father's transf. matrix
- TVector* temp = new TVector( 0,15,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1., "END");
-
-
- // printf("Inside updatematrix, this is the son's matrix\n");
- // matrix->Print();
- // printf("Inside updatematrix, this is the global matrix before\n");
- // gMatrix->Print();
- /* Multiplication of matrices*/
- for( int i=0; i<4; i++ )
- for( int j=0; j<4; j++ ) {
- double tmp = 0;
- for( int k=0; k<4; k++ )
- // tmp += (*matrix)(i*4+k) * (*gMatrix)(j + k*4);
- tmp += (*gMatrix)(i*4+k) * (*matrix)(j + k*4);
- (*temp)(i*4+j)= tmp;
- }
- //if(gMatrix) delete gMatrix;
- gMatrix = temp;
-
- // printf("Inside updatematrix, this is the global matrix after\n");
- // gMatrix->Print();
-
- // for (int k = 0; k < 16; k++) {
- //cout << "gMatrix[" << k << "]" << (*gMatrix)(k) << endl;
- //cout << "matrix[" << k << "]" << (*matrix)(k) << endl;
- //}
-
- //if (temp) delete [] temp;
- //if (matrix) delete [] matrix;
-
-}
-
-// ---------------------------------------------------------------------------
-
-void AliGeometry::Local2Master(Float_t *local, Float_t *master)
-{
-// *-*-*-*-*Convert one point from local system to master reference system*-*-*
-// *-* ==============================================================
-// Note that before invoking this function, the matrix of the transformation
-// for this node must have been computed.
-// AliGeometry::UpdateMatrix should be called before.
-
-
- // gMatrix->Print();
- if( gNode->GetParent() && gMatrix) {
-
- Double_t tmp;
- Float_t loc[4];
-
- for(int i=0;i<3;i++) loc[i]=local[i];
- loc[3]=1;
-
- TVector &mat = *gMatrix;
-
- for (int i=0; i<3; i++) {
- tmp=0;
- for (int j=0; j<4; j++) tmp+= mat(i*4+j) * loc[j];
- master[i] = tmp;
- }
- }
- else
- memcpy( master, local, sizeof(Double_t)* kVectorSize );
-}
-
-//----------------------------------------------------------------------------
-
-void AliGeometry::PushMatrix(TVector* matrix)
-{
- //if( fTransformation == NULL )
- //fTransformation = new TList();
-
- //cout << " Va a dar error " << endl;
- if (matrix) fTransformation->AddLast((TObject*)matrix);
- //cout << " Ves como aqui no llega? :-) " << endl;
-}
-
-//----------------------------------------------------------------------------
-
-TVector* AliGeometry::PopMatrix()
-{
-
- gMatrix = (TVector*)fTransformation->Last();
- fTransformation->Remove(fTransformation->Last());
- return gMatrix;
-}
-
-//----------------------------------------------------------------------------
-
-
-
+++ /dev/null
-#ifndef ALIGEOMETRY_H
-#define ALIGEOMETRY_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-// -*- C++ -*-
-//
-// 1999/01/05
-// ---------------------------------------------------------------------------
-//
-// AliGeometry Class
-//
-// This file is part of the ALICE Geometry Database .
-//
-// Author: Joana E. Santo
-//
-// ---------------------------------------------------------------------------
-// The Geometry class holds the detector,s geometry. Essentially it has a pointer
-// to the Top Level AliGNode and an array of pointers to rules that specify the
-// complete desgn below that node.
-
-#include <TFile.h>
-#include <TNamed.h>
-#include <TObjString.h>
-#include <TList.h>
-#include "AliGNode.h"
-
-const Int_t kMAXLEVELS = 20;
-const Int_t kMatrixSize = 16;
-const Int_t kVectorSize = 4;
-
-class AliGeometry: public TNamed {
-
- protected:
- Float_t fBomb; //Bomb factor for exploded geometry
- Int_t fGeomLevel;
- Int_t fMaxDepth;
- TList* fRules;
- TString fTopNode;
- TList* fTransformation;
-
- public:
- AliGeometry( Text_t* name, Text_t* title, AliGNode* topNode, int maxDepth=0 ); // Constructor
- AliGeometry( AliGeometry* Geom=NULL ); // Copy or Default Constructor
- virtual ~AliGeometry(); // Destructor
- AliGeometry* operator=( const AliGeometry* Geom );
-
- TList* GetfTransf() const {return fTransformation;}
- Float_t GetBomb() const {return fBomb;}
- TString GetTop() const {return fTopNode;}
- TList* GetRules() const {return fRules;}
- AliGNode* FileToMemTree( TFile* file );
- //AliGNode* FileToMemTree( Text_t* root_file, Text_t* geom_file );
- void Local2Master( Float_t *local, Float_t *master);
- virtual Int_t PopLevel(){return fGeomLevel>0?fGeomLevel--:0;}
- virtual Int_t PushLevel(){return fGeomLevel++;}
- TVector* PopMatrix();
- void PushMatrix(TVector* matrix);
- AliGNode* RecurToMem( const char* node_name, TFile* file, AliGNode* father, char* subtransf );
- void RulesList( TList *fRules, AliGNode* node, int position );
- virtual void SetBomb(Float_t bomb=1.4) {fBomb = bomb;}
- void UpdateMatrix(AliGTransform* trans);
-
-
- ClassDef(AliGeometry,1) //Generic Geometry class
-};
-
-R__EXTERN AliGeometry *gAliGeometry;
-R__EXTERN TVector* gMatrix;
-
-#endif
+++ /dev/null
-void Config()
-{
-
-new AliGEODB("Test with the GEO database");
-
-gSystem->Load("/home/dcollado/AliRoot/pro/lib/libGEODB");
-//=======================================================================
-// Create the output file
-
-//TFile *rootfile = new TFile("GeoDB.root","recreate");
-//rootfile->SetCompressionLevel(2);
-
-AliGEODB* geant3 = (AliGEODB*) gMC;
-
-Int_t iMAG=0;
-Int_t iITS=0;
-Int_t iTPC=1;
-Int_t iTOF=0;
-Int_t iRICH=0;
-Int_t iZDC=0;
-Int_t iCASTOR=0;
-Int_t iTRD=0;
-Int_t iABSO=0;
-Int_t iDIPO=0;
-Int_t iHALL=0;
-Int_t iFRAME=0;
-Int_t iSHIL=0;
-Int_t iPIPE=0;
-Int_t iFMD=0;
-Int_t iMUON=0;
-Int_t iPHOS=0;
-Int_t iPMD=0;
-
-//=================== Alice BODY parameters =============================
-
-//AliBODY *BODY = new AliBODY("BODY","Alice envelop");
-
-
-if(iMAG) {
-//=================== MAG parameters ============================
-// --- Start with Magnet since detector layouts may be depending ---
-// --- on the selected Magnet dimensions ---
-AliMAG *MAG = new AliMAG("MAG","Magnet");
-}
-
-if(iITS) {
-//=================== ITS parameters ============================
-//
-// EUCLID is a flag to output (=1) both geometry and media to two ASCII files
-// (called by default ITSgeometry.euc and ITSgeometry.tme) in a format
-// understandable to the CAD system EUCLID. The default (=0) means that you
-// dont want to use this facility.
-//
-AliITS *ITS = new AliITSv3("ITS","normal ITS");
-ITS->SetEUCLID(1);
-}
-
-if(iTPC) {
- //============================ TPC parameters ================================
- // --- This allows the user to specify sectors for the SLOW (TPC geometry 2)
- // --- Simulator. SecAL (SecAU) <0 means that ALL lower (upper)
- // --- sectors are specified, any value other than that requires at least one
- // --- sector (lower or upper)to be specified!
- // --- Reminder: sectors 1-24 are lower sectors (1-12 -> z>0, 13-24 -> z<0)
- // --- sectors 25-72 are the upper ones (25-48 -> z>0, 49-72 -> z<0)
- // --- SecLows - number of lower sectors specified (up to 6)
- // --- SecUps - number of upper sectors specified (up to 12)
- // --- Sens - sensitive strips for the Slow Simulator !!!
- // --- This does NOT work if all S or L-sectors are specified, i.e.
- // --- if SecAL or SecAU < 0
- //
- //
- //-----------------------------------------------------------------------------
-
- AliTPC *TPC = new AliTPCv1("TPC","Normal TPC");
- TPC->SetSecAL(1);
- TPC->SetSecAU(1);
- TPC->SetSecLows(1, -1, -1, -1, -1, -1);
- TPC->SetSecUps(25, 26, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1);
- TPC->SetSens(1);
-}
-
-if(iTOF) {
-//=================== TOF parameters ============================
-AliTOF *TOF = new AliTOFv2("TOF","normal TOF");
-}
-
-if(iRICH) {
-//=================== RICH parameters ===========================
-
-
-AliRICH *RICH = new AliRICHv1("RICH","normal RICH");
-RICH->SetSP(40);
-RICH->SetFEED(0.04);
-RICH->SetSIGM(0.18);
-RICH->SetTRIG(0);
-}
-
-if(iZDC) {
-//=================== ZDC parameters ============================
-
-AliZDC *ZDC = new AliZDCv1("ZDC","normal ZDC");
-}
-
-if(iCASTOR) {
-//=================== CASTOR parameters ============================
-
-AliCASTOR *CASTOR = new AliCASTORv1("CASTOR","normal CASTOR");
-}
-
-if(iTRD) {
-//=================== TRD parameters ============================
-
-AliTRD *TRD = new AliTRDv2("TRD","TRD version 2");
-}
-
-
-if(iABSO) {
-//=================== ABSO parameters ============================
-AliABSO *ABSO = new AliABSO("ABSO","Muon Absorber");
-}
-
-if(iDIPO) {
-//=================== DIPO parameters ============================
-
-AliDIPO *DIPO = new AliDIPOv2("DIPO","Dipole version 2");
-}
-
-if(iHALL) {
-//=================== HALL parameters ============================
-
-AliHALL *HALL = new AliHALL("HALL","Alice Hall");
-}
-
-
-if(iFRAME) {
-//=================== FRAME parameters ============================
-AliFRAME *FRAME = new AliFRAMEv0("FRAME","Space Frame");
-}
-
-if(iSHIL) {
-//=================== SHIL parameters ============================
-
-AliSHIL *SHIL = new AliSHIL("SHIL","Shielding");
-}
-
-
-if(iPIPE) {
-//=================== PIPE parameters ============================
-
-AliPIPE *PIPE = new AliPIPEv0("PIPE","Beam Pipe");
-}
-
-
-if(iFMD) {
-//=================== FMD parameters ============================
-
-AliFMD *FMD = new AliFMDv1("FMD","normal FMD");
-}
-
-if(iMUON) {
-//=================== MUON parameters ===========================
-
-AliMUON *MUON = new AliMUONv0("MUON","normal MUON");
-
-MUON->SetSMAXAR(0.03);
-MUON->SetSMAXAL(-1);
-//
-// Version 0
-//
-// First define the number of planes that are segmented (1 or 2) by a call
-// to SetNsec.
-// Then chose for each chamber (chamber plane) the segmentation
-// and response model.
-// They should be equal for the two chambers of each station. In a future
-// version this will be enforced.
-//
-//
- Int_t chamber;
- Int_t station;
-// Default Segmentation
- AliMUONsegmentationV0* segV0 = new AliMUONsegmentationV0;
-// Default response
- AliMUONresponseV0* response0 = new AliMUONresponseV0;
- response0->SetSqrtKx3(0.761577);
- response0->SetKx2(0.972655);
- response0->SetKx4(0.3841);
- response0->SetSqrtKy3(0.714143);
- response0->SetKy2(1.0099);
- response0->SetKy4(0.403);
- response0->SetPitch(0.25);
- response0->SetRSIGM(10.);
- response0->SetMUCHSP(5.);
- response0->SetMUSIGM(0.18, 0.18);
- response0->SetMAXADC( 1024);
-//--------------------------------------------------------
-// Configuration for Chamber TC1/2 (Station 1) ----------
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Float_t rseg[4]={17.5, 55.2, 71.3, 95.5};
- Int_t nseg[4]={4, 4, 2, 1};
-
- chamber=1;
-//^^^^^^^^^
- MUON->SetNsec(chamber-1,2);
-//
- AliMUONsegmentationV01 *seg11=new AliMUONsegmentationV01;
- seg11->SetSegRadii(rseg);
- seg11->SetPADSIZ(3.048, 0.508);
- seg11->SetPadDivision(nseg);
- MUON->SetSegmentationModel(chamber-1, 1, seg11);
-//
- AliMUONsegmentationV01 *seg12=new AliMUONsegmentationV01;
- seg12->SetSegRadii(rseg);
- seg12->SetPADSIZ(2.032, 0.762);
- seg12->SetPadDivision(nseg);
-
- MUON->SetSegmentationModel(chamber-1, 2, seg12);
-
- chamber=2;
-//^^^^^^^^^
- MUON->SetNsec(chamber-1,2);
- MUON->SetSegmentationModel(chamber-1, 1, seg11);
- MUON->SetSegmentationModel(chamber-1, 2, seg12);
-
- station=1;
-//^^^^^^^^^
- MUON->SetResponseModel(0, response0);
- MUON->SetResponseModel(1, response0);
-//
-//--------------------------------------------------------
-// Configuration for Chamber TC3/4 -----------------------
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- chamber=3;
- MUON->SetNsec(chamber-1,1);
- AliMUONsegmentationV0 *seg34=new AliMUONsegmentationV0;
- seg34->SetDAnod(0.51/3.);
-
- MUON->SetSegmentationModel(chamber-1, 1, seg34);
- MUON->SetResponseModel(chamber-1, response0);
-
- chamber=4;
- MUON->SetNsec(chamber-1,1);
- MUON->SetSegmentationModel(chamber-1, 1, seg34);
- MUON->SetResponseModel(chamber-1, response0);
-//
-// Station 2
- station=2;
- MUON->SetPADSIZ(station, 1, 0.75, 0.51);
- MUON->SetMUCHSP(station, 5.);
- MUON->SetMUSIGM(station, 0.18, 0.18);
- MUON->SetRSIGM(station, 10.);
- MUON->SetMAXADC(station, 1024);
-
-//
-//--------------------------------------------------------
-// Configuration for Chamber TC5/6 -----------------------
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- seg5 = new AliMUONsegmentationV1;
- AliMUONresponseV0* response5 = new AliMUONresponseV0;
- // K3 = 0.62
- response5->SetSqrtKx3(0.78740079);
- response5->SetKx2(0.95237319); // 0.5 * kPI * (1- 0.5*sqrtky3 )
- response5->SetKx4(0.37480633); // 0.25/TMath::ATan(sqrtkx3)
- // K3 = 0.55
- response5->SetSqrtKy3(0.74161985);
- response5->SetKy2(0.98832946);
- response5->SetKy4(0.39177817);
- response5->SetPitch(0.325);
- response5->SetRSIGM(10.);
- response5->SetMUCHSP(5.);
- response5->SetMUSIGM( 0.4, 0.4);
- response5->SetMAXADC( 1024);
-
- chamber=5;
- MUON->SetNsec(chamber-1,1);
- MUON->SetSegmentationModel(chamber-1, 1, seg5);
- MUON->SetResponseModel(chamber-1, response5);
-
- chamber=6;
- MUON->SetNsec(chamber-1,1);
- MUON->SetSegmentationModel(chamber-1, 1, seg5);
- MUON->SetResponseModel(chamber-1, response5);
-//
-// Station 3
- station=3;
- MUON->SetPADSIZ(station, 1, 0.975, 0.55);
-
-//
-//--------------------------------------------------------
-// Configuration for Chamber TC7/8/9/10-------------------
-//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- chamber=7;
- MUON->SetNsec(chamber-1,1);
- AliMUONsegmentationV0 *seg78=new AliMUONsegmentationV0;
- seg78->SetDAnod(0.51/3.);
-
- MUON->SetSegmentationModel(chamber-1, 1, seg78);
- MUON->SetResponseModel(chamber-1, response0);
-
- chamber=8;
- MUON->SetNsec(chamber-1,1);
- MUON->SetSegmentationModel(chamber-1, 1, seg78);
- MUON->SetResponseModel(chamber-1, response0);
-//
-// Station 4
- station=4;
- MUON->SetPADSIZ(station, 1, 0.75, 0.5);
-
- chamber=9;
- MUON->SetNsec(chamber-1,1);
- AliMUONsegmentationV0 *seg910=new AliMUONsegmentationV0;
- seg910->SetDAnod(0.51/3.);
-
- MUON->SetSegmentationModel(chamber-1, 1, seg910);
- MUON->SetResponseModel(chamber-1, response0);
-
- chamber=10;
- MUON->SetNsec(chamber-1,1);
- MUON->SetSegmentationModel(chamber-1, 1, seg910);
- MUON->SetResponseModel(chamber-1, response0);
-//
-// Station 5
- station=5;
- MUON->SetPADSIZ(station, 1, 0.75, 0.5);
-
- chamber=11;
- MUON->SetNsec(chamber-1,1);
- AliMUONsegmentationV0 *seg1112=new AliMUONsegmentationV0;
- seg1112->SetDAnod(0.51/3.);
-
- MUON->SetSegmentationModel(chamber-1, 1, seg1112);
- MUON->SetResponseModel(chamber-1, response0);
-
- chamber=12;
- MUON->SetNsec(chamber-1,1);
- MUON->SetSegmentationModel(chamber-1, 1, seg1112);
- MUON->SetResponseModel(chamber-1, response0);
-//
-// Trigger Station 1
- station=6;
- MUON->SetPADSIZ(station, 1, 0.75, 0.5);
-
- chamber=13;
- MUON->SetNsec(chamber-1,1);
- AliMUONsegmentationV0 *seg1314=new AliMUONsegmentationV0;
- seg1314->SetDAnod(0.51/3.);
-
- MUON->SetSegmentationModel(chamber-1, 1, seg1314);
- MUON->SetResponseModel(chamber-1, response0);
-
- chamber=14;
- MUON->SetNsec(chamber-1,1);
- MUON->SetSegmentationModel(chamber-1, 1, seg1314);
- MUON->SetResponseModel(chamber-1, response0);
-//
-// Trigger Station 2
- station=7;
- MUON->SetPADSIZ(station, 1, 0.75, 0.5);
-}
-
-if(iPHOS) {
-//=================== PHOS parameters ===========================
-
-AliPHOS *PHOS = new AliPHOSv1("PHOS","normal PHOS");
-// * PHOSflags: YES: X<>0 NO: X=0
-// * PHOSflags(1) : -----X Create branch for TObjArray of AliPHOSCradle
-// * ----X- Create file (ftn03 on HP-UX) with list of SHAKER particles (7Mb/event)
-// *
-PHOS->SetFlags(000001);
-PHOS->SetRadius(460); //Distance from beam to PHOS crystals.
-// (crystal_side_size,crystal_length,wrap_thikness,air_thikness,PIN_size,PIN length)
-PHOS->SetCell(2.2, 18., 0.01, 0.01, 1., 0.1);
-PHOS->SetCradleSize(104, 88, 4); // Nz (along beam), Nphi, Ncradles
-PHOS->SetCradleA(0); //Angle between Cradles
-PHOS->SetCPV(1., 2.); //CPV thikness, CPV-PHOS distance
-// * ===============
-// * PHOS extra parameters (contact Maxim Volkov volkov@mail.cern.ch)
-// * 1. STE_THICK Steel cover thickness
-// * 2. SUP_Y Crystal support height
-// * 3. FTIU_THICK Thermo Insulating outer cover Upper plate thickness
-// * 4. UFP_Y Upper Polystyrene Foam plate thickness
-// * 5. TCB_THICK Thermo insulating Crystal Block wall thickness
-// * 6. UCP_Y Upper Cooling Plate thickness
-// * 7. ASP_Y Al Support Plate thickness
-// * 8. TIP_Y Lower Thermo Insulating Plate thickness
-// * 9. TXP_Y Lower Textolit Plate thickness
-PHOS->SetExtra(0.001, 6.95, 4., 5., 2., 0.06, 10., 3., 1.);
-PHOS->SetTextolitWall(209., 71., 250.); //Textolit Wall box dimentions
-PHOS->SetInnerAir(206., 66., 244.); //Inner AIR volume dimensions
-// * ===============================
-// * 1. FTI_X Foam Thermo Insulating outer cover dimensions
-// * 2. FTI_Y ==//==
-// * 3. FTI_Z ==//==
-// * 4. FTI_R Distance from IP to Foam Thermo Insulating top plate
-PHOS->SetFoam(214.6, 80., 260., 467.);
-// =================================
-// *******************************************************************************
-// * KINE 700 - SHAKER generator
-// * KINE 700 x y z NDNDY YLIM PTLIM ChargeFlag
-// * JWEAK=0
-// * JPI0=JETA=1
-// * JPIC=JPRO=JKAC=JKA0=JRHO=JOME=JPHI=JPSI=JDRY=ChargeFlag
-// * Int_t JWEI; // Unweighted generation
-// * Int_t NDNDY; // Density of charged particles
-// * Float_t YLIM; // Rapidity Limit
-// * Float_t PTLIM; // Pt limit in GeV/c
-// * Int_t JWEAK; // Disable weak decays
-// * Int_t JPI0; // pi0 generation
-// * Int_t JETA; // eta generation
-// * Int_t JPIC; // pi+/- generation
-// * Int_t JPRO; // proton generation
-// * Int_t JKAC; // K+/- generation
-// * Int_t JKA0; // K0 generation
-// * Int_t JRHO; // rho generation
-// * Int_t JOME; // omega generation
-// * Int_t JPHI; // phi generation
-// * Int_t JPSI; // J/psi generation
-// * Int_t JDRY; // Drell-Yan generation
-// * KINE 700 5. 175. 0. 800. 1.5 5. 1.
-// *******************************************************************************
-}
-
-if(iPMD) {
-//=================== PMD parameters ============================
-
-// Must be defined AFTER PHOS
-AliPMD *PMD = new AliPMDv1("PMD","normal PMD");
-PMD->SetPAR(1., 1., 0.8, 0.02);
-PMD->SetIN(6., 20., 600., 27., 27.);
-PMD->SetGEO(0.0, 0.2, 4.);
-PMD->SetPadSize(0.8, 1.0, 1.2, 1.5);
-}
-
-}
+++ /dev/null
-#ifdef __CINT__
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/* $Id$ */
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-#pragma link C++ global gAlice;
-
-#pragma link C++ class AliGShape+;
-#pragma link C++ class AliGBox+;
-#pragma link C++ class AliGSphere-;
-#pragma link C++ class AliGTransform+;
-#pragma link C++ class AliGMaterial+;
-#pragma link C++ class AliGSuperShape+;
-#pragma link C++ class AliGConfig+;
-#pragma link C++ class AliGNode+;
-#pragma link C++ class AliGCone+;
-#pragma link C++ class AliGTube-;
-#pragma link C++ class AliGPCone-;
-#pragma link C++ class AliGTRD1+;
-#pragma link C++ class AliGeometry+;
-
-#pragma link C++ class AliGEODB+;
-
-#endif
+++ /dev/null
-/**********************************************/
-/* */
-/* FILE: geotest.C */
-/* PURPOSE: To "experiment" with geometric's */
-/* databases and ROOT. */
-/* LANGUAGE: C++ */
-/* COMPILER: CC for HP-UX 9.x and 10. */
-/* AUTHOR: Joana && David */
-/* DATE: December 2, 1998 */
-/* ADDRESS: jesanto@cern.ch, dcollado@cern.ch */
-/* */
-/**********************************************/
-
-geotest () {
- gSystem->Load("./libGEODB");
- AliGBox* box1 = new AliGBox("box1", "box1", 0.2, 0.2, 0.2);
- AliGMaterial *mat1 = new AliGMaterial("mat1", "mat1", 2.3,4.5,6.7);
- AliGNode *node1 = new AliGNode("Node1", 1, "My first node", box1, mat1 );
-
- AliGBox* box2 = new AliGBox("box2", "box2", 0.3,0.3,0.3);
-
- AliGTube* tube = new AliGTube("tube", "tube", 0.150,0.200,0.400);
- AliGMaterial *mat2 = new AliGMaterial("mat2", "mat2", 1.3,7.5,8.7);
- AliGNode *node2 = new AliGNode("Node2", 2, "My second node", /*tube*/ box2, mat2);
-
- //AliGBox* box3 = new AliGBox("box3", "box3", 3.0,2.0,4.0);
- AliGSphere* sphere = new AliGSphere("sphere", "sphere", 0.25);
- AliGMaterial *mat3 = new AliGMaterial("mat3", "mat3", 0.3,3.5,2.7);
- //AliGNode *node3 = new AliGNode("Node3", 3, "My third node", box3, mat3);
- AliGNode *node3 = new AliGNode("Node3", 3, "My third node", sphere, mat3);
-
- //AliGBox* box4 = new AliGBox("box4", "box4", 4.0,2.0,6.0);
- AliGCone* cone = new AliGCone("cone", "cone", 0.05,0.07,0.12,0.15,0.1);
- AliGMaterial *mat4 = new AliGMaterial("mat4", "mat4", 0.4,3.2,8.7);
- //AliGNode *node4 = new AliGNode("Node4", 4, "My fourth node", box4, mat4);
- AliGNode *node4 = new AliGNode("Node4", 4, "My fourth node", cone, mat4);
-
- AliGTransform *tran1 = new AliGTransform("tran1","tran1","tra 1. 0. 0.");
- AliGTransform *tran2 = new AliGTransform("tran2","tran2","tra 0.5 0. 0.");
- AliGTransform *tran3 = new AliGTransform("tran3","tran3","tra 0.25 0. 0.");
-
- node1->Add(node2,tran1); // TUBE
- node1->Add(node2,tran2);//
- node1->Add(node3,tran1);//
- node1->Add(node3,tran2); // SPHERE
- node2->Add(node4,tran1);//
- node2->Add(node4,tran2); // CONE
- node2->Add(node4,tran3);//
-
- node1->AddConfig("config1","config1","coarse",981201,991201);
- node2->AddConfig("config2","config2","detail",981201,991201);
- node3->AddConfig("config3","config3","",981201,991201);
- node4->AddConfig("config4","config4","",981201,991201);
-
- AliGeometry* geom1 = new AliGeometry( "geom1", "geom1", node1, 0 ); /* Build geometry in memory from Node1 */
-
- TFile* file = new TFile( "AliGeoDB.root", "RECREATE","Alice Geometry Database");
-
- node1->SaveAll( file ); /* Memory tree structure saved in disk */
-
-
- file->Close();
-
- TFile* file = new TFile( "AliGeoDB.root", "UPDATE" );
-
- AliGeometry* geom1 = new AliGeometry( "geom1", "geom1", node1, 0 ); /* Build geometry in memory from Node1 */
-
- geom1->Write(); /* Save geometry in disk */
- file->Write();
-
- file->Close(); /* Everything saved in disk */
- file = new TFile("AliGeoDB.root","read");
- a = TBrowser() ;
- printf( " The end of geotest.C \n" );
-
- //if( geom1 ) delete geom1;
- //if( node4 ) delete node4;
- //if( node3 ) delete node3;
- //if( node2 ) delete node2;
- //if( node1 ) delete node1;
-
-
-
- //AliGeometry* geom3 = new AliGeometry();
-
- /* Retrieve the memory tree structure from AliGeoDB.root and stores it in memory, being new_tree the top node */
- //AliGNode* tree_root = new AliGNode(geom3->FileToMemTree( "AliGeoDB.root", "geom1" ));
-
- //TFile* file2 = new TFile( "AliGeoDB2.root", "RECREATE","Alice Geometry Database");
- //tree_root->SaveAll( file2 ); /* Memory tree structure saved in disk (second time) */
-
-
- //TFile* file = new TFile( "AliGeoDB.root", "READ" );
-
- //AliGeometry* geom2 = new AliGeometry((AliGeometry*) file->Get("geom1"));
- //file->Close();
- //file2->cd();
- //geom2.Write();
- //file2->Write();
- //file2->Close();
-
- //gROOT->Reset();
- //file3 = new TFile( "AliGeoDB.root", "READ" );
- //file4 = new TFile( "AliGeoDB2.root", "READ" );
- //a = TBrowser();
-
- //gPad->Update();
-
-
-
-
-
-
-
-
-
- /* AliGNode *obj;
-
- TIter next(gPad->GetListOfPrimitives());
- while (obj = (AliGNode*)next()) {
- if(obj.GetShape()->Is3D()) {
- obj.GetShape()->Sizeof3D();
- printf("\n It is a 3D Object\n");
- printf("Total size of x3d primitives:\n");
- Size3D size = obj.GetShape()->GetSize3D();
- printf(" gSize3D.numPoints=%d\n", size.numPoints);
- //printf(" gSize3D.numSegs =%d\n", gPad->gSize3D.numSegs);
- //printf(" gSize3D.numPolys =%d\n", gSize3D.numPolys);
- }
- else
- printf("\n It's not a 3D Object\n");
- }
-
- gPad->x3d();*/
-
- /*
- c1 = new TCanvas("c1","Common Shapes.",0,0,1202,846);
- c1->Range(0,0,1,1);
- c1->SetFillColor(32); // Light Green
- c1->SetBorderSize(3);
- c1->SetBorderMode(0); // -1 (down) 0 (no) 1 (up)
-
- // Create a TitleBar in Main Window
- title = new TPaveLabel(0.3,0.93,0.7,0.98,"View Of Different Shapes");
- title->SetFillColor(34); // Grey
- title->Draw();
-
- // Text for Pads
- TText *t = new TText();
- t->SetTextFont(32); // Light Green
- t->SetTextColor(1); // Black
- t->SetTextSize(0.03);
- t->DrawText( 0.19, 0.89, "AliGBox" );
- t->DrawText( 0.70, 0.89, "AliGSphere" );
- t->DrawText( 0.19, 0.43, "AliGTube" );
- t->DrawText( 0.70, 0.43, "AliGCone" );
-
- // Define and Draw Pads of Main Window
- Pad1 = new TPad("Pad1","AliGBox Shape",0.05,0.48,0.45,0.88,28);
- Pad1->SetFillColor(34); // Grey
- Pad2 = new TPad("Pad2","AliGSphere Shape",0.55,0.48,0.95,0.88,28);
- Pad2->SetFillColor(34); // Grey
- Pad3 = new TPad("Pad3","AliGTube Shape",0.05,0.02,0.45,0.42,28);
- Pad3->SetFillColor(34); // Grey
- Pad4 = new TPad("Pad4","AliGCone Shape",0.55,0.02,0.95,0.42,28);
- Pad4->SetFillColor(34); // Grey
- Pad1->Draw();
- Pad2->Draw();
- Pad3->Draw();
- Pad4->Draw();
-
- // Define some volumes
- AliGTube* tube = new AliGTube("tube", "tube", 150,200,400);
- AliGCone* cone = new AliGCone("cone", "cone", 50,70,120,100,150);
- AliGSphere* sphere = new AliGSphere("sphere", "sphere", 75);
- AliGThorus* thorus = new AliGThorus("thorus", "thorus", 150,200,400);
-
- // Set shapes attributes
- box1->SetLineColor(2); // Red
- sphere->SetLineColor(4); // Blue
- tube->SetLineColor(3); // Bright Green
- cone->SetLineColor(5); // Yellow
- thorus->SetLineColor(2); // Red
-
- // Draw inside Pad1
- Pad1->cd(); // Set current pad
- box1->Draw();
-
- // Draw inside Pad2
- Pad2->cd(); //Set current Pad
- sphere->Draw();
-
- // Draw inside Pad3
- Pad3->cd(); //Set current Pad
- tube->Draw();
-
- // Draw inside Pad4
- Pad4->cd(); //Set current Pad
- cone->Draw();
-
- c1->cd();
- c1->Update(); // Update Canvas
- */
-}
-
-
-