1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 Revision 1.14 2001/10/19 21:32:35 nilsen
19 Minor changes to remove compliation warning on gcc 2.92.2 compiler, and
20 cleanded up a little bit of code.
22 Revision 1.13 2001/10/12 22:07:20 nilsen
23 A patch for C++ io manipulation functions so that they will work both
24 with GNU gcc 2.96 and GNU gcc 3.01 compilers. Needs to be tested with
27 Revision 1.12 2001/08/24 21:06:37 nilsen
28 Added more documentation, fixed up some coding violations, and some
31 Revision 1.11 2001/05/16 08:17:49 hristov
32 Bug fixed in the StepManager to account for the difference in the geometry
33 tree for the ITS pixels. This fixes both the funny distribution of pixel
34 coordinates and the missing hits/digits/points in many sectors of the ITS
35 pixel barrel. Also included is a patch to properly get and use the detector
36 dimensions through out the ITS code. (B.Nilsen)
38 Revision 1.10 2001/02/09 00:00:57 nilsen
39 Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
40 bugs in iostream based streamers used to read and write .det files. Fixed
41 some detector sizes. Fixed bugs in some default-special constructors.
43 Revision 1.9 2001/02/03 00:00:30 nilsen
44 New version of AliITSgeom and related files. Now uses automatic streamers,
45 set up for new formatted .det file which includes detector information.
46 Additional smaller modifications are still to come.
48 Revision 1.8 2000/10/02 16:32:35 barbera
49 Forward declaration added
51 Revision 1.2.4.8 2000/10/02 15:52:05 barbera
52 Forward declaration added
54 Revision 1.7 2000/07/10 16:07:18 fca
55 Release version of ITS code
57 Revision 1.2.4.2 2000/03/04 23:55:35 nilsen
58 Fixed up comments/documentation.
60 Revision 1.2.4.1 2000/01/12 19:03:32 nilsen
61 This is the version of the files after the merging done in December 1999.
62 See the ReadMe110100.txt file for details
64 Revision 1.2 1999/09/29 09:24:20 fca
65 Introduction of the Copyright and cvs Log
69 ////////////////////////////////////////////////////////////////////////
70 // This class is for the Silicon Drift Detector, SDD, specific geometry.
71 // It is being replaced by AliITSsegmentationSDD class. This file also
72 // constains classes derived from AliITSgeomSDD which do nothing but
73 // initilize this one with predefined values.
74 ////////////////////////////////////////////////////////////////////////
81 #include "AliITSgeomSDD.h"
83 ClassImp(AliITSgeomSDD)
84 AliITSgeomSDD::AliITSgeomSDD(){
85 ////////////////////////////////////////////////////////////////////////
86 // default constructor
87 ////////////////////////////////////////////////////////////////////////
88 // const Float_t kDx = 3.500;//cm. (Geant 3.12 units) Orthonormal to y and z
89 // const Float_t kDy = 0.014;//cm. (Geant 3.12 units) Radialy from the Beam
90 // const Float_t kDz = 3.763;//cm. (Geant 3.12 units) Allong the Beam Pipe
92 // cout << "AliITSgeomSDD default creator called: start" << endl;
102 // cout << "AliITSgeomSDD default creator called: end" << endl;
104 //________________________________________________________________________
105 AliITSgeomSDD::AliITSgeomSDD(const Float_t *box,Float_t per,Float_t vel,
106 Float_t axL,Float_t axR,
107 Int_t nAL,Float_t *leL,
108 Int_t nAR,Float_t *leR){
109 ////////////////////////////////////////////////////////////////////////
110 // Standard constructor
111 ////////////////////////////////////////////////////////////////////////
121 ResetSDD(box,per,vel,axL,axR,nAL,leL,nAR,leR);
123 //________________________________________________________________________
124 void AliITSgeomSDD::ResetSDD(const Float_t *box,Float_t per,Float_t vel,
125 Float_t axL,Float_t axR,
126 Int_t nAL,Float_t *leL,
127 Int_t nAR,Float_t *leR){
128 ////////////////////////////////////////////////////////////////////////
130 ////////////////////////////////////////////////////////////////////////
139 // if(fAnodeLowEdgeL!=0) delete fAnodeLowEdgeL;
140 fAnodeLowEdgeL = new Float_t[fNAnodesL];
141 // if(fAnodeLowEdgeR!=0) delete fAnodeLowEdgeR;
142 fAnodeLowEdgeR = new Float_t[fNAnodesR];
143 for(i=0;i<fNAnodesL;i++) fAnodeLowEdgeL[i] = leL[i];
144 for(i=0;i<fNAnodesR;i++) fAnodeLowEdgeR[i] = leR[i];
145 fShapeSDD = new TBRIK("ActiveSDD","Active volume of SDD","SDD SI DET",
146 box[0],box[1],box[2]);
148 //________________________________________________________________________
149 AliITSgeomSDD::~AliITSgeomSDD(){
152 if(fShapeSDD!=0) delete fShapeSDD;
153 if(fAnodeLowEdgeL!=0) delete [] fAnodeLowEdgeL;
154 if(fAnodeLowEdgeR!=0) delete [] fAnodeLowEdgeR;
165 //________________________________________________________________________
166 AliITSgeomSDD::AliITSgeomSDD(AliITSgeomSDD &source){
170 if(this==&source) return;
171 this->fShapeSDD = new TBRIK(*(source.fShapeSDD));
172 this->fPeriod = source.fPeriod;
173 this->fDvelocity = source.fDvelocity;
174 this->fNAnodesL = source.fNAnodesL;
175 this->fNAnodesR = source.fNAnodesR;
176 this->fAnodeXL = source.fAnodeXL;
177 this->fAnodeXR = source.fAnodeXR;
178 if(fAnodeLowEdgeL!=0) delete fAnodeLowEdgeL;
179 this->fAnodeLowEdgeL = new Float_t[fNAnodesL];
180 if(fAnodeLowEdgeR!=0) delete fAnodeLowEdgeR;
181 this->fAnodeLowEdgeR = new Float_t[fNAnodesR];
182 for(i=0;i<fNAnodesL;i++)this->fAnodeLowEdgeL[i] = source.fAnodeLowEdgeL[i];
183 for(i=0;i<fNAnodesR;i++)this->fAnodeLowEdgeR[i] = source.fAnodeLowEdgeR[i];
186 //________________________________________________________________________
187 AliITSgeomSDD& AliITSgeomSDD::operator=(AliITSgeomSDD &source){
191 if(this==&source) return *this;
192 this->fShapeSDD = new TBRIK(*(source.fShapeSDD));
193 this->fPeriod = source.fPeriod;
194 this->fDvelocity = source.fDvelocity;
195 this->fNAnodesL = source.fNAnodesL;
196 this->fNAnodesR = source.fNAnodesR;
197 this->fNAnodesR = source.fNAnodesR;
198 this->fAnodeXL = source.fAnodeXL;
199 this->fAnodeXR = source.fAnodeXR;
200 if(fAnodeLowEdgeL!=0) delete fAnodeLowEdgeL;
201 this->fAnodeLowEdgeL = new Float_t[fNAnodesL];
202 if(fAnodeLowEdgeR!=0) delete fAnodeLowEdgeR;
203 this->fAnodeLowEdgeR = new Float_t[fNAnodesR];
204 for(i=0;i<fNAnodesL;i++)this->fAnodeLowEdgeL[i] = source.fAnodeLowEdgeL[i];
205 for(i=0;i<fNAnodesR;i++)this->fAnodeLowEdgeR[i] = source.fAnodeLowEdgeR[i];
208 //______________________________________________________________________
209 void AliITSgeomSDD::Local2Det(Float_t xl,Float_t zl,Int_t &a,Int_t &t,Int_t &s){
210 // Give the local detector coordinate it returns the anode number, time
211 // bucket, and detector side.
215 if(zl<fAnodeLowEdgeR[0]) i=-1;
216 else for(i=0;i<fNAnodesR;i++) if(zl<fAnodeLowEdgeR[i]) break;
220 if(zl<fAnodeLowEdgeL[0]) i=-1;
221 else for(i=0;i<fNAnodesL;i++) if(zl<fAnodeLowEdgeL[i]) break;
225 if(zl<fAnodeLowEdgeR[0]) i=-1;
226 else for(i=0;i<fNAnodesR;i++) if(zl<fAnodeLowEdgeR[i]) break;
228 if(zl<fAnodeLowEdgeL[0]) i=-1;
229 else for(i=0;i<fNAnodesL;i++) if(zl<fAnodeLowEdgeL[i]) break;
232 t = (Int_t)TMath::Abs((GetAnodeX(a,s)-xl)/fDvelocity/fPeriod);
235 //______________________________________________________________________
236 void AliITSgeomSDD::Det2Local(Int_t a,Int_t t,Int_t s,Float_t &xl,Float_t &zl){
237 // Give the anode number, time bucket, and detector side, it returns the
238 // local detector coordinate.
240 zl = 0.5*GetAnodeZ(a,s);
242 xl = GetAnodeX(a,s)+(t+0.5)*fPeriod*fDvelocity;
244 xl = GetAnodeX(a,s)-(t+0.5)*fPeriod*fDvelocity;
248 //______________________________________________________________________
249 void AliITSgeomSDD::Print(ostream *os) const {
250 ////////////////////////////////////////////////////////////////////////
251 // Standard output format for this class.
252 ////////////////////////////////////////////////////////////////////////
264 fmt = os->setf(ios::scientific); // set scientific floating point output
265 *os << "TBRIK" << " ";
266 *os << setprecision(16) << GetDx() << " ";
267 *os << setprecision(16) << GetDy() << " ";
268 *os << setprecision(16) << GetDz() << " ";
269 *os << setprecision(16) << fPeriod << " ";
270 *os << setprecision(16) << fDvelocity << " ";
271 *os << fNAnodesL << " ";
272 *os << fNAnodesR << " ";
273 *os << fAnodeXL << " ";
274 *os << fAnodeXR << " ";
275 for(i=0;i<fNAnodesL;i++) *os <<setprecision(16)<<fAnodeLowEdgeL[i]<< " ";
276 for(i=0;i<fNAnodesR;i++) *os <<setprecision(16)<<fAnodeLowEdgeR[i]<< " ";
278 os->flags(fmt); // reset back to old formating.
281 //______________________________________________________________________
282 void AliITSgeomSDD::Read(istream *is){
283 ////////////////////////////////////////////////////////////////////////
284 // Standard input format for this class.
285 ////////////////////////////////////////////////////////////////////////
291 *is >> dx >> dy >> dz;
292 if(fShapeSDD!=0) delete fShapeSDD;
293 fShapeSDD = new TBRIK("ActiveSDD","Active volume of SDD","SDD SI DET",
295 *is >> fPeriod >> fDvelocity >> fNAnodesL >> fNAnodesR;
296 *is >> fAnodeXL >> fAnodeXR;
297 if(fAnodeLowEdgeL!=0) delete fAnodeLowEdgeL;
298 this->fAnodeLowEdgeL = new Float_t[fNAnodesL];
299 if(fAnodeLowEdgeR!=0) delete fAnodeLowEdgeR;
300 this->fAnodeLowEdgeR = new Float_t[fNAnodesR];
301 for(i=0;i<fNAnodesL;i++) *is >> fAnodeLowEdgeL[i];
302 for(i=0;i<fNAnodesR;i++) *is >> fAnodeLowEdgeR[i];
305 //----------------------------------------------------------------------
306 ostream &operator<<(ostream &os,AliITSgeomSDD &p){
307 ////////////////////////////////////////////////////////////////////////
308 // Standard output streaming function.
309 ////////////////////////////////////////////////////////////////////////
314 //----------------------------------------------------------------------
315 istream &operator>>(istream &is,AliITSgeomSDD &r){
316 ////////////////////////////////////////////////////////////////////////
317 // Standard input streaming function.
318 ////////////////////////////////////////////////////////////////////////
323 //======================================================================
326 Revision 1.14 2001/10/19 21:32:35 nilsen
327 Minor changes to remove compliation warning on gcc 2.92.2 compiler, and
328 cleanded up a little bit of code.
330 Revision 1.13 2001/10/12 22:07:20 nilsen
331 A patch for C++ io manipulation functions so that they will work both
332 with GNU gcc 2.96 and GNU gcc 3.01 compilers. Needs to be tested with
335 Revision 1.12 2001/08/24 21:06:37 nilsen
336 Added more documentation, fixed up some coding violations, and some
337 forward declorations.
339 Revision 1.11 2001/05/16 08:17:49 hristov
340 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)
342 Revision 1.10 2001/02/09 00:00:57 nilsen
343 Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
344 bugs in iostream based streamers used to read and write .det files. Fixed
345 some detector sizes. Fixed bugs in some default-special constructors.
347 Revision 1.9 2001/02/03 00:00:30 nilsen
348 New version of AliITSgeom and related files. Now uses automatic streamers,
349 set up for new formatted .det file which includes detector information.
350 Additional smaller modifications are still to come.
353 //#include <iostream.h>
356 //#include "AliITSgeomSDD256.h"
358 ClassImp(AliITSgeomSDD256)
360 AliITSgeomSDD256::AliITSgeomSDD256() : AliITSgeomSDD(){
361 // Default Constructor
363 //----------------------------------------------------------------------
364 AliITSgeomSDD256::AliITSgeomSDD256(Int_t npar,const Float_t *par) :
366 ////////////////////////////////////////////////////////////////////////
369 Pads for probe cards in ALICE-D2 /05.03.2000/
370 (X,Y) coordinates are quoted in microns and referred to the centers of
371 bonding pads. (0, 0) corrispond to the center of the detector.
373 left is for negative X, right is for positive X;
374 DOWN half is for negative Y, UP half is for positive Y.
376 Detector size: X= 87588 micrometers; Y= 72500 micrometers.
378 LEFT UP: (-43794, 36250)
379 RIGHT UP: (43794, 36250)
380 LEFT DOWN: (-43794, -36250)
381 RIGHT DOWN: (43794, -36250)
383 Drift cathodes (n-side)
386 (-1477, 0), pad size (150, 60)
387 (875, 0), pad size (150, 60)
388 (-36570, 0), pad size (200, 70)
389 (-37570, 0), pad size (200, 70)
390 (36570, 0), pad size (200, 70)
391 (37570, 0), pad size (200, 70)
394 (-1477, -120), pad size (150, 60)
395 (875, -120), pad size (150, 60)
396 (-36570, -120), pad size (200, 70)
397 (-37570, -120), pad size (200, 70)
398 (36570, -120), pad size (200, 70)
399 (37570, -120), pad size (200, 70)
402 (-1477, -240), pad size (150, 60)
403 (875, -240), pad size (150, 60)
404 (-36570, -240), pad size (200, 70)
405 (-37570, -240), pad size (200, 70)
406 (36570, -240), pad size (200, 70)
407 (37570, -240), pad size (200, 70)
410 (-1477, -360), pad size (150, 60)
411 (875, -360), pad size (150, 60)
412 (-36570, -360), pad size (200, 70)
413 (-37570, -360), pad size (200, 70)
414 (36570, -360), pad size (200, 70)
415 (37570, -360), pad size (200, 70)
416 .....................................
417 ......................................
418 ......................................
419 cathode #30 DOWN half
420 (-1477, -3600), pad size (150, 60)
421 (875, -3600), pad size (150, 60)
422 (-36570, -3600), pad size (200, 70)
423 (-37570, -3600), pad size (200, 70)
424 (36570, -3600), pad size (200, 70)
425 (37570, -3600), pad size (200, 70)
426 ...................................
427 cathode #60 DOWN half
428 (-1477, -7200), pad size (150, 60)
429 (875, -7200), pad size (150, 60)
430 (-36570, -7200), pad size (200, 70)
431 (-37570, -7200), pad size (200, 70)
432 (36570, -7200), pad size (200, 70)
433 (37570, -7200), pad size (200, 70)
434 ....................................
435 cathode #90 DOWN half
436 (-1477, -10800), pad size (150, 60)
437 (875, -10800), pad size (150, 60)
438 (-36570, -10800), pad size (200, 70)
439 (-37570, -10800), pad size (200, 70)
440 (36570, -10800), pad size (200, 70)
441 (37570, -10800), pad size (200, 70)
442 ....................................
443 cathode #120 DOWN half
444 (-1477, -14400), pad size (150, 60)
445 (875, -14400), pad size (150, 60)
446 (-36570, -14400), pad size (200, 70)
447 (-37570, -14400), pad size (200, 70)
448 (36570, -14400), pad size (200, 70)
449 (37570, -14400), pad size (200, 70)
450 ....................................
451 cathode #150 DOWN half
452 (-1477, -18000), pad size (150, 60)
453 (875, -18000), pad size (150, 60)
454 (-36570, -18000), pad size (200, 70)
455 (-37570, -18000), pad size (200, 70)
456 (36570, -18000), pad size (200, 70)
457 (37570, -18000), pad size (200, 70)
458 ....................................
459 cathode #180 DOWN half
460 (-1477, -21600), pad size (150, 60)
461 (875, -21600), pad size (150, 60)
462 (-36570, -21600), pad size (200, 70)
463 (-37570, -21600), pad size (200, 70)
464 (36570, -21600), pad size (200, 70)
465 (37570, -21600), pad size (200, 70)
466 ....................................
467 cathode #210 DOWN half
468 (-1477, -25200), pad size (150, 60)
469 (875, -25200), pad size (150, 60)
470 (-36570, -25200), pad size (200, 70)
471 (-37570, -25200), pad size (200, 70)
472 (36570, -25200), pad size (200, 70)
473 (37570, -25200), pad size (200, 70)
474 ....................................
475 cathode #240 DOWN half
476 (-1477, -28800), pad size (150, 60)
477 (875, -28800), pad size (150, 60)
478 (-36570, -28800), pad size (200, 70)
479 (-37570, -28800), pad size (200, 70)
480 (36570, -28800), pad size (200, 70)
481 (37570, -28800), pad size (200, 70)
482 ....................................
483 cathode #270 DOWN half
484 (-1477, -32400), pad size (150, 60)
485 (875, -32400), pad size (150, 60)
486 (-36570, -32400), pad size (200, 70)
487 (-37570, -32400), pad size (200, 70)
488 (36570, -32400), pad size (200, 70)
489 (37570, -32400), pad size (200, 70)
490 ....................................
491 cathode #290 DOWN half
492 (-1477, -34800), pad size (150, 60)
493 (875, -34800), pad size (150, 60)
494 (-36570, -34800), pad size (200, 70)
495 (-37570, -34800), pad size (200, 70)
496 (36570, -34800), pad size (200, 70)
497 (37570, -34800), pad size (200, 70)
498 ___________________________________________________
500 (-1477, 120), pad size (150, 60)
501 (875, 120), pad size (150, 60)
502 (-36570, 120), pad size (200, 70)
503 (-37570, 120), pad size (200, 70)
504 (36570, 120), pad size (200, 70)
505 (37570, 120), pad size (200, 70)
508 (-1477, 240), pad size (150, 60)
509 (875, 240), pad size (150, 60)
510 (-36570, 240), pad size (200, 70)
511 (-37570, 240), pad size (200, 70)
512 (36570, 240), pad size (200, 70)
513 (37570, 240), pad size (200, 70)
516 (-1477, 360), pad size (150, 60)
517 (875, 360), pad size (150, 60)
518 (-36570, 360), pad size (200, 70)
519 (-37570, 360), pad size (200, 70)
520 (36570, 360), pad size (200, 70)
521 (37570, 360), pad size (200, 70)
522 .....................................
523 ......................................
524 ......................................
526 (-1477, 3600), pad size (150, 60)
527 (875, 3600), pad size (150, 60)
528 (-36570, 3600), pad size (200, 70)
529 (-37570, 3600), pad size (200, 70)
530 (36570, 3600), pad size (200, 70)
531 (37570, 3600), pad size (200, 70)
532 ......................................
534 (-1477, 7200), pad size (150, 60)
535 (875, 7200), pad size (150, 60)
536 (-36570, 7200), pad size (200, 70)
537 (-37570, 7200), pad size (200, 70)
538 (36570, 7200), pad size (200, 70)
539 (37570, 7200), pad size (200, 70)
540 ......................................
542 (-1477, 10800), pad size (150, 60)
543 (875, 10800), pad size (150, 60)
544 (-36570, 10800), pad size (200, 70)
545 (-37570, 10800), pad size (200, 70)
546 (36570, 10800), pad size (200, 70)
547 (37570, 10800), pad size (200, 70)
548 ......................................
550 (-1477, 14400), pad size (150, 60)
551 (875, 14400), pad size (150, 60)
552 (-36570, 14400), pad size (200, 70)
553 (-37570, 14400), pad size (200, 70)
554 (36570, 14400), pad size (200, 70)
555 (37570, 14400), pad size (200, 70)
556 ......................................
558 (-1477, 18000), pad size (150, 60)
559 (875, 18000), pad size (150, 60)
560 (-36570, 18000), pad size (200, 70)
561 (-37570, 18000), pad size (200, 70)
562 (36570, 18000), pad size (200, 70)
563 (37570, 18000), pad size (200, 70)
564 ......................................
566 (-1477, 21600), pad size (150, 60)
567 (875, 21600), pad size (150, 60)
568 (-36570, 21600), pad size (200, 70)
569 (-37570, 21600), pad size (200, 70)
570 (36570, 21600), pad size (200, 70)
571 (37570, 21600), pad size (200, 70)
572 ......................................
574 (-1477, 25200), pad size (150, 60)
575 (875, 25200), pad size (150, 60)
576 (-36570, 25200), pad size (200, 70)
577 (-37570, 25200), pad size (200, 70)
578 (36570, 25200), pad size (200, 70)
579 (37570, 25200), pad size (200, 70)
580 ......................................
582 (-1477, 28800), pad size (150, 60)
583 (875, 28800), pad size (150, 60)
584 (-36570, 28800), pad size (200, 70)
585 (-37570, 28800), pad size (200, 70)
586 (36570, 28800), pad size (200, 70)
587 (37570, 28800), pad size (200, 70)
588 ......................................
590 (-1477, 32400), pad size (150, 60)
591 (875, 32400), pad size (150, 60)
592 (-36570, 32400), pad size (200, 70)
593 (-37570, 32400), pad size (200, 70)
594 (36570, 32400), pad size (200, 70)
595 (37570, 32400), pad size (200, 70)
596 ......................................
598 (-1477, 34800), pad size (150, 60)
599 (875, 34800), pad size (150, 60)
600 (-36570, 34800), pad size (200, 70)
601 (-37570, 34800), pad size (200, 70)
602 (36570, 34800), pad size (200, 70)
603 (37570, 34800), pad size (200, 70)
606 Central line injectors (DOWN half)
607 (-1237, -660), pad size (150, 65)
608 (1115, -660), pad size (150, 65)
609 (37890, -660), pad size (100, 74)
611 Middle line injectors (DOWN half)
612 (-1237, -17460), pad size (150, 80)
613 (1115, -17460), pad size (150, 80)
614 (37890, -17460), pad size (100, 74)
616 Bottom line injectors (DOWN half)
617 (-1237, -34020), pad size (150, 80)
618 (1115, -34020), pad size (150, 80)
619 (37890, -34020), pad size (100, 74)
620 ___________________________________________
621 Central line injectors (UP half)
622 (-1237, 660), pad size (150, 65)
623 (1115, 660), pad size (150, 65)
624 (37890, 660), pad size (100, 74)
626 Middle line injectors (UP half)
627 (-1237, 17460), pad size (150, 80)
628 (1115, 17460), pad size (150, 80)
629 (37890, 17460), pad size (100, 74)
631 Bottom line injectors (UP half)
632 (-1237, 34020), pad size (150, 80)
633 (1115, 34020), pad size (150, 80)
634 (37890, 34020), pad size (100, 74)
636 Drift cathodes and injectors of p-side have the bonding pads with the same
637 coordinates as for the n-side (when looking through the masks)
639 Cathodes of the collection zone (n-side)
641 cathode #291 (-40 V) DOWN half
642 (-38220, -35055), pad size (120, 160)
643 (38190, -34992), pad size (120, 145)
645 GRID cathode (-15 V) DOWN half
646 (-37988, -35085), pad size (144, 210)
647 (37988, -35085), pad size (144, 210)
649 cathode #292 (-30 V) DOWN half
650 (-38245, -35290), pad size (100, 170)
651 (38210, -35242), pad size (150, 215)
653 cathode #293 (-15 V) DOWN half
654 (-38055, -35460), pad size (690, 70)
655 (36488, -35460), pad size (3805, 70)
657 n+ bulk contact (GND) DOWN half
658 (-38300, -36050), pad size (1000, 395)
659 (38300, -36050), pad size (1000, 395)
661 bonding pad of the last integrated resistor DOWN half
662 /it has to be connected to the GND/
663 (-38190, -35620) pad size (160, 110)
664 ________________________________________________
665 cathode #291 (-40 V) UP half
666 (-38220, 35055), pad size (120, 160)
667 (38190, 34992), pad size (120, 145)
669 GRID cathode (-15 V) UP half
670 (-37988, 35085), pad size (144, 210)
671 (37988, 35085), pad size (144, 210)
673 cathode #292 (-30 V) UP half
674 (-38245, 35290), pad size (100, 170)
675 (38210, 35242), pad size (150, 215)
677 cathode #293 (-15 V) UP half
678 (-38055, 35460), pad size (690, 70)
679 (36488, 35460), pad size (3805, 70)
681 n+ bulk contact (GND) UP half
682 (-38300, 36050), pad size (1000, 395)
683 (38300, 36050), pad size (1000, 395)
685 bonding pad of the last integrated resistor UP half
686 /it has to be connected to the GND/
687 (-38190, 35620) pad size (160, 110)
689 Cathodes of the collection zone (p-side)
691 cathode #291 (-40 V) DOWN half
692 (-38215, -35055), pad size (120, 160)
693 (38190, -34992), pad size (120, 145)
695 cathode W1 (-60 V) DOWN half
696 (-38000, -35110), pad size (140, 240)
697 (38000, -35110), pad size (140, 240)
699 cathode W2 (-80 V) DOWN half
700 ( 0, -35090), pad size (75600, 110)
702 cathode #292 (-40 V) DOWN half
703 (-38220, -35290), pad size (150, 170)
704 (38210, -35242), pad size (150, 215)
706 p+ bulk contact (GND) DOWN half
707 (-38300, -36050), pad size (1000, 395)
708 (38300, -36050), pad size (1000, 395)
710 It is necessary to connect cathode #291 to cathode #292 in order to
711 close the integrated divider to p+ bulk contact (GND).
713 _______________________________________________
714 cathode #291 (-40 V) UP half
715 (-38215, 35055), pad size (120, 160)
716 (38190, 34992), pad size (120, 145)
718 cathode W1 (-60 V) UP half
719 (-38000, 35110), pad size (140, 240)
720 (38000, 35110), pad size (140, 240)
722 cathode W2 (-80 V) UP half
723 ( 0, 35090), pad size (75600, 110)
725 cathode #292 (-40 V) UP half
726 (-38220, 35290), pad size (150, 170)
727 (38210, 35242), pad size (150, 215)
729 p+ bulk contact (GND) UP half
730 (-38300, 36050), pad size (1000, 395)
731 (38300, 36050), pad size (1000, 395)
733 It is necessary to connect cathode #291 to cathode #292 in order to
734 close the integrated divider to p+ bulk contact (GND).
737 There are 256 anodes to be bonded to the inputs of front-end electronics. In
738 addition there are 2 anodes (one at the left edge and one at the right edge
739 of the anode array) that have to be bonded to the ground. I call these 2
740 anodes #L and #R. The pitch of all anodes is 294 micrometers.
743 #L (-37779, -35085), pad size (184, 140)
744 #1 (-37485, -35085), pad size (184, 140)
745 .........................................
746 .........................................
747 #256.............(37485, -35085), pad size (184, 140)
748 #R (37779, -35085), pad size (184, 140)
749 _____________________________________________
751 #L (-37779, 35085), pad size (184, 140)
752 #1 (-37485, 35085), pad size (184, 140)
753 .........................................
754 .........................................
755 #256.............(37485, 35085), pad size (184, 140)
756 #R (37779, 35085), pad size (184, 140)
758 ////////////////////////////////////////////////////////////////////////
759 // const Float_t kDxyz[] = {3.6250,0.01499,4.3794};//cm. (Geant 3.12 units)
760 // Size of sensitive region of detector
761 const Float_t kPeriod = 25.0E-09; // 40 MHz sampling frequence
762 const Float_t kVelocity = 5.46875E+03; // cm/s drift velocity
763 const Float_t kAnodeXL = -3.5085; // cm location in x of anodes left side
764 const Float_t kAnodeXR = 3.5085; // cm location in x of anodes right side
765 const Int_t kNAnodes = 256; // nuber of anodes connected
766 const Float_t kAnodePitch = 0.0294; // cm
767 const Float_t kAnodesZ = -3.7485; // cm Starting location of anodes in z
768 Float_t anodeLowEdges[kNAnodes+1];
771 // cout << "AliITSgeomSDD256 default creator called: start" << end;
772 anodeLowEdges[0] = kAnodesZ;
773 for(i=0;i<kNAnodes;i++)anodeLowEdges[i+1] = kAnodePitch+anodeLowEdges[i];
774 AliITSgeomSDD::ResetSDD(par,kPeriod,kVelocity,kAnodeXL,kAnodeXR,
775 kNAnodes+1,anodeLowEdges,
776 kNAnodes+1,anodeLowEdges);
777 // cout << "AliITSgeomSDD256 default creator called: end" << endl;
779 //________________________________________________________________________
780 ostream &operator<<(ostream &os,AliITSgeomSDD256 &p){
781 ////////////////////////////////////////////////////////////////////////
782 // Standard output streaming function.
783 ////////////////////////////////////////////////////////////////////////
788 //----------------------------------------------------------------------
789 istream &operator>>(istream &is,AliITSgeomSDD256 &r){
790 ////////////////////////////////////////////////////////////////////////
791 // Standard input streaming function.
792 ////////////////////////////////////////////////////////////////////////
797 //======================================================================
800 Revision 1.14 2001/10/19 21:32:35 nilsen
801 Minor changes to remove compliation warning on gcc 2.92.2 compiler, and
802 cleanded up a little bit of code.
804 Revision 1.13 2001/10/12 22:07:20 nilsen
805 A patch for C++ io manipulation functions so that they will work both
806 with GNU gcc 2.96 and GNU gcc 3.01 compilers. Needs to be tested with
809 Revision 1.12 2001/08/24 21:06:37 nilsen
810 Added more documentation, fixed up some coding violations, and some
811 forward declorations.
813 Revision 1.11 2001/05/16 08:17:49 hristov
814 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)
816 Revision 1.10 2001/02/09 00:00:57 nilsen
817 Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
818 bugs in iostream based streamers used to read and write .det files. Fixed
819 some detector sizes. Fixed bugs in some default-special constructors.
821 Revision 1.9 2001/02/03 00:00:30 nilsen
822 New version of AliITSgeom and related files. Now uses automatic streamers,
823 set up for new formatted .det file which includes detector information.
824 Additional smaller modifications are still to come.
827 //#include <iostream.h>
830 //#include "AliITSgeomSDD300.h"
832 ClassImp(AliITSgeomSDD300)
834 AliITSgeomSDD300::AliITSgeomSDD300() : AliITSgeomSDD(){
835 ////////////////////////////////////////////////////////////////////////
836 // default constructor
837 ////////////////////////////////////////////////////////////////////////
838 const Float_t kDxyz[] = {3.500,0.014,3.763};//cm.
839 const Float_t kPeriod = 25.0E-09; // 40 MHz
840 const Float_t kVelocity = 5.46875E+3; // cm/s
841 const Int_t kNAnodes = 300; // number of anodes
842 const Float_t kAnodeXL = -3.500; // cm
843 const Float_t kAnodeXR = +3.500; // cm
844 const Float_t kAnodesZ = -3.75; // cm
845 Float_t anodeLowEdges[kNAnodes+1];
846 const Float_t kanode = 0.0250;// cm anode separation.
849 // cout << "AliITSgeomSDD300 default creator called: start" << endl;
850 anodeLowEdges[0] = kAnodesZ;
851 for(i=0;i<kNAnodes;i++)anodeLowEdges[i+1] = kanode+anodeLowEdges[i];
852 AliITSgeomSDD::ResetSDD(kDxyz,kPeriod,kVelocity,kAnodeXL,kAnodeXR,
853 kNAnodes+1,anodeLowEdges,
854 kNAnodes+1,anodeLowEdges);
855 // cout << "AliITSgeomSDD300 default creator called: end" << endl;
857 //________________________________________________________________________
858 ostream &operator<<(ostream &os,AliITSgeomSDD300 &p){
859 ////////////////////////////////////////////////////////////////////////
860 // Standard output streaming function.
861 ////////////////////////////////////////////////////////////////////////
866 //----------------------------------------------------------------------
867 istream &operator>>(istream &is,AliITSgeomSDD300 &r){
868 ////////////////////////////////////////////////////////////////////////
869 // Standard input streaming function.
870 ////////////////////////////////////////////////////////////////////////
875 //----------------------------------------------------------------------