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