]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSgeomSPD.cxx
Bug fixed in the StepManager to account for the difference in the geometry tree for...
[u/mrichter/AliRoot.git] / ITS / AliITSgeomSPD.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/04/26 22:44:34 nilsen
19Bug fix.
20
2d408567 21Revision 1.9 2001/02/09 00:00:57 nilsen
22Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
23bugs in iostream based streamers used to read and write .det files. Fixed
24some detector sizes. Fixed bugs in some default-special constructors.
25
31b8cd63 26Revision 1.8 2001/02/03 00:00:30 nilsen
27New version of AliITSgeom and related files. Now uses automatic streamers,
28set up for new formatted .det file which includes detector information.
29Additional smaller modifications are still to come.
30
8253cd9a 31*/
32
33#include <iostream.h>
34#include <iomanip.h>
35#include <TShape.h>
31b8cd63 36#include <TMath.h>
8253cd9a 37
38#include "AliITSgeomSPD.h"
39
40ClassImp(AliITSgeomSPD)
41
42AliITSgeomSPD::AliITSgeomSPD(){
43// Default Constructor. Set everthing to null.
44
45 fShapeSPD = 0;
46 fNbinx = 0;
47 fNbinz = 0;
48 fLowBinEdgeX = 0;
49 fLowBinEdgeZ = 0;
50}
51//______________________________________________________________________
52AliITSgeomSPD::AliITSgeomSPD(Float_t dy,Int_t nx,Float_t *bx,
53 Int_t nz,Float_t *bz){
54// Standard Constructor. Set everthing to null.
55
56 fShapeSPD = 0;
57 fNbinx = 0;
58 fNbinz = 0;
59 fLowBinEdgeX = 0;
60 fLowBinEdgeZ = 0;
61 ReSetBins(dy,nx,bx,nz,bz);
62 return;
63}
64//______________________________________________________________________
65void AliITSgeomSPD::ReSetBins(Float_t dy,Int_t nx,Float_t *bx,
66 Int_t nz,Float_t *bz){
67// delets the contents of this and replaces it with the given values.
68 Int_t i;
69 Float_t dx = 0.0, dz = 0.0;
70
71 // Compute size in x and z (based on bins).
72 for(i=0;i<nx;i++) dx += bx[i];
73 for(i=0;i<nz;i++) dz += bz[i];
74 dx *= 0.5;
75 dz *= 0.5;
76
77 delete fShapeSPD; // delete existing shape
78 if(this->fLowBinEdgeX) delete[] this->fLowBinEdgeX; // delete existing
79 if(this->fLowBinEdgeZ) delete[] this->fLowBinEdgeZ; // delete existing
80
81 SetNbinX(nx);
82 SetNbinZ(nz);
83 InitLowBinEdgeX();
84 InitLowBinEdgeZ();
85 fLowBinEdgeX[0] = -dx;
86 fLowBinEdgeZ[0] = -dz;
87 for(i=0;i<nx;i++) fLowBinEdgeX[i+1] = fLowBinEdgeX[i] + bx[i];
88 for(i=0;i<nz;i++) fLowBinEdgeZ[i+1] = fLowBinEdgeZ[i] + bz[i];
89 SetShape("ActiveSPD","Active volume of SPD","SPD SI DET",dx,dy,dz);
90 return;
91}
92//______________________________________________________________________
93AliITSgeomSPD::AliITSgeomSPD(AliITSgeomSPD &source){
94 // Copy constructor
95
96 *this = source; // just use the = operator for now.
97 return;
98}
99//______________________________________________________________________
100AliITSgeomSPD& AliITSgeomSPD::operator=(AliITSgeomSPD &source){
101 // = operator
102 Int_t i;
103
104 if(&source == this) return *this;
105 this->fShapeSPD = new TBRIK(*(source.fShapeSPD));
106 if(this->fLowBinEdgeX) delete[] this->fLowBinEdgeX;
107 if(this->fLowBinEdgeZ) delete[] this->fLowBinEdgeZ;
108 this->fNbinx = source.fNbinx;
109 this->fNbinz = source.fNbinz;
110 this->InitLowBinEdgeX();
111 this->InitLowBinEdgeZ();
112 for(i=0;i<fNbinx;i++) this->fLowBinEdgeX[i] = source.fLowBinEdgeX[i];
113 for(i=0;i<fNbinz;i++) this->fLowBinEdgeZ[i] = source.fLowBinEdgeZ[i];
114 return *this;
115}
116//______________________________________________________________________
117AliITSgeomSPD::~AliITSgeomSPD(){
118// Destructor
119
120 delete fShapeSPD;
121 if(this->fLowBinEdgeX) delete[] this->fLowBinEdgeX;
122 if(this->fLowBinEdgeZ) delete[] this->fLowBinEdgeZ;
123 fShapeSPD = 0;
124 fNbinx = 0;
125 fNbinz = 0;
126 fLowBinEdgeX = 0;
127 fLowBinEdgeZ = 0;
128}
129//______________________________________________________________________
130void AliITSgeomSPD::LToDet(Float_t xl,Float_t zl,Int_t &row,Int_t &col){
131// Returns the row and column pixel numbers for a given local coordinate
132// system. If they are outside then it will return -1 or fNbinx/z.
133 Int_t i;
134
135 if(xl<fLowBinEdgeX[0]) row = -1;
136 else{
137 for(i=0;i<fNbinx;i++) if(xl<=fLowBinEdgeX[i]) break;
138 row = i;
139 } //end if too low.
140 if(zl<fLowBinEdgeX[0]) col = -1;
141 else{
142 for(i=0;i<fNbinz;i++) if(zl<=fLowBinEdgeZ[i]) break;
143 col = i;
144 } //end if too low.
145 return;
146}
147//______________________________________________________________________
148void AliITSgeomSPD::DetToL(Int_t row,Int_t col,Float_t &xl,Float_t &zl){
149// returns the pixel center local coordinate system location for a given
150// row and column number. It the row or column number is outside of the
151// defined range then it will return the nearest detector edge.
152
153 if(row>=0||row<fNbinx-1) xl = 0.5*(fLowBinEdgeX[row]+fLowBinEdgeX[row+1]);
154 else if(row<0) xl = fLowBinEdgeX[0];else xl = fLowBinEdgeX[fNbinx-1];
155 if(col>=0||col<fNbinz-1) zl = 0.5*(fLowBinEdgeZ[col]+fLowBinEdgeZ[col+1]);
156 else if(col<0) zl = fLowBinEdgeZ[0];else zl = fLowBinEdgeZ[fNbinz-1];
157 return;
158}
159//______________________________________________________________________
31b8cd63 160void AliITSgeomSPD::Print(ostream *os) const {
8253cd9a 161// Standard output format for this class
162 Int_t i;
31b8cd63 163 Int_t fmt;
8253cd9a 164
165 fmt = os->setf(ios::scientific); // set scientific floating point output
166 *os << "TBRIK" << " ";
167 *os << setprecision(16) << GetDx() << " ";
168 *os << setprecision(16) << GetDy() << " ";
169 *os << setprecision(16) << GetDz() << " ";
170 *os << fNbinx-1 << " " << fNbinz-1 << " ";
171 for(i=0;i<fNbinx;i++) *os << setprecision(16) << fLowBinEdgeX[i] << " ";
31b8cd63 172 for(i=0;i<fNbinz;i++) *os << setprecision(16) << fLowBinEdgeZ[i] << " ";
8253cd9a 173 *os << endl;
174 os->flags(fmt);
175 return;
176}
177//______________________________________________________________________
178void AliITSgeomSPD::Read(istream *is){
179// Standard input format for this class
180 Int_t i,j;
181 Float_t dx,dy,dz;
182 char shape[20];
183
184 for(i=0;i<20;i++) shape[i]='\0';
185 *is >> shape;
186 if(strcmp(shape,"TBRIK")) Warning("::Read","Shape not a TBRIK");
187 *is >> dx >> dy >> dz;
188 if(fShapeSPD!=0) delete fShapeSPD;
189 SetShape("ActiveSPD","Active volume of SPD","SPD SI DET",dx,dy,dz);
190 *is >> i >> j;
191 SetNbinX(i);
192 SetNbinZ(j);
193 InitLowBinEdgeX();
194 InitLowBinEdgeZ();
195 for(i=0;i<fNbinx;i++) *is >> fLowBinEdgeX[i];
196 for(i=0;i<fNbinz;i++) *is >> fLowBinEdgeZ[i];
197 return;
198}
199//----------------------------------------------------------------------
200ostream &operator<<(ostream &os,AliITSgeomSPD &p){
201////////////////////////////////////////////////////////////////////////
202// Standard output streaming function.
203////////////////////////////////////////////////////////////////////////
204
205 p.Print(&os);
206 return os;
207}
208//----------------------------------------------------------------------
209istream &operator>>(istream &is,AliITSgeomSPD &r){
210////////////////////////////////////////////////////////////////////////
211// Standard input streaming function.
212////////////////////////////////////////////////////////////////////////
213
214 r.Read(&is);
215 return is;
216}
217//=====================================================================
218
219/*
220$Log$
e99dbc71 221Revision 1.10 2001/04/26 22:44:34 nilsen
222Bug fix.
223
2d408567 224Revision 1.9 2001/02/09 00:00:57 nilsen
225Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
226bugs in iostream based streamers used to read and write .det files. Fixed
227some detector sizes. Fixed bugs in some default-special constructors.
228
31b8cd63 229Revision 1.8 2001/02/03 00:00:30 nilsen
230New version of AliITSgeom and related files. Now uses automatic streamers,
231set up for new formatted .det file which includes detector information.
232Additional smaller modifications are still to come.
233
8253cd9a 234Revision 1.7 2000/10/02 16:32:35 barbera
235Forward declaration added
236
237Revision 1.1.2.8 2000/10/02 15:52:05 barbera
238Forward declaration added
239
240Revision 1.6 2000/07/10 16:07:18 fca
241Release version of ITS code
242
243Revision 1.4 2000/06/10 20:34:37 nilsen
244Fixed compilation warning with HP unix.
245
246Revision 1.3 2000/06/10 10:43:04 nilsen
247Fixed bug in copy and operator =.
248
249*/
250
251//#include "AliITSgeomSPD300.h"
252
253ClassImp(AliITSgeomSPD300)
254
255AliITSgeomSPD300::AliITSgeomSPD300() : AliITSgeomSPD(){
256////////////////////////////////////////////////////////////////////////
257// default constructor, for ITS TDR geometry. This only consists of
258// a default constructor to construct the defalut TDR SPD detector geometry
259// 256 X 279 300 by 50 micron pixels.
260////////////////////////////////////////////////////////////////////////
261const Float_t kdx=0.6400,kdy=0.0075,kdz=4.1900; // cm; Standard pixel detector
262 // size is 2dx wide, 2dz long,
263 // and 2dy thick. Geant 3.12
264 // units.
265const Float_t kbinx0 = 0.0050; // cm; Standard pixel size in x direction.
266const Int_t knbinx = 256; // number of pixels along x direction.
267const Float_t kbinz0 = 0.0300; // cm; Standard pixel size in z direction.
268const Float_t kbinz1 = 0.0350; // cm; Edge pixel size in z direction.
269const Int_t knbinz = 279; // number of pixels along z direction.
270 Int_t i;
271 Float_t dx=0.0,dz=0.0;
272
273// cout << "AliITSgeomSPD300 default creator called: start" << endl;
274
275 SetNbinX(knbinx); // default number of bins in x.
276 SetNbinZ(knbinz); // default number of bins in z.
277
278 for(i=0;i<knbinx;i++) dx += kbinx0; // Compute size x.
279 dx *= 0.5;
280 for(i=0;i<knbinz;i++) dz += kbinz0; // Compute size z.
281 dz += 2.0*(kbinz1-kbinz0);
282 dz *= 0.5;
283 InitLowBinEdgeX();
284 InitLowBinEdgeZ();
285 SetLowBinEdgeX(0,-dx); // Starting position X
286 for(i=0;i<knbinx;i++) SetLowBinEdgeX(i+1,GetBinLowEdgeX(i)+kbinx0);
287 SetLowBinEdgeZ(0,-dz); // Starting position z
288 SetLowBinEdgeZ(1,GetBinLowEdgeZ(0)+kbinz1);
289 for(i=1;i<knbinz;i++) SetLowBinEdgeZ(i+1,GetBinLowEdgeZ(i)+kbinz0);
290 SetLowBinEdgeZ(knbinz,GetBinLowEdgeZ(knbinz-1)+kbinz1);
291
31b8cd63 292 if(TMath::Abs(dx-kdx)>1.0E-4 || TMath::Abs(dz-kdz)>1.0E-4)
293 Warning("Default Creator","Detector size may not be write.");
8253cd9a 294 SetShape("ActiveSPD","Active volume of SPD","SPD SI DET",dx,kdy,dz);
295// cout << "AliITSgeomSPD300 default creator called: end" << endl;
296}
297//----------------------------------------------------------------------
298ostream &operator<<(ostream &os,AliITSgeomSPD300 &p){
299////////////////////////////////////////////////////////////////////////
300// Standard output streaming function.
301////////////////////////////////////////////////////////////////////////
302
303 p.Print(&os);
304 return os;
305}
306//----------------------------------------------------------------------
307istream &operator>>(istream &is,AliITSgeomSPD300 &r){
308////////////////////////////////////////////////////////////////////////
309// Standard input streaming function.
310////////////////////////////////////////////////////////////////////////
311
312 r.Read(&is);
313 return is;
314}
315//=====================================================================
316/*
317$Log$
e99dbc71 318Revision 1.10 2001/04/26 22:44:34 nilsen
319Bug fix.
320
2d408567 321Revision 1.9 2001/02/09 00:00:57 nilsen
322Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
323bugs in iostream based streamers used to read and write .det files. Fixed
324some detector sizes. Fixed bugs in some default-special constructors.
325
31b8cd63 326Revision 1.8 2001/02/03 00:00:30 nilsen
327New version of AliITSgeom and related files. Now uses automatic streamers,
328set up for new formatted .det file which includes detector information.
329Additional smaller modifications are still to come.
330
8253cd9a 331Revision 1.7 2000/10/02 16:32:35 barbera
332Forward declaration added
333
334Revision 1.1.2.8 2000/10/02 15:52:05 barbera
92c19c36 335Forward declaration added
336
337Revision 1.6 2000/07/10 16:07:18 fca
338Release version of ITS code
339
8253cd9a 340Revision 1.4 2000/06/10 20:34:22 nilsen
341Fixed compilation warning with HP unix.
342
343Revision 1.3 2000/06/10 10:42:49 nilsen
344Fixed bug in copy and operator =.
345
346
347*/
348
349//#include "AliITSgeomSPD425Short.h"
350
351ClassImp(AliITSgeomSPD425Short)
352
e99dbc71 353AliITSgeomSPD425Short::AliITSgeomSPD425Short() : AliITSgeomSPD(){
8253cd9a 354////////////////////////////////////////////////////////////////////////
355// default constructor, for ITS post TDR geometry. This only consists of
356// a default constructor to construct the defalut post TDR SPD detector
357// geometry 256 X 197 425 by 50 micron pixels with interleaved 625 by 50
358// micron pixels (large detector).
e99dbc71 359////////////////////////////////////////////////////////////////////////
360}
361//----------------------------------------------------------------------
362AliITSgeomSPD425Short::AliITSgeomSPD425Short(Int_t npar,Float_t *par) :
363 AliITSgeomSPD(){
364////////////////////////////////////////////////////////////////////////
365// Standard constructor, for ITS post TDR geometry. This only consists of
366// a default constructor to construct the defalut post TDR SPD detector
367// geometry 256 X 197 425 by 50 micron pixels with interleaved 625 by 50
368// micron pixels (large detector).
8253cd9a 369////////////////////////////////////////////////////////////////////////
370
31b8cd63 371 const Float_t kdx=0.6400,kdy=0.015,kdz=3.480; // cm; Standard pixel
8253cd9a 372 // detector size is 2dx
373 // wide, 2dz long, and
374 // 2dy thick. Geant 3.12
375 // units.
376 const Float_t kbinx0 = 0.0050; // cm; Standard pixel size in x direction.
377 const Int_t knbinx = 256; // number of pixels along x direction.
378 const Float_t kbinz0 = 0.0425; // cm; Standard pixel size in z direction.
379 const Float_t kbinz1 = 0.0625; // cm; Special pixel size in z direction.
e99dbc71 380 const Int_t knbinz = 160; // number of pixels along z direction.
8253cd9a 381 Int_t i;
382 Float_t dx,dz,*binSizeX,*binSizeZ;
195d8dfe 383
8253cd9a 384 SetNbinX(knbinx); // default number of bins in x.
385 SetNbinZ(knbinz); // default number of bins in z.
1cea8f13 386
8253cd9a 387 binSizeX = new Float_t[knbinx]; // array of bin sizes along x.
388 for(i=0;i<knbinx;i++) binSizeX[i] = kbinx0; // default x bin size.
389 binSizeZ = new Float_t[knbinz]; // array of bin sizes along z.
390 for(i=0;i<knbinz;i++) binSizeZ[i] = kbinz0; // default z bin size.
391 binSizeZ[ 31] = kbinz1;
392 binSizeZ[ 32] = kbinz1;
393
31b8cd63 394 binSizeZ[ 63] = kbinz1;
8253cd9a 395 binSizeZ[ 64] = kbinz1;
8253cd9a 396
31b8cd63 397 binSizeZ[ 95] = kbinz1;
398 binSizeZ[ 96] = kbinz1;
8253cd9a 399
31b8cd63 400 binSizeZ[127] = kbinz1;
401 binSizeZ[128] = kbinz1;
8253cd9a 402
403 // correct detector size for bin size.
404 dx = 0.0;
405 for(i=0;i<knbinx;i++) dx += binSizeX[i];
406 dx *= 0.5;
407 dz = 0.0;
408 for(i=0;i<knbinz;i++) dz += binSizeZ[i];
409 dz *= 0.5;
410
e99dbc71 411 SetShape("ActiveSPD","Active volume of SPD","SPD SI DET",
412 par[0],par[1],par[2]);
31b8cd63 413 if(TMath::Abs(dx-kdx)>1.0E-4 || TMath::Abs(dz-kdz)>1.0E-4)
414 Warning("Default Creator","Detector size may not be write.");
8253cd9a 415
416 InitLowBinEdgeX(); // array of bin sizes along x.
417 InitLowBinEdgeZ(); // array of bin sizes along x.
418 SetLowBinEdgeX(0,-dx);
419 SetLowBinEdgeZ(0,-dz);
420 for(i=0;i<knbinx;i++) SetLowBinEdgeX(i+1,GetBinLowEdgeX(i)+binSizeX[i]);
421 for(i=0;i<knbinz;i++) SetLowBinEdgeZ(i+1,GetBinLowEdgeZ(i)+binSizeZ[i]);
422}
423//----------------------------------------------------------------------
424ostream &operator<<(ostream &os,AliITSgeomSPD425Short &p){
425////////////////////////////////////////////////////////////////////////
426// Standard output streaming function.
427////////////////////////////////////////////////////////////////////////
428
429 p.Print(&os);
430 return os;
431}
432//----------------------------------------------------------------------
433istream &operator>>(istream &is,AliITSgeomSPD425Short &r){
434////////////////////////////////////////////////////////////////////////
435// Standard input streaming function.
436////////////////////////////////////////////////////////////////////////
437
438 r.Read(&is);
439 return is;
440}
441//======================================================================
442
443/*
444$Log$
e99dbc71 445Revision 1.10 2001/04/26 22:44:34 nilsen
446Bug fix.
447
2d408567 448Revision 1.9 2001/02/09 00:00:57 nilsen
449Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
450bugs in iostream based streamers used to read and write .det files. Fixed
451some detector sizes. Fixed bugs in some default-special constructors.
452
31b8cd63 453Revision 1.8 2001/02/03 00:00:30 nilsen
454New version of AliITSgeom and related files. Now uses automatic streamers,
455set up for new formatted .det file which includes detector information.
456Additional smaller modifications are still to come.
457
8253cd9a 458Revision 1.7 2000/10/02 16:32:35 barbera
459Forward declaration added
460
461Revision 1.1.2.8 2000/10/02 15:52:05 barbera
462Forward declaration added
463
464Revision 1.6 2000/07/10 16:07:18 fca
465Release version of ITS code
466
467Revision 1.4 2000/06/10 20:34:22 nilsen
468Fixed compilation warning with HP unix.
469
470Revision 1.3 2000/06/10 10:42:49 nilsen
471Fixed bug in copy and operator =.
1cea8f13 472
1cea8f13 473
4c039060 474*/
475
8253cd9a 476//#include "AliITSgeomSPD425Long.h"
58005f18 477
8253cd9a 478ClassImp(AliITSgeomSPD425Long)
479
480AliITSgeomSPD425Long::AliITSgeomSPD425Long(){
481////////////////////////////////////////////////////////////////////////
482// default constructor, for ITS post TDR geometry. This only consists of
483// a default constructor to construct the defalut post TDR SPD detector
484// geometry 256 X 197 425 by 50 micron pixels with interleaved 625 by 50
485// micron pixels (large detector).
486////////////////////////////////////////////////////////////////////////
487
488 const Float_t kdx=0.6400,kdy=0.0075,kdz=4.2650; // cm; Standard pixel
489 // detector size is 2dx
490 // wide, 2dz long, and
491 // 2dy thick. Geant 3.12
492 // units.
493 const Float_t kbinx0 = 0.0050; // cm; Standard pixel size in x direction.
494 const Int_t knbinx = 256; // number of pixels along x direction.
495 const Float_t kbinz0 = 0.0425; // cm; Standard pixel size in z direction.
496 const Float_t kbinz1 = 0.0625; // cm; Special pixel size in z direction.
2d408567 497 const Int_t knbinz = 192; // number of pixels along z direction.
8253cd9a 498 Int_t i;
499 Float_t dx,dz,*binSizeX,*binSizeZ;
500
501 SetNbinX(knbinx); // default number of bins in x.
502 SetNbinZ(knbinz); // default number of bins in z.
503
504 binSizeX = new Float_t[knbinx]; // array of bin sizes along x.
505 for(i=0;i<knbinx;i++) binSizeX[i] = kbinx0; // default x bin size.
506 binSizeZ = new Float_t[knbinz]; // array of bin sizes along z.
507 for(i=0;i<knbinz;i++) binSizeZ[i] = kbinz0; // default z bin size.
508 binSizeZ[ 31] = kbinz1;
509 binSizeZ[ 32] = kbinz1;
510
2d408567 511 binSizeZ[ 63] = kbinz1;
8253cd9a 512 binSizeZ[ 64] = kbinz1;
8253cd9a 513
2d408567 514 binSizeZ[ 95] = kbinz1;
515 binSizeZ[ 96] = kbinz1;
195d8dfe 516
2d408567 517 binSizeZ[127] = kbinz1;
518 binSizeZ[128] = kbinz1;
8253cd9a 519
2d408567 520 binSizeZ[159] = kbinz1;
521 binSizeZ[160] = kbinz1;
8253cd9a 522
523 // correct detector size for bin size.
524 dx = 0.0;
525 for(i=0;i<knbinx;i++) dx += binSizeX[i];
526 dx *= 0.5;
527 dz = 0.0;
528 for(i=0;i<knbinz;i++) dz += binSizeZ[i];
529 dz *= 0.5;
530
531 SetShape("ActiveSPD","Active volume of SPD","SPD SI DET",dx,kdy,dz);
31b8cd63 532 if(TMath::Abs(dx-kdx)>1.0E-4 || TMath::Abs(dz-kdz)>1.0E-4)
533 Warning("Default Creator","Detector size may not be write.");
8253cd9a 534
535 InitLowBinEdgeX(); // array of bin sizes along x.
536 InitLowBinEdgeZ(); // array of bin sizes along x.
537 SetLowBinEdgeX(0,-dx);
538 SetLowBinEdgeZ(0,-dz);
539 for(i=0;i<knbinx;i++) SetLowBinEdgeX(i+1,GetBinLowEdgeX(i)+binSizeX[i]);
540 for(i=0;i<knbinz;i++) SetLowBinEdgeZ(i+1,GetBinLowEdgeZ(i)+binSizeZ[i]);
541}
542//----------------------------------------------------------------------
543ostream &operator<<(ostream &os,AliITSgeomSPD425Long &p){
1cea8f13 544////////////////////////////////////////////////////////////////////////
8253cd9a 545// Standard output streaming function.
1cea8f13 546////////////////////////////////////////////////////////////////////////
1cea8f13 547
8253cd9a 548 p.Print(&os);
549 return os;
550}
551//----------------------------------------------------------------------
552istream &operator>>(istream &is,AliITSgeomSPD425Long &r){
553////////////////////////////////////////////////////////////////////////
554// Standard input streaming function.
555////////////////////////////////////////////////////////////////////////
195d8dfe 556
8253cd9a 557 r.Read(&is);
558 return is;
559}
560//======================================================================