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