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