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