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