1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
23 // ---------------------------------------------------------------------------
27 // This file is part of the ALICE Geometry Database .
29 // Author: Joana E. Santo & company...
31 // ---------------------------------------------------------------------------
35 #include <TVirtualPad.h>
37 #include <TGLKernelABC.h>
43 //-------------------------------------------------------------------------
45 AliGTRD1::AliGTRD1(Text_t *name, Text_t *title, Float_t dx1, Float_t dx2, Float_t dy, Float_t dz) : AliGShape(name, title)
47 //*-*-*-*-*-*-*-*-*-*-*-*-*AliGTRD1 shape normal constructor*-*-*-*-*-*-*-*-*-*-*-*-*
48 //*-* =============================
56 //-------------------------------------------------------------------------
60 /* Default Constructor */
67 //-------------------------------------------------------------------------
69 AliGTRD1::AliGTRD1( AliGTRD1* trd1 )
71 /* Copy Constructor */
72 fColor = trd1->fColor;
78 fTitle = trd1->fTitle;
81 //----------------------------------------------------------------------------
83 void AliGTRD1::SetPoints(Float_t *buff)
85 //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Create AliGTRD1 points*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
86 //*-* ==================
88 Float_t dx1, dx2, dy, dz;
96 buff[ 0] = -dx1; buff[ 1] = -dy; buff[ 2] = -dz;
97 buff[ 3] = dx1; buff[ 4] = -dy; buff[ 5] = -dz;
98 buff[ 6] = dx1; buff[ 7] = dy; buff[ 8] = -dz;
99 buff[ 9] = -dx1; buff[10] = dy; buff[11] = -dz;
100 buff[12] = -dx2; buff[13] = -dy; buff[14] = dz;
101 buff[15] = dx2; buff[16] = -dy; buff[17] = dz;
102 buff[18] = dx2; buff[19] = dy; buff[20] = dz;
103 buff[21] = -dx2; buff[22] = dy; buff[23] = dz;
107 //-------------------------------------------------------------------------
109 void AliGTRD1::Paint(Option_t *option)
111 SetLineColor( GetCol() );
113 const Int_t numpoints = 8;
115 //*-* Allocate memory for points *-*
117 Float_t *points = new Float_t[3*numpoints];
122 if (gPad->GetView3D()) PaintGLPoints(points);
124 //== for (Int_t i = 0; i < numpoints; i++)
125 // gNode->Local2Master(&points[3*i],&points[3*i]);
127 Int_t c = ((GetLineColor() % 8) - 1) * 4; // Basic colors: 0, 1, ... 7
130 //*-* Allocate memory for segments *-*
132 X3DBuffer *buff = new X3DBuffer;
139 //*-* Allocate memory for points *-*
141 buff->points = points;
142 buff->segs = new Int_t[buff->numSegs*3];
145 buff->segs[ 0] = c; buff->segs[ 1] = 0; buff->segs[ 2] = 1;
146 buff->segs[ 3] = c+1; buff->segs[ 4] = 1; buff->segs[ 5] = 2;
147 buff->segs[ 6] = c+1; buff->segs[ 7] = 2; buff->segs[ 8] = 3;
148 buff->segs[ 9] = c; buff->segs[10] = 3; buff->segs[11] = 0;
149 buff->segs[12] = c+2; buff->segs[13] = 4; buff->segs[14] = 5;
150 buff->segs[15] = c+2; buff->segs[16] = 5; buff->segs[17] = 6;
151 buff->segs[18] = c+3; buff->segs[19] = 6; buff->segs[20] = 7;
152 buff->segs[21] = c+3; buff->segs[22] = 7; buff->segs[23] = 4;
153 buff->segs[24] = c; buff->segs[25] = 0; buff->segs[26] = 4;
154 buff->segs[27] = c+2; buff->segs[28] = 1; buff->segs[29] = 5;
155 buff->segs[30] = c+1; buff->segs[31] = 2; buff->segs[32] = 6;
156 buff->segs[33] = c+3; buff->segs[34] = 3; buff->segs[35] = 7;
159 //*-* Allocate memory for polygons *-*
161 buff->polys = new Int_t[buff->numPolys*6];
164 buff->polys[ 0] = c; buff->polys[ 1] = 4; buff->polys[ 2] = 0;
165 buff->polys[ 3] = 9; buff->polys[ 4] = 4; buff->polys[ 5] = 8;
166 buff->polys[ 6] = c+1; buff->polys[ 7] = 4; buff->polys[ 8] = 1;
167 buff->polys[ 9] = 10; buff->polys[10] = 5; buff->polys[11] = 9;
168 buff->polys[12] = c; buff->polys[13] = 4; buff->polys[14] = 2;
169 buff->polys[15] = 11; buff->polys[16] = 6; buff->polys[17] = 10;
170 buff->polys[18] = c+1; buff->polys[19] = 4; buff->polys[20] = 3;
171 buff->polys[21] = 8; buff->polys[22] = 7; buff->polys[23] = 11;
172 buff->polys[24] = c+2; buff->polys[25] = 4; buff->polys[26] = 0;
173 buff->polys[27] = 3; buff->polys[28] = 2; buff->polys[29] = 1;
174 buff->polys[30] = c+3; buff->polys[31] = 4; buff->polys[32] = 4;
175 buff->polys[33] = 5; buff->polys[34] = 6; buff->polys[35] = 7;
178 //*-* Paint in the pad
179 Bool_t rangeView = strcmp(option,"range")==0 ? kTRUE : kFALSE;
180 PaintShape(buff,rangeView);
182 if (strstr(option, "x3d")) {
183 if(buff && buff->points && buff->segs)
186 gSize3D.numPoints -= buff->numPoints;
187 gSize3D.numSegs -= buff->numSegs;
188 gSize3D.numPolys -= buff->numPolys;
193 if (buff->segs) delete [] buff->segs;
194 if (buff->polys) delete [] buff->polys;
195 if (buff) delete buff;