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