Added two missing includes to allow macro compilation (thanks to Laurent for remarkin...
[u/mrichter/AliRoot.git] / ITS / AliITSgeomSDD.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
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  **************************************************************************/
15
16 /* $Id$ */
17
18 ////////////////////////////////////////////////////////////////////////
19 // This class is for the Silicon Drift Detector, SDD, specific geometry.
20 // It is being replaced by AliITSsegmentationSDD class. This file also
21 // constains classes derived from AliITSgeomSDD which do nothing but
22 // initilize this one with predefined values.
23 ////////////////////////////////////////////////////////////////////////
24
25 #include <Riostream.h>
26 #include <stdlib.h>
27 #include <TShape.h>
28
29 #include "AliITSgeomSDD.h"
30
31 ClassImp(AliITSgeomSDD)
32 AliITSgeomSDD::AliITSgeomSDD():
33 TObject(),
34 fPeriod(0.0),
35 fDvelocity(0.0),
36 fNAnodesL(0),
37 fNAnodesR(0),
38 fAnodeXL(0.0),
39 fAnodeXR(0.0),
40 fAnodeLowEdgeL(0),
41 fAnodeLowEdgeR(0),
42 fName(),
43 fTitle(),
44 fMat(),
45 fDx(0.0),
46 fDy(0.0),
47 fDz(0.0){
48 ////////////////////////////////////////////////////////////////////////
49 //    default constructor
50 ////////////////////////////////////////////////////////////////////////
51 //    const Float_t kDx = 3.500;//cm. (Geant 3.12 units) Orthonormal to y and z
52 //    const Float_t kDy = 0.014;//cm. (Geant 3.12 units) Radialy from the Beam
53 //    const Float_t kDz = 3.763;//cm. (Geant 3.12 units) Allong the Beam Pipe
54
55     fPeriod        = 0.0;
56     fDvelocity     = 0.0;
57     fNAnodesL      = 0;
58     fNAnodesR      = 0;
59     fAnodeXL       = 0.0;
60     fAnodeXR       = 0.0;
61     fAnodeLowEdgeL = 0;
62     fAnodeLowEdgeR = 0;
63 }
64 //________________________________________________________________________
65 AliITSgeomSDD::AliITSgeomSDD(const Float_t *box,Float_t per,Float_t vel,
66                              Float_t axL,Float_t axR,
67                              Int_t nAL,Float_t *leL,
68                              Int_t nAR,Float_t *leR):
69 TObject(),
70 fPeriod(0.0),
71 fDvelocity(0.0),
72 fNAnodesL(0),
73 fNAnodesR(0),
74 fAnodeXL(0.0),
75 fAnodeXR(0.0),
76 fAnodeLowEdgeL(0),
77 fAnodeLowEdgeR(0),
78 fName(),
79 fTitle(),
80 fMat(),
81 fDx(0.0),
82 fDy(0.0),
83 fDz(0.0){
84 ////////////////////////////////////////////////////////////////////////
85 //    Standard constructor
86 ////////////////////////////////////////////////////////////////////////
87     fPeriod        = 0.0;
88     fDvelocity     = 0.0;
89     fNAnodesL      = 0;
90     fNAnodesR      = 0;
91     fAnodeXL       = 0.0;
92     fAnodeXR       = 0.0;
93     fAnodeLowEdgeL = 0;
94     fAnodeLowEdgeR = 0;
95     ResetSDD(box,per,vel,axL,axR,nAL,leL,nAR,leR);
96 }
97 //________________________________________________________________________
98 void AliITSgeomSDD::ResetSDD(const Float_t *box,Float_t per,Float_t vel,
99                              Float_t axL,Float_t axR,
100                              Int_t nAL,Float_t *leL,
101                              Int_t nAR,Float_t *leR){
102 ////////////////////////////////////////////////////////////////////////
103 //    Standard Filler
104 ////////////////////////////////////////////////////////////////////////
105     Int_t i;
106
107     fPeriod        = per;
108     fDvelocity     = vel;
109     fNAnodesL      = nAL;
110     fNAnodesR      = nAR;
111     fAnodeXL       = axL;
112     fAnodeXR       = axR;
113     if(fAnodeLowEdgeL!=0) delete fAnodeLowEdgeL;
114     fAnodeLowEdgeL = new Float_t[fNAnodesL];
115     if(fAnodeLowEdgeR!=0) delete fAnodeLowEdgeR;
116     fAnodeLowEdgeR = new Float_t[fNAnodesR];
117     for(i=0;i<fNAnodesL;i++) fAnodeLowEdgeL[i] = leL[i];
118     for(i=0;i<fNAnodesR;i++) fAnodeLowEdgeR[i] = leR[i];
119     fName="ActiveSDD";
120     fTitle="Active volume of SDD";
121     fMat="SDD Si Det";
122     fDx=box[0];
123     fDy=box[1];
124     fDz=box[2];
125 }
126 //________________________________________________________________________
127 AliITSgeomSDD::~AliITSgeomSDD(){
128 // Destructor
129
130     if(fAnodeLowEdgeL!=0) delete [] fAnodeLowEdgeL;
131     if(fAnodeLowEdgeR!=0) delete [] fAnodeLowEdgeR;
132     fPeriod    = 0.0;
133     fDvelocity = 0.0;
134     fAnodeXL   = 0.0;
135     fAnodeXR   = 0.0;
136     fNAnodesL  = 0;
137     fNAnodesR  = 0;
138     fAnodeLowEdgeL = 0;
139     fAnodeLowEdgeR = 0;
140 }
141 //________________________________________________________________________
142 AliITSgeomSDD::AliITSgeomSDD(AliITSgeomSDD &source) : TObject(source),
143 fPeriod(source.fPeriod),
144 fDvelocity(source.fDvelocity),
145 fNAnodesL(source.fNAnodesL),
146 fNAnodesR(source.fNAnodesR),
147 fAnodeXL(source.fAnodeXL),
148 fAnodeXR(source.fAnodeXR),
149 fAnodeLowEdgeL(0),
150 fAnodeLowEdgeR(0),
151 fName(source.fName),
152 fTitle(source.fTitle),
153 fMat(source.fMat),
154 fDx(source.fDx),
155 fDy(source.fDy),
156 fDz(source.fDz){
157     // Copy constructor  
158   fAnodeLowEdgeL = new Float_t[fNAnodesL];
159   fAnodeLowEdgeR = new Float_t[fNAnodesR];
160   for(Int_t i=0;i<fNAnodesL;i++) fAnodeLowEdgeL[i] = source.fAnodeLowEdgeL[i];
161   for(Int_t i=0;i<fNAnodesR;i++) fAnodeLowEdgeR[i] = source.fAnodeLowEdgeR[i];
162  
163 }
164 //________________________________________________________________________
165 AliITSgeomSDD& AliITSgeomSDD::operator=(AliITSgeomSDD &source){
166     // = operator
167
168   this->~AliITSgeomSDD();
169   new(this) AliITSgeomSDD(source);
170   return *this;
171
172 }
173 //______________________________________________________________________
174 void AliITSgeomSDD::Local2Det(Float_t xl,Float_t zl,Int_t &a,Int_t &t,Int_t &s){
175 // Give the local detector coordinate it returns the anode number, time
176 // bucket, and detector side.
177     Int_t i;
178
179     if(xl>0) {
180         if(zl<fAnodeLowEdgeR[0]) i=-1;
181         else for(i=0;i<fNAnodesR;i++) if(zl<fAnodeLowEdgeR[i]) break;
182         a = i;
183         s = 1;
184     } else if(xl<0){
185         if(zl<fAnodeLowEdgeL[0]) i=-1;
186         else for(i=0;i<fNAnodesL;i++) if(zl<fAnodeLowEdgeL[i]) break;
187         a = i;
188         s = 0;
189     } else { // x==0.
190         if(zl<fAnodeLowEdgeR[0]) i=-1;
191         else for(i=0;i<fNAnodesR;i++) if(zl<fAnodeLowEdgeR[i]) break;
192         a = i;
193         if(zl<fAnodeLowEdgeL[0]) i=-1;
194         else for(i=0;i<fNAnodesL;i++) if(zl<fAnodeLowEdgeL[i]) break;
195         s = -i;
196     } // end if
197     t = (Int_t)TMath::Abs((GetAnodeX(a,s)-xl)/fDvelocity/fPeriod);
198     return;
199 }
200 //______________________________________________________________________
201 void AliITSgeomSDD::Det2Local(Int_t a,Int_t t,Int_t s,Float_t &xl,Float_t &zl){
202 // Give the anode number, time bucket, and detector side, it returns the
203 // local detector coordinate.
204
205     zl = 0.5*GetAnodeZ(a,s);
206     if(s==0){
207         xl = GetAnodeX(a,s)+(t+0.5)*fPeriod*fDvelocity;
208     } else { // s==1
209         xl = GetAnodeX(a,s)-(t+0.5)*fPeriod*fDvelocity;
210     } // end if s==0;
211     return;
212 }
213 //______________________________________________________________________
214 void AliITSgeomSDD::Print(ostream *os) const {
215 ////////////////////////////////////////////////////////////////////////
216 // Standard output format for this class.
217 ////////////////////////////////////////////////////////////////////////
218     Int_t i;
219 #if defined __GNUC__ 
220 #if __GNUC__ > 2
221     ios::fmtflags fmt;
222 #else
223     Int_t fmt;
224 #endif
225 #else
226 #if defined __ICC || defined __ECC || defined __xlC__
227     ios::fmtflags fmt;
228 #else
229     Int_t fmt;
230 #endif
231 #endif
232
233     fmt = os->setf(ios::scientific);  // set scientific floating point output
234     *os << "TBRIK" << " ";
235     *os << setprecision(16) << GetDx() << " ";
236     *os << setprecision(16) << GetDy() << " ";
237     *os << setprecision(16) << GetDz() << " ";
238     *os << setprecision(16) << fPeriod << " ";
239     *os << setprecision(16) << fDvelocity << " ";
240     *os << fNAnodesL << " ";
241     *os << fNAnodesR << " ";
242     *os << fAnodeXL << " ";
243     *os << fAnodeXR << " ";
244     for(i=0;i<fNAnodesL;i++) *os <<setprecision(16)<<fAnodeLowEdgeL[i]<< " ";
245     for(i=0;i<fNAnodesR;i++) *os <<setprecision(16)<<fAnodeLowEdgeR[i]<< " ";
246     *os << endl;
247     os->flags(fmt); // reset back to old formating.
248     return;
249 }
250 //______________________________________________________________________
251 void AliITSgeomSDD::Read(istream *is){
252 ////////////////////////////////////////////////////////////////////////
253 // Standard input format for this class.
254 ////////////////////////////////////////////////////////////////////////
255     Int_t i;
256     char shp[20];
257
258     *is >> shp;
259     *is >> fDx >> fDy >> fDz;
260     fName="AcrtiveSDD";
261     fTitle="Active volulme of SDD";
262     fMat="SDD Si Det";
263     *is >> fPeriod >> fDvelocity >> fNAnodesL >> fNAnodesR;
264     *is >> fAnodeXL >> fAnodeXR;
265     if(fAnodeLowEdgeL!=0) delete fAnodeLowEdgeL;
266     this->fAnodeLowEdgeL = new Float_t[fNAnodesL];
267     if(fAnodeLowEdgeR!=0) delete fAnodeLowEdgeR;
268     this->fAnodeLowEdgeR = new Float_t[fNAnodesR];
269     for(i=0;i<fNAnodesL;i++) *is >> fAnodeLowEdgeL[i];
270     for(i=0;i<fNAnodesR;i++) *is >> fAnodeLowEdgeR[i];
271     return;
272 }
273 //----------------------------------------------------------------------
274 ostream &operator<<(ostream &os,AliITSgeomSDD &p){
275 ////////////////////////////////////////////////////////////////////////
276 // Standard output streaming function.
277 ////////////////////////////////////////////////////////////////////////
278
279     p.Print(&os);
280     return os;
281 }
282 //----------------------------------------------------------------------
283 istream &operator>>(istream &is,AliITSgeomSDD &r){
284 ////////////////////////////////////////////////////////////////////////
285 // Standard input streaming function.
286 ////////////////////////////////////////////////////////////////////////
287
288     r.Read(&is);
289     return is;
290 }
291
292 //======================================================================
293
294 ClassImp(AliITSgeomSDD256)
295
296 AliITSgeomSDD256::AliITSgeomSDD256() : AliITSgeomSDD(){
297     // Default Constructor
298 }
299 //----------------------------------------------------------------------
300 AliITSgeomSDD256::AliITSgeomSDD256(Int_t npar,const Float_t *par) : 
301     AliITSgeomSDD(){
302 ////////////////////////////////////////////////////////////////////////
303 //    constructor
304 /*
305 Pads for probe cards in ALICE-D2       /05.03.2000/
306 (X,Y) coordinates are quoted in microns and referred to the centers of 
307 bonding pads. (0, 0) corrispond to the center of the detector.
308 Convention: 
309 left is for negative X, right is for positive X;
310 DOWN half is for negative Y, UP half is for positive Y.
311
312 Detector size: X= 87588 micrometers; Y= 72500 micrometers. 
313 Detector corners:
314   LEFT UP: (-43794, 36250)
315 RIGHT UP:  (43794, 36250)
316  LEFT DOWN: (-43794, -36250)
317 RIGHT DOWN:  (43794, -36250)
318
319         Drift cathodes (n-side)
320
321 cathode #0 (Ubias) 
322 (-1477, 0), pad size (150, 60)
323    (875, 0), pad size (150, 60)
324 (-36570, 0), pad size (200, 70)
325 (-37570, 0), pad size (200, 70)
326 (36570, 0), pad size (200, 70)
327 (37570, 0), pad size (200, 70)
328
329 cathode #1 DOWN half 
330 (-1477, -120), pad size (150, 60)
331    (875, -120), pad size (150, 60)
332 (-36570, -120), pad size (200, 70)
333 (-37570, -120), pad size (200, 70)
334 (36570, -120), pad size (200, 70)
335 (37570, -120), pad size (200, 70)
336
337 cathode #2 DOWN half 
338 (-1477, -240), pad size (150, 60)
339    (875, -240), pad size (150, 60)
340 (-36570, -240), pad size (200, 70)
341 (-37570, -240), pad size (200, 70)
342 (36570, -240), pad size (200, 70)
343 (37570, -240), pad size (200, 70)
344
345 cathode #3 DOWN half 
346 (-1477, -360), pad size (150, 60)
347    (875, -360), pad size (150, 60)
348 (-36570, -360), pad size (200, 70)
349 (-37570, -360), pad size (200, 70)
350 (36570, -360), pad size (200, 70)
351 (37570, -360), pad size (200, 70)
352 .....................................
353 ......................................
354 ......................................
355 cathode #30 DOWN half
356 (-1477, -3600), pad size (150, 60)
357    (875, -3600), pad size (150, 60)
358 (-36570, -3600), pad size (200, 70)
359 (-37570, -3600), pad size (200, 70)
360 (36570, -3600), pad size (200, 70)
361 (37570, -3600), pad size (200, 70)
362 ...................................
363 cathode #60 DOWN half
364 (-1477, -7200), pad size (150, 60)
365    (875, -7200), pad size (150, 60)
366 (-36570, -7200), pad size (200, 70)
367 (-37570, -7200), pad size (200, 70)
368 (36570, -7200), pad size (200, 70)
369 (37570, -7200), pad size (200, 70)
370 ....................................
371 cathode #90 DOWN half
372 (-1477, -10800), pad size (150, 60)
373    (875, -10800), pad size (150, 60)
374 (-36570, -10800), pad size (200, 70)
375 (-37570, -10800), pad size (200, 70)
376 (36570, -10800), pad size (200, 70)
377 (37570, -10800), pad size (200, 70)
378 ....................................
379 cathode #120 DOWN half
380 (-1477, -14400), pad size (150, 60)
381    (875, -14400), pad size (150, 60)
382 (-36570, -14400), pad size (200, 70)
383 (-37570, -14400), pad size (200, 70)
384 (36570, -14400), pad size (200, 70)
385 (37570, -14400), pad size (200, 70)
386 ....................................
387 cathode #150 DOWN half
388 (-1477, -18000), pad size (150, 60)
389    (875, -18000), pad size (150, 60)
390 (-36570, -18000), pad size (200, 70)
391 (-37570, -18000), pad size (200, 70)
392 (36570, -18000), pad size (200, 70)
393 (37570, -18000), pad size (200, 70)
394 ....................................
395 cathode #180 DOWN half
396 (-1477, -21600), pad size (150, 60)
397    (875, -21600), pad size (150, 60)
398 (-36570, -21600), pad size (200, 70)
399 (-37570, -21600), pad size (200, 70)
400 (36570, -21600), pad size (200, 70)
401 (37570, -21600), pad size (200, 70)
402 ....................................
403 cathode #210 DOWN half
404 (-1477, -25200), pad size (150, 60)
405    (875, -25200), pad size (150, 60)
406 (-36570, -25200), pad size (200, 70)
407 (-37570, -25200), pad size (200, 70)
408 (36570, -25200), pad size (200, 70)
409 (37570, -25200), pad size (200, 70)
410 ....................................
411 cathode #240 DOWN half
412 (-1477, -28800), pad size (150, 60)
413    (875, -28800), pad size (150, 60)
414 (-36570, -28800), pad size (200, 70)
415 (-37570, -28800), pad size (200, 70)
416 (36570, -28800), pad size (200, 70)
417 (37570, -28800), pad size (200, 70)
418 ....................................
419 cathode #270 DOWN half
420 (-1477, -32400), pad size (150, 60)
421    (875, -32400), pad size (150, 60)
422 (-36570, -32400), pad size (200, 70)
423 (-37570, -32400), pad size (200, 70)
424 (36570, -32400), pad size (200, 70)
425 (37570, -32400), pad size (200, 70)
426 ....................................
427 cathode #290 DOWN half
428 (-1477, -34800), pad size (150, 60)
429    (875, -34800), pad size (150, 60)
430 (-36570, -34800), pad size (200, 70)
431 (-37570, -34800), pad size (200, 70)
432 (36570, -34800), pad size (200, 70)
433 (37570, -34800), pad size (200, 70)
434 ___________________________________________________
435 cathode #1 UP half 
436 (-1477, 120), pad size (150, 60)
437    (875, 120), pad size (150, 60)
438 (-36570, 120), pad size (200, 70)
439 (-37570, 120), pad size (200, 70)
440 (36570, 120), pad size (200, 70)
441 (37570, 120), pad size (200, 70)
442
443 cathode #2 UP half 
444 (-1477, 240), pad size (150, 60)
445    (875, 240), pad size (150, 60)
446 (-36570, 240), pad size (200, 70)
447 (-37570, 240), pad size (200, 70)
448 (36570, 240), pad size (200, 70)
449 (37570, 240), pad size (200, 70)
450
451 cathode #3 UP half 
452 (-1477, 360), pad size (150, 60)
453    (875, 360), pad size (150, 60)
454 (-36570, 360), pad size (200, 70)
455 (-37570, 360), pad size (200, 70)
456 (36570, 360), pad size (200, 70)
457 (37570, 360), pad size (200, 70)
458 .....................................
459 ......................................
460 ......................................
461 cathode #30 UP half
462 (-1477, 3600), pad size (150, 60)
463    (875, 3600), pad size (150, 60)
464 (-36570, 3600), pad size (200, 70)
465 (-37570, 3600), pad size (200, 70)
466 (36570, 3600), pad size (200, 70)
467 (37570, 3600), pad size (200, 70)
468 ......................................
469 cathode #60 UP half
470 (-1477, 7200), pad size (150, 60)
471    (875, 7200), pad size (150, 60)
472 (-36570, 7200), pad size (200, 70)
473 (-37570, 7200), pad size (200, 70)
474 (36570, 7200), pad size (200, 70)
475 (37570, 7200), pad size (200, 70)
476 ......................................
477 cathode #90 UP half
478 (-1477, 10800), pad size (150, 60)
479    (875, 10800), pad size (150, 60)
480 (-36570, 10800), pad size (200, 70)
481 (-37570, 10800), pad size (200, 70)
482 (36570, 10800), pad size (200, 70)
483 (37570, 10800), pad size (200, 70)
484 ......................................
485 cathode #120 UP half
486 (-1477, 14400), pad size (150, 60)
487    (875, 14400), pad size (150, 60)
488 (-36570, 14400), pad size (200, 70)
489 (-37570, 14400), pad size (200, 70)
490 (36570, 14400), pad size (200, 70)
491 (37570, 14400), pad size (200, 70)
492 ......................................
493 cathode #150 UP half
494 (-1477, 18000), pad size (150, 60)
495    (875, 18000), pad size (150, 60)
496 (-36570, 18000), pad size (200, 70)
497 (-37570, 18000), pad size (200, 70)
498 (36570, 18000), pad size (200, 70)
499 (37570, 18000), pad size (200, 70)
500 ......................................
501 cathode #180 UP half
502 (-1477, 21600), pad size (150, 60)
503    (875, 21600), pad size (150, 60)
504 (-36570, 21600), pad size (200, 70)
505 (-37570, 21600), pad size (200, 70)
506 (36570, 21600), pad size (200, 70)
507 (37570, 21600), pad size (200, 70)
508 ......................................
509 cathode #210 UP half
510 (-1477, 25200), pad size (150, 60)
511    (875, 25200), pad size (150, 60)
512 (-36570, 25200), pad size (200, 70)
513 (-37570, 25200), pad size (200, 70)
514 (36570, 25200), pad size (200, 70)
515 (37570, 25200), pad size (200, 70)
516 ......................................
517 cathode #240 UP half
518 (-1477, 28800), pad size (150, 60)
519    (875, 28800), pad size (150, 60)
520 (-36570, 28800), pad size (200, 70)
521 (-37570, 28800), pad size (200, 70)
522 (36570, 28800), pad size (200, 70)
523 (37570, 28800), pad size (200, 70)
524 ......................................
525 cathode #270 UP half
526 (-1477, 32400), pad size (150, 60)
527    (875, 32400), pad size (150, 60)
528 (-36570, 32400), pad size (200, 70)
529 (-37570, 32400), pad size (200, 70)
530 (36570, 32400), pad size (200, 70)
531 (37570, 32400), pad size (200, 70)
532 ......................................
533 cathode #290 UP half
534 (-1477, 34800), pad size (150, 60)
535    (875, 34800), pad size (150, 60)
536 (-36570, 34800), pad size (200, 70)
537 (-37570, 34800), pad size (200, 70)
538 (36570, 34800), pad size (200, 70)
539 (37570, 34800), pad size (200, 70)
540         Injectors (n-side)
541
542 Central line injectors (DOWN half)
543 (-1237, -660), pad size (150, 65)
544 (1115, -660), pad size (150, 65)
545 (37890, -660), pad size (100, 74)
546
547 Middle line injectors (DOWN half)
548 (-1237, -17460), pad size (150, 80)
549 (1115, -17460), pad size (150, 80)
550 (37890, -17460), pad size (100, 74)
551
552 Bottom line injectors (DOWN half)
553 (-1237, -34020), pad size (150, 80)
554 (1115, -34020), pad size (150, 80)
555 (37890, -34020), pad size (100, 74)
556 ___________________________________________
557 Central line injectors (UP half)
558 (-1237, 660), pad size (150, 65)
559 (1115, 660), pad size (150, 65)
560 (37890, 660), pad size (100, 74)
561
562 Middle line injectors (UP half)
563 (-1237, 17460), pad size (150, 80)
564 (1115, 17460), pad size (150, 80)
565 (37890, 17460), pad size (100, 74)
566
567 Bottom line injectors (UP half)
568 (-1237, 34020), pad size (150, 80)
569 (1115, 34020), pad size (150, 80)
570 (37890, 34020), pad size (100, 74)
571
572 Drift cathodes and injectors of p-side have the bonding pads with the same 
573 coordinates as for the n-side (when looking through the masks)
574
575         Cathodes of the collection zone (n-side)
576
577 cathode #291 (-40 V) DOWN half
578 (-38220, -35055), pad size (120, 160)
579 (38190, -34992), pad size (120, 145)
580
581 GRID cathode (-15 V) DOWN half
582 (-37988, -35085), pad size (144, 210)
583   (37988, -35085), pad size (144, 210)
584
585 cathode #292 (-30 V) DOWN half
586 (-38245, -35290), pad size (100, 170)
587 (38210, -35242), pad size (150, 215)
588
589 cathode #293 (-15 V) DOWN half
590 (-38055, -35460), pad size (690, 70)
591 (36488, -35460), pad size (3805, 70)
592
593 n+ bulk contact (GND) DOWN half
594 (-38300, -36050), pad size (1000, 395)
595 (38300, -36050), pad size (1000, 395)
596
597 bonding pad of the last integrated resistor DOWN half
598 /it has to be connected to the GND/
599 (-38190, -35620) pad size (160, 110)
600 ________________________________________________ 
601 cathode #291 (-40 V) UP half
602 (-38220, 35055), pad size (120, 160)
603 (38190, 34992), pad size (120, 145)
604
605 GRID cathode (-15 V) UP half
606 (-37988, 35085), pad size (144, 210)
607   (37988, 35085), pad size (144, 210)
608
609 cathode #292 (-30 V) UP half
610 (-38245, 35290), pad size (100, 170)
611 (38210, 35242), pad size (150, 215)
612
613 cathode #293 (-15 V) UP half
614 (-38055, 35460), pad size (690, 70)
615 (36488, 35460), pad size (3805, 70)
616
617 n+ bulk contact (GND) UP half
618 (-38300, 36050), pad size (1000, 395)
619 (38300, 36050), pad size (1000, 395)
620
621 bonding pad of the last integrated resistor UP half
622 /it has to be connected to the GND/
623 (-38190, 35620) pad size (160, 110)
624
625 Cathodes of the collection zone (p-side)
626
627 cathode #291 (-40 V) DOWN half
628 (-38215, -35055), pad size (120, 160)
629 (38190, -34992), pad size (120, 145)
630
631 cathode W1 (-60 V) DOWN half
632 (-38000, -35110), pad size (140, 240)
633  (38000, -35110), pad size (140, 240)
634
635 cathode W2 (-80 V) DOWN half
636 ( 0, -35090), pad size (75600, 110)
637
638 cathode #292 (-40 V) DOWN half
639 (-38220, -35290), pad size (150, 170)
640 (38210, -35242), pad size (150, 215)
641
642 p+ bulk contact (GND) DOWN half
643 (-38300, -36050), pad size (1000, 395)
644 (38300, -36050), pad size (1000, 395)
645
646 It is necessary to connect cathode #291 to cathode #292 in order to
647 close the integrated divider to p+ bulk contact (GND).
648
649 _______________________________________________
650 cathode #291 (-40 V) UP half
651 (-38215, 35055), pad size (120, 160)
652 (38190, 34992), pad size (120, 145)
653
654 cathode W1 (-60 V) UP half
655 (-38000, 35110), pad size (140, 240)
656  (38000, 35110), pad size (140, 240)
657
658 cathode W2 (-80 V) UP half
659 ( 0, 35090), pad size (75600, 110)
660
661 cathode #292 (-40 V) UP half
662 (-38220, 35290), pad size (150, 170)
663 (38210, 35242), pad size (150, 215)
664
665 p+ bulk contact (GND) UP half
666 (-38300, 36050), pad size (1000, 395)
667 (38300, 36050), pad size (1000, 395)
668
669 It is necessary to connect cathode #291 to cathode #292 in order to
670 close the integrated divider to p+ bulk contact (GND).
671
672         Anodes (n-side)
673 There are 256 anodes to be bonded to the inputs of front-end electronics. In 
674 addition there are 2 anodes (one at the left edge and one at the right edge 
675 of the anode array) that have to be bonded to the ground. I call these 2 
676 anodes #L and #R. The pitch of all anodes is 294 micrometers.
677
678                 DOWN half anodes
679 #L             (-37779, -35085), pad size (184, 140)
680 #1             (-37485, -35085), pad size (184, 140)
681 .........................................
682 .........................................
683 #256.............(37485, -35085), pad size (184, 140)
684 #R              (37779, -35085), pad size (184, 140)
685 _____________________________________________
686                 UP half anodes
687 #L             (-37779, 35085), pad size (184, 140)
688 #1             (-37485, 35085), pad size (184, 140)
689 .........................................
690 .........................................
691 #256.............(37485, 35085), pad size (184, 140)
692 #R              (37779, 35085), pad size (184, 140)
693 */
694 ////////////////////////////////////////////////////////////////////////
695 //   const Float_t kDxyz[]   = {3.6250,0.01499,4.3794};//cm. (Geant 3.12 units)
696                                       // Size of sensitive region of detector
697     const Float_t kPeriod   = 25.0E-09; // 40 MHz sampling frequence
698     const Float_t kVelocity = 5.46875E+03; // cm/s drift velocity
699     const Float_t kAnodeXL  = -3.5085; // cm location in x of anodes left side
700     const Float_t kAnodeXR  =  3.5085; // cm location in x of anodes right side
701     const Int_t   kNAnodes  = 256;  // nuber of anodes connected
702     const Float_t kAnodePitch = 0.0294; // cm
703     const Float_t kAnodesZ  = -3.7485; // cm Starting location of anodes in z
704     Float_t anodeLowEdges[kNAnodes+1];
705     Int_t i;
706
707     if(npar<3){
708         Error("AliITSgeomSDD256","npar=%d<3. array par must be [3] or greater",
709               npar);
710         return;
711     } // end if
712    anodeLowEdges[0] = kAnodesZ;
713     for(i=0;i<kNAnodes;i++)anodeLowEdges[i+1] = kAnodePitch+anodeLowEdges[i];
714     AliITSgeomSDD::ResetSDD(par,kPeriod,kVelocity,kAnodeXL,kAnodeXR,
715                             kNAnodes+1,anodeLowEdges,
716                             kNAnodes+1,anodeLowEdges);
717 }
718 //________________________________________________________________________
719 ostream &operator<<(ostream &os,AliITSgeomSDD256 &p){
720 ////////////////////////////////////////////////////////////////////////
721 // Standard output streaming function.
722 ////////////////////////////////////////////////////////////////////////
723
724     p.Print(&os);
725     return os;
726 }
727 //----------------------------------------------------------------------
728 istream &operator>>(istream &is,AliITSgeomSDD256 &r){
729 ////////////////////////////////////////////////////////////////////////
730 // Standard input streaming function.
731 ////////////////////////////////////////////////////////////////////////
732
733     r.Read(&is);
734     return is;
735 }
736
737 //======================================================================
738
739 ClassImp(AliITSgeomSDD300)
740
741 AliITSgeomSDD300::AliITSgeomSDD300() : AliITSgeomSDD(){
742 ////////////////////////////////////////////////////////////////////////
743 //    default constructor
744 ////////////////////////////////////////////////////////////////////////
745     const Float_t kDxyz[] = {3.500,0.014,3.763};//cm.
746     const Float_t kPeriod = 25.0E-09; // 40 MHz
747     const Float_t kVelocity = 5.46875E+3; // cm/s
748     const Int_t kNAnodes = 300; // number of anodes
749     const Float_t kAnodeXL = -3.500; // cm
750     const Float_t kAnodeXR = +3.500; // cm
751     const Float_t kAnodesZ = -3.75; // cm
752     Float_t anodeLowEdges[kNAnodes+1];
753     const Float_t kanode = 0.0250;// cm anode separation.
754     Int_t i;
755
756     anodeLowEdges[0] = kAnodesZ;
757     for(i=0;i<kNAnodes;i++)anodeLowEdges[i+1] = kanode+anodeLowEdges[i];
758     AliITSgeomSDD::ResetSDD(kDxyz,kPeriod,kVelocity,kAnodeXL,kAnodeXR,
759                             kNAnodes+1,anodeLowEdges,
760                             kNAnodes+1,anodeLowEdges);
761 }
762 //________________________________________________________________________
763 ostream &operator<<(ostream &os,AliITSgeomSDD300 &p){
764 ////////////////////////////////////////////////////////////////////////
765 // Standard output streaming function.
766 ////////////////////////////////////////////////////////////////////////
767
768     p.Print(&os);
769     return os;
770 }
771 //----------------------------------------------------------------------
772 istream &operator>>(istream &is,AliITSgeomSDD300 &r){
773 ////////////////////////////////////////////////////////////////////////
774 // Standard input streaming function.
775 ////////////////////////////////////////////////////////////////////////
776
777     r.Read(&is);
778     return is;
779 }
780 //----------------------------------------------------------------------