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