Changes needed by ICC/IFC compiler (Intel)
[u/mrichter/AliRoot.git] / ITS / AliITSgeomSSD.cxx
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$
18 Revision 1.14  2001/11/19 16:17:03  nilsen
19 Applyed fixes to bugs found by Rene Brun. With many thanks. Some additonal
20 bugs found by Rene require more work to fix. Will be fixed soon.
21
22 Revision 1.13  2001/10/12 22:07:20  nilsen
23 A patch for C++ io manipulation functions so that they will work both
24 with GNU gcc 2.96 and GNU gcc 3.01 compilers. Needs to be tested with
25 other platforms.
26
27 Revision 1.12  2001/08/24 21:06:37  nilsen
28 Added more documentation, fixed up some coding violations, and some
29 forward declorations.
30
31 Revision 1.11  2001/05/16 08:17:49  hristov
32 Bug 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)
33
34 Revision 1.10  2001/02/09 00:00:57  nilsen
35 Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
36 bugs in iostream based streamers used to read and write .det files. Fixed
37 some detector sizes. Fixed bugs in some default-special constructors.
38
39 Revision 1.9  2001/02/03 00:00:30  nilsen
40 New version of AliITSgeom and related files. Now uses automatic streamers,
41 set up for new formatted .det file which includes detector information.
42 Additional smaller modifications are still to come.
43
44 Revision 1.8  2000/10/02 16:32:43  barbera
45 Forward declaration added
46
47 Revision 1.2.4.8  2000/10/02 15:53:49  barbera
48 Forward declaration added
49
50 Revision 1.7  2000/07/10 16:07:18  fca
51 Release version of ITS code
52
53 Revision 1.2.4.2  2000/03/04 23:55:59  nilsen
54 Fixed up the comments/documentation
55
56 Revision 1.2.4.1  2000/01/12 19:03:32  nilsen
57 This is the version of the files after the merging done in December 1999.
58 See the ReadMe110100.txt file for details
59
60 Revision 1.2  1999/09/29 09:24:20  fca
61 Introduction of the Copyright and cvs Log
62
63 */
64
65 ////////////////////////////////////////////////////////////////////////
66 // This class is for the Silicon Strip Detector, SSD, specific geometry.
67 // It is being replaced by AliITSsegmentationSSD class. This file also
68 // constains classes derived from AliITSgeomSSD which do nothing but
69 // initilize this one with predefined values.
70 ////////////////////////////////////////////////////////////////////////
71
72 #include <iostream.h>
73 #include <iomanip.h>
74 #include <stdlib.h>
75 #include <TShape.h>
76 #include <TBRIK.h>
77
78 #include "AliITSgeomSSD.h"
79
80 ClassImp(AliITSgeomSSD)
81
82
83 AliITSgeomSSD::AliITSgeomSSD(){
84 // Default constructor
85     fShapeSSD = 0;
86     fNp       = 0;
87     fNn       = 0;
88     fLowEdgeP = 0;
89     fLowEdgeN = 0;
90     fAngleP   = 0.0;
91     fAngleN   = 0.0;
92 }
93 //----------------------------------------------------------------------
94 AliITSgeomSSD::AliITSgeomSSD(const Float_t *box,Float_t ap,Float_t an,
95                              Int_t np,Float_t *p,Int_t nn,Float_t *n){
96 ////////////////////////////////////////////////////////////////////////
97 //    Standard Constructor. *box={dx,dy,dz}, ap=anode angle, an=cathode angle,
98 // nn= number of cathodes+1,*n= array of cathode low edges+highest edge,
99 // np= number of anodes+1, *p= array of anode low edges+lighest edge.
100 ///////////////////////////////////////////////////////////////////////
101     fShapeSSD = 0;
102     fNp       = 0;
103     fNn       = 0;
104     fLowEdgeP = 0;
105     fLowEdgeN = 0;
106     fAngleP   = 0.0;
107     fAngleN   = 0.0;
108     ResetSSD(box,ap,an,np,p,nn,n);
109 }
110 //----------------------------------------------------------------------
111 void AliITSgeomSSD::ResetSSD(const Float_t *box,Float_t ap,Float_t an,
112                              Int_t np,Float_t *p,Int_t nn,Float_t *n){
113 ////////////////////////////////////////////////////////////////////////
114 //    Standard Filler. *box={dx,dy,dz}, ap=anode angle, an=cathode angle,
115 // nn= number of cathodes+1,*n= array of cathode low edges+highest edge,
116 // np= number of anodes+1, *p= array of anode low edges+lighest edge.
117 ///////////////////////////////////////////////////////////////////////
118     Int_t i;
119
120     fShapeSSD = new TBRIK("ActiveSSD","Active volume of SSD","SSD SI DET",
121                           box[0],box[1],box[2]);
122 //    if(fLowEdgeP!=0) delete fLowEdgeP;
123 //    if(fLowEdgeN!=0) delete fLowEdgeN;
124     fNp = np;
125     fNn = nn;
126     fAngleP = ap;
127     fAngleN = an;
128     fLowEdgeP = new Float_t[fNp];
129     fLowEdgeN = new Float_t[fNn];
130     for(i=0;i<fNp;i++) fLowEdgeP[i] = p[i];
131     for(i=0;i<fNn;i++) fLowEdgeN[i] = n[i];
132 }
133 //______________________________________________________________________
134 AliITSgeomSSD::~AliITSgeomSSD(){
135     // Destructor.
136
137     if(fLowEdgeP) delete [] fLowEdgeP; fLowEdgeP = 0;
138     if(fLowEdgeN) delete [] fLowEdgeN; fLowEdgeN = 0;
139     if(fShapeSSD) delete  fShapeSSD; fShapeSSD = 0;
140     fNp = 0;
141     fNn = 0;
142     fAngleP = 0.0;
143     fAngleN = 0.0;
144 }
145 AliITSgeomSSD::AliITSgeomSSD(const AliITSgeomSSD &source){
146 ////////////////////////////////////////////////////////////////////////
147 //    copy  constructor
148 ////////////////////////////////////////////////////////////////////////
149     Int_t i;
150
151     if(this == &source) return;
152     this->fShapeSSD = new TBRIK(*(source.fShapeSSD));
153     this->fNp = source.fNp;
154     this->fNn = source.fNn;
155     delete fLowEdgeP;
156     delete fLowEdgeN;
157     this->fAngleP = source.fAngleP;
158     this->fAngleN = source.fAngleN;
159     fLowEdgeP = new Float_t[fNp];
160     fLowEdgeN = new Float_t[fNn];
161     for(i=0;i<fNp;i++) this->fLowEdgeP[i] = source.fLowEdgeP[i];
162     for(i=0;i<fNn;i++) this->fLowEdgeN[i] = source.fLowEdgeN[i];
163     return;
164 }  
165
166 AliITSgeomSSD& AliITSgeomSSD::operator=(const AliITSgeomSSD &source) {
167 ////////////////////////////////////////////////////////////////////////
168 //    assignment operator
169 ////////////////////////////////////////////////////////////////////////
170     Int_t i;
171
172     if(this == &source) return *this;
173     this->fShapeSSD = new TBRIK(*(source.fShapeSSD));
174     this->fNp = source.fNp;
175     this->fNn = source.fNn;
176     delete fLowEdgeP;
177     delete fLowEdgeN;
178     this->fAngleP = source.fAngleP;
179     this->fAngleN = source.fAngleN;
180     fLowEdgeP = new Float_t[fNp];
181     fLowEdgeN = new Float_t[fNn];
182     for(i=0;i<fNp;i++) this->fLowEdgeP[i] = source.fLowEdgeP[i];
183     for(i=0;i<fNn;i++) this->fLowEdgeN[i] = source.fLowEdgeN[i];
184     return *this;
185 }
186 //______________________________________________________________________
187 void AliITSgeomSSD::Local2Det(Float_t x,Float_t z,Int_t &a,Int_t &c){
188     // Given a GEANT detector local coordinate, cm, this function returns
189     // the detector specific P and N side strip numbers.
190     // Inputs are:
191     // Float_t x   Geant detector local x coordinate in cm
192     // Float_t z   Geant detector local z coordinate in cm
193     // outputs are:
194     // Int_t &a    Detector anode strip number (P side)
195     // Int_t &c    Detector cathode strip number (N side)
196     Float_t d,b;
197     Int_t i;
198
199     // project on to bonding edges.
200     d = x*TMath::Cos(fAngleP)+z*TMath::Sin(fAngleP);
201     b = x*TMath::Cos(fAngleN)+z*TMath::Sin(fAngleN);
202     if(d<fLowEdgeP[0]) i=-1;
203     else for(i=0;i<fNp;i++){
204         if(fLowEdgeP[i]<d) break;
205     } // end for i
206     a = i;
207     if(b<fLowEdgeN[0]) i=-1;
208     else for(i=0;i<fNn;i++){
209         if(fLowEdgeN[i]<b) break;
210     } // end for i
211     c = i;
212     return;
213 }
214 //______________________________________________________________________
215 void AliITSgeomSSD::Det2Local(Int_t a,Int_t c,Float_t &x,Float_t &z){
216 //    Float_t d,b;
217 //    Int_t i;
218
219     return;
220 }
221 //______________________________________________________________________
222 void AliITSgeomSSD::Print(ostream *os) const {
223 ////////////////////////////////////////////////////////////////////////
224 // Standard output format for this class.
225 ////////////////////////////////////////////////////////////////////////
226     Int_t i;
227 #if defined __GNUC__
228 #if __GNUC__ > 2
229     ios::fmtflags fmt;
230 #else
231     Int_t fmt;
232 #endif
233 #else
234 #if defined __ICC
235     ios::fmtflags fmt;
236 #else
237     Int_t fmt;
238 #endif
239 #endif
240
241     fmt = os->setf(ios::scientific);  // set scientific floating point output
242     *os << "TBRIK" << " ";
243     *os << setprecision(16) << GetDx() << " ";
244     *os << setprecision(16) << GetDy() << " ";
245     *os << setprecision(16) << GetDz() << " ";
246     *os << fNp << " " << fNn << " ";
247     *os << setprecision(16) << fAngleP << " ";
248     *os << setprecision(16) << fAngleN << " ";
249     for(i=0;i<fNp;i++) *os << setprecision(16) << fLowEdgeP[i] << " ";
250     for(i=0;i<fNn;i++) *os << setprecision(16) << fLowEdgeN[i] << " ";
251     *os << endl;
252     os->flags(fmt); // reset back to old formating.
253     return;
254 }
255 //______________________________________________________________________
256 void AliITSgeomSSD::Read(istream *is){
257 ////////////////////////////////////////////////////////////////////////
258 // Standard input format for this class.
259 ////////////////////////////////////////////////////////////////////////
260     Float_t dx,dy,dz;
261     Int_t i;
262     char shp[20];
263
264     *is >> shp;
265     *is >> dx >> dy >> dz;
266     if(fShapeSSD!=0) delete fShapeSSD;
267     fShapeSSD = new TBRIK("ActiveSSD","Active volume of SSD","SSD SI DET",
268                             dx,dy,dz);
269     *is >> fNp >> fNn;
270     *is >> fAngleP >> fAngleN;
271     if(fLowEdgeP !=0) delete fLowEdgeP;
272     if(fLowEdgeN !=0) delete fLowEdgeN;
273     fLowEdgeP = new Float_t[fNp];
274     fLowEdgeN = new Float_t[fNn];
275     for(i=0;i<fNp;i++) *is >> fLowEdgeP[i];
276     for(i=0;i<fNn;i++) *is >> fLowEdgeN[i];
277     return;
278 }
279 //----------------------------------------------------------------------
280 ostream &operator<<(ostream &os,AliITSgeomSSD &p){
281 ////////////////////////////////////////////////////////////////////////
282 // Standard output streaming function.
283 ////////////////////////////////////////////////////////////////////////
284
285     p.Print(&os);
286     return os;
287 }
288 //----------------------------------------------------------------------
289 istream &operator>>(istream &is,AliITSgeomSSD &r){
290 ////////////////////////////////////////////////////////////////////////
291 // Standard input streaming function.
292 ////////////////////////////////////////////////////////////////////////
293
294     r.Read(&is);
295     return is;
296 }
297 //======================================================================
298 /*
299 $Log$
300 Revision 1.14  2001/11/19 16:17:03  nilsen
301 Applyed fixes to bugs found by Rene Brun. With many thanks. Some additonal
302 bugs found by Rene require more work to fix. Will be fixed soon.
303
304 Revision 1.13  2001/10/12 22:07:20  nilsen
305 A patch for C++ io manipulation functions so that they will work both
306 with GNU gcc 2.96 and GNU gcc 3.01 compilers. Needs to be tested with
307 other platforms.
308
309 Revision 1.12  2001/08/24 21:06:37  nilsen
310 Added more documentation, fixed up some coding violations, and some
311 forward declorations.
312
313 Revision 1.11  2001/05/16 08:17:49  hristov
314 Bug 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)
315
316 Revision 1.10  2001/02/09 00:00:57  nilsen
317 Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
318 bugs in iostream based streamers used to read and write .det files. Fixed
319 some detector sizes. Fixed bugs in some default-special constructors.
320
321 Revision 1.9  2001/02/03 00:00:30  nilsen
322 New version of AliITSgeom and related files. Now uses automatic streamers,
323 set up for new formatted .det file which includes detector information.
324 Additional smaller modifications are still to come.
325
326 */
327
328 //#include "AliITSgeomSSD175.h"
329
330 ClassImp(AliITSgeomSSD175)
331
332 AliITSgeomSSD175::AliITSgeomSSD175() : AliITSgeomSSD(){
333 ////////////////////////////////////////////////////////////////////////
334 //    default constructor
335 ////////////////////////////////////////////////////////////////////////
336     const Float_t kDxyz[] ={3.6500,0.0150,2.000};//cm. (Geant 3.12 units)
337     // Size of sensitive detector area x,y(thickness),z
338     const Float_t kangle   = 0.0175; // angle in rad. of anode and cathodes
339     const Float_t kpitch   = 0.0095;// cm anode separation.
340     const Int_t   kNstrips = 768; // number of anode or cathode strips.
341     Float_t *leA,*leC; // array of low edges anode and cathorde.
342     Int_t i;
343
344     leA = new Float_t[kNstrips+1];
345     leC = new Float_t[kNstrips+1];
346     leA[0] = -kDxyz[0];
347     leA[1] = -kpitch*(0.5*kNstrips-1);
348     leC[0] =  kDxyz[0];
349     leC[1] =  kpitch*(0.5*kNstrips-1);
350     for(i=1;i<kNstrips;i++){
351         leA[i+1] = leA[i] + kpitch;
352         leC[i+1] = leC[i] - kpitch;
353     } // end for i
354     leA[kNstrips] =  kDxyz[0];
355     leC[kNstrips] = -kDxyz[0];
356 //    cout << "AliITSgeomSSD175 default creator called: start" << endl;
357     AliITSgeomSSD::ResetSSD(kDxyz,kangle,-kangle,
358                                  kNstrips+1,leA,kNstrips+1,leC);
359     delete leA;
360     delete leC;
361 //    cout << "AliITSgeomSSD175 default creator called: end" << endl;
362 }
363 //________________________________________________________________________
364 ostream &operator<<(ostream &os,AliITSgeomSSD175 &p){
365 ////////////////////////////////////////////////////////////////////////
366 // Standard output streaming function.
367 ////////////////////////////////////////////////////////////////////////
368
369     p.Print(&os);
370     return os;
371 }
372 //----------------------------------------------------------------------
373 istream &operator>>(istream &is,AliITSgeomSSD175 &r){
374 ////////////////////////////////////////////////////////////////////////
375 // Standard input streaming function.
376 ////////////////////////////////////////////////////////////////////////
377
378     r.Read(&is);
379     return is;
380 }
381 //======================================================================
382 /*
383 $Log$
384 Revision 1.14  2001/11/19 16:17:03  nilsen
385 Applyed fixes to bugs found by Rene Brun. With many thanks. Some additonal
386 bugs found by Rene require more work to fix. Will be fixed soon.
387
388 Revision 1.13  2001/10/12 22:07:20  nilsen
389 A patch for C++ io manipulation functions so that they will work both
390 with GNU gcc 2.96 and GNU gcc 3.01 compilers. Needs to be tested with
391 other platforms.
392
393 Revision 1.12  2001/08/24 21:06:37  nilsen
394 Added more documentation, fixed up some coding violations, and some
395 forward declorations.
396
397 Revision 1.11  2001/05/16 08:17:49  hristov
398 Bug 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)
399
400 Revision 1.10  2001/02/09 00:00:57  nilsen
401 Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
402 bugs in iostream based streamers used to read and write .det files. Fixed
403 some detector sizes. Fixed bugs in some default-special constructors.
404
405 Revision 1.9  2001/02/03 00:00:30  nilsen
406 New version of AliITSgeom and related files. Now uses automatic streamers,
407 set up for new formatted .det file which includes detector information.
408 Additional smaller modifications are still to come.
409
410 */
411
412 //#include "AliITSgeomSSD275and75.h"
413
414 ClassImp(AliITSgeomSSD275and75)
415
416 AliITSgeomSSD275and75::AliITSgeomSSD275and75() : AliITSgeomSSD(){
417 ////////////////////////////////////////////////////////////////////////
418 //    default constructor
419 ////////////////////////////////////////////////////////////////////////
420 }
421 //----------------------------------------------------------------------
422 AliITSgeomSSD275and75::AliITSgeomSSD275and75(Int_t npar,Float_t *par) : 
423                                                             AliITSgeomSSD(){
424     // Default constructor for AliITSgeomSSD with strip angles of
425     // 275 miliradians and 75 miliradians. This constructor initlizes
426     // AliITSgeomSSD with the correct values. This is the miror image
427     // of the AliITSgeomSSD75and275 class.
428     const Float_t kDxyz[] ={3.6500,0.0150,2.000};//cm. (Geant 3.12 units)
429     // Size of sensitive detector area x,y(thickness),z
430     const Float_t kangleA  = 0.0275; // angle in rad. of anode and cathodes
431     const Float_t kangleC  = 0.0075; // angle in rad. of anode and cathodes
432     const Float_t kpitch   = 0.0095;// cm anode separation.
433     const Int_t   kNstrips = 768; // number of anode or cathode strips.
434     Float_t *leA,*leC; // array of low edges anode and cathorde.
435     Int_t i;
436
437     leA = new Float_t[kNstrips+1];
438     leC = new Float_t[kNstrips+1];
439     leA[0] = -kDxyz[0];
440     leA[1] = -kpitch*(0.5*kNstrips-1);
441     leC[0] =  kDxyz[0];
442     leC[1] =  kpitch*(0.5*kNstrips-1);
443     for(i=1;i<kNstrips;i++){
444         leA[i+1] = leA[i] + kpitch;
445         leC[i+1] = leC[i] - kpitch;
446     } // end for i
447     leA[kNstrips] =  kDxyz[0];
448     leC[kNstrips] = -kDxyz[0];
449 //    cout << "AliITSgeomSSD275and75 default creator called: start" << endl;
450     AliITSgeomSSD::ResetSSD(par,kangleA,kangleC,
451                                  kNstrips+1,leA,kNstrips+1,leC);
452     delete leA;
453     delete leC;
454 //    cout << "AliITSgeomSSD275and75 default creator called: end" << endl;
455 }
456 //________________________________________________________________________
457 ostream &operator<<(ostream &os,AliITSgeomSSD275and75 &p){
458 ////////////////////////////////////////////////////////////////////////
459 // Standard output streaming function.
460 ////////////////////////////////////////////////////////////////////////
461
462     p.Print(&os);
463     return os;
464 }
465 //----------------------------------------------------------------------
466 istream &operator>>(istream &is,AliITSgeomSSD275and75 &r){
467 ////////////////////////////////////////////////////////////////////////
468 // Standard input streaming function.
469 ////////////////////////////////////////////////////////////////////////
470
471     r.Read(&is);
472     return is;
473 }
474 //======================================================================
475 /*
476 $Log$
477 Revision 1.14  2001/11/19 16:17:03  nilsen
478 Applyed fixes to bugs found by Rene Brun. With many thanks. Some additonal
479 bugs found by Rene require more work to fix. Will be fixed soon.
480
481 Revision 1.13  2001/10/12 22:07:20  nilsen
482 A patch for C++ io manipulation functions so that they will work both
483 with GNU gcc 2.96 and GNU gcc 3.01 compilers. Needs to be tested with
484 other platforms.
485
486 Revision 1.12  2001/08/24 21:06:37  nilsen
487 Added more documentation, fixed up some coding violations, and some
488 forward declorations.
489
490 Revision 1.11  2001/05/16 08:17:49  hristov
491 Bug 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)
492
493 Revision 1.10  2001/02/09 00:00:57  nilsen
494 Fixed compatibility problem with HP unix {ios::fmtflags -> Int_t}. Fixed
495 bugs in iostream based streamers used to read and write .det files. Fixed
496 some detector sizes. Fixed bugs in some default-special constructors.
497
498 Revision 1.9  2001/02/03 00:00:30  nilsen
499 New version of AliITSgeom and related files. Now uses automatic streamers,
500 set up for new formatted .det file which includes detector information.
501 Additional smaller modifications are still to come.
502
503 */
504 //#include "AliITSgeomSSD75and275.h"
505
506 ClassImp(AliITSgeomSSD75and275)
507
508 AliITSgeomSSD75and275::AliITSgeomSSD75and275() : AliITSgeomSSD(){
509 ////////////////////////////////////////////////////////////////////////
510 //    default constructor
511 ////////////////////////////////////////////////////////////////////////
512 }
513 AliITSgeomSSD75and275::AliITSgeomSSD75and275(Int_t npar,Float_t *par) : 
514                                                             AliITSgeomSSD(){
515     // Default constructor for AliITSgeomSSD with strip angles of
516     // 75 miliradians and 275 miliradians. This constructor initlizes
517     // AliITSgeomSSD with the correct values. This is the miror image
518     // of the AliITSgeomSSD275and75 class.
519     const Float_t kDxyz[] ={3.6500,0.0150,2.000};//cm. (Geant 3.12 units)
520     // Size of sensitive detector area x,y(thickness),z
521     const Float_t kangleA  = 0.0075; // angle in rad. of anode and cathodes
522     const Float_t kangleC  = 0.0275; // angle in rad. of anode and cathodes
523     const Float_t kpitch   = 0.0095;// cm anode separation.
524     const Int_t   kNstrips = 768; // number of anode or cathode strips.
525     Float_t *leA,*leC; // array of low edges anode and cathorde.
526     Int_t i;
527
528     leA = new Float_t[kNstrips+1];
529     leC = new Float_t[kNstrips+1];
530     leA[0] = -kDxyz[0];
531     leA[1] = -kpitch*(0.5*kNstrips-1);
532     leC[0] =  kDxyz[0];
533     leC[1] =  kpitch*(0.5*kNstrips-1);
534     for(i=1;i<kNstrips;i++){
535         leA[i+1] = leA[i] + kpitch;
536         leC[i+1] = leC[i] - kpitch;
537     } // end for i
538     leA[kNstrips] =  kDxyz[0];
539     leC[kNstrips] = -kDxyz[0];
540 //    cout << "AliITSgeomSSD275and75 default creator called: start" << endl;
541     AliITSgeomSSD::ResetSSD(par,kangleA,kangleC,
542                                  kNstrips+1,leA,kNstrips+1,leC);
543     delete leA;
544     delete leC;
545 //    cout << "AliITSgeomSSD275and75 default creator called: end" << endl;
546 }
547 //________________________________________________________________________
548 ostream &operator<<(ostream &os,AliITSgeomSSD75and275 &p){
549 ////////////////////////////////////////////////////////////////////////
550 // Standard output streaming function.
551 ////////////////////////////////////////////////////////////////////////
552
553     p.Print(&os);
554     return os;
555 }
556 //----------------------------------------------------------------------
557 istream &operator>>(istream &is,AliITSgeomSSD75and275 &r){
558 ////////////////////////////////////////////////////////////////////////
559 // Standard input streaming function.
560 ////////////////////////////////////////////////////////////////////////
561
562     r.Read(&is);
563     return is;
564 }
565 //======================================================================