]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSgeomSSD.h
negative indexes allowed
[u/mrichter/AliRoot.git] / ITS / AliITSgeomSSD.h
1 #ifndef ALIITSGEOMSSD_H
2 #define ALIITSGEOMSSD_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ////////////////////////////////////////////////////////////////////////
9 // This class is for the Silicon Strip Detector, SSD, specific geometry.
10 // It is being replaced by AliITSsegmentationSSD class. This file also
11 // constains classes derived from AliITSgeomSSD which do nothing but
12 // initilize this one with predefined values.
13 ////////////////////////////////////////////////////////////////////////
14
15 #include <TObject.h>
16 #include <TBRIK.h>
17
18 class TShape;
19
20 class AliITSgeomSSD : public TObject {
21
22  public:
23     AliITSgeomSSD(); // default constructor
24     AliITSgeomSSD(const Float_t *box,Float_t ap,Float_t an,
25                   Int_t np,Float_t *p,Int_t nn,Float_t *n); // Constructor
26     virtual ~AliITSgeomSSD(); // Destructor
27     AliITSgeomSSD(const AliITSgeomSSD &source);// copy constructor
28     virtual AliITSgeomSSD& operator=(const AliITSgeomSSD &source); // = opt.
29     void ResetSSD(const Float_t *box,Float_t ap,Float_t an,
30                   Int_t np,Float_t *p,Int_t nn,Float_t *n); // Filler
31     virtual TShape *GetShape() const {return fShapeSSD;}// get shape
32     virtual Float_t GetDx() const {if(fShapeSSD!=0) return fShapeSSD->GetDx();
33                     else return 0.0;}// get Dx
34     virtual Float_t GetDy() const {if(fShapeSSD!=0) return fShapeSSD->GetDy();
35                     else return 0.0;}// get Dy
36     virtual Float_t GetDz() const {if(fShapeSSD!=0) return fShapeSSD->GetDz();
37                     else return 0.0;}// get Dz
38     virtual Int_t GetNAnodes() const {return fNp-1;}//the number of Anodes "P"
39     virtual Int_t GetNCathodess() const {return fNn-1;}//the number of Cathodes "N"
40     virtual Float_t GetAnodePitch(Int_t i=0) const { //anode pitch for anode i
41         if(i>=0&&i<fNp) return fLowEdgeP[i+1]-fLowEdgeP[i];else return 0.0;}
42     virtual Float_t GetCathodePitch(Int_t i=0) const { // cathode pitch for cathode i
43         if(i>0&&i<fNn) return fLowEdgeN[1]-fLowEdgeN[0];else return 0.0;}
44     virtual Float_t GetAnodeAngle() const {return fAngleP;}//anode strip angle.
45     virtual Float_t GetCathodeAngle() const {return fAngleN;}//cathode strip angle.
46     virtual void SetShape(char *name,char *title,char *mat,
47                           Float_t dx,Float_t dy,Float_t dz){
48         // defines TBRIK with given paramters
49         fShapeSSD = new TBRIK(name,title,mat,dx,dy,dz);};
50     virtual void SetNAnodes(Int_t n) {// sets the number of Anodes "P" and
51         // allocates array of low edges.
52         fNp=n+1;delete fLowEdgeP;fLowEdgeP = new Float_t[fNp];}
53     virtual void SetNCathotess(Int_t n) {// sets the number of Anodes "N" and 
54         // allocates array of low edges.
55         fNn=n+1;delete fLowEdgeN;fLowEdgeN =new  Float_t[fNn];}
56     virtual void SetAnodeLowEdges(Float_t *p){// sets Anode low edges +1.
57         for(Int_t i=0;i<fNp;i++)fLowEdgeP[i]=p[i];}
58     virtual void SetCathodeLowEdges(Float_t *p){// sets Cathodes low edges +1.
59         for(Int_t i=0;i<fNn;i++)fLowEdgeN[i]=p[i];}
60     virtual void SetAnodeAngle(Float_t a){fAngleP=a;} //sets anode angle.
61     virtual void SetCathodeAngle(Float_t a){fAngleN=a;}//sets cathode  angle.
62
63     virtual void Local2Det(Float_t x,Float_t z,Int_t &a,Int_t &c);
64     virtual void Det2Local(Int_t a,Int_t c,Float_t &x,Float_t &z);
65
66     virtual void Print(ostream *os) const;  // Output streamer to standard out.
67     virtual void Read(istream *is);   // Input streamer to standard in.
68
69  protected:
70     // -+-> x
71     //  |
72     //  V
73     //  z
74     TBRIK *fShapeSSD; // comment
75     Int_t   fNp;      // Number of Anode strips.
76     Int_t   fNn;      // Number of Cathode strips.
77     Float_t *fLowEdgeP;  //[fNp] Anode side strip pitch angle==0.
78     Float_t *fLowEdgeN;  //[fNn] Cathode side strip pich angle==0.
79     Float_t fAngleP;  // Anode side strip angle (rad).
80     Float_t fAngleN;  // Cathode side strip angle (rad).
81     // or what other or different information that is needed.
82     
83     ClassDef(AliITSgeomSSD,1) // ITS SSD detector geometry class
84
85 };
86 // Input and output function for standard C++ input/output.
87 ostream &operator<<(ostream &os,AliITSgeomSSD &source);
88 istream &operator>>(istream &os,AliITSgeomSSD &source);
89 #endif
90 //======================================================================
91 #ifndef ALIITSGEOMSSD175_H
92 #define ALIITSGEOMSSD175_H
93 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
94  * See cxx source for full Copyright notice                               */
95
96 /*
97   $Id$
98 */
99
100 //#include "AliITSgeomSSD.h"
101
102
103 class TShape;
104
105 class AliITSgeomSSD175 : public AliITSgeomSSD {
106
107  public:
108     AliITSgeomSSD175();
109
110     // This clas now has version 0 so that it will not be written to a root
111     // file. This is good since there are no longer any data members to this
112     // class. It is only designed to make it easer to define this standard
113     // SDD detector geometry.
114     ClassDef(AliITSgeomSSD175,0) // ITS SSD detector with stips at +- 0.0175 rad.
115
116 };
117 // Input and output function for standard C++ input/output.
118 ostream &operator<<(ostream &os,AliITSgeomSSD175 &source);
119 istream &operator>>(istream &os,AliITSgeomSSD175 &source);
120 #endif
121 //======================================================================
122 #ifndef ALIITSGEOMSSD27575_H
123 #define ALIITSGEOMSSD27575_H
124 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
125  * See cxx source for full Copyright notice                               */
126
127 /*
128   $Id$
129 */
130
131 //#include "AliITSgeomSSD.h"
132
133
134 class TShape;
135
136 class AliITSgeomSSD275and75 : public AliITSgeomSSD {
137
138  public:
139     AliITSgeomSSD275and75();
140     AliITSgeomSSD275and75(Int_t npar,Float_t *par);
141
142     // This clas now has version 0 so that it will not be written to a root
143     // file. This is good since there are no longer any data members to this
144     // class. It is only designed to make it easer to define this standard
145     // SDD detector geometry.
146     ClassDef(AliITSgeomSSD275and75,0) // ITS SSD detector with 0.0275 and 0.0075 rad strip angles.
147
148 };
149 // Input and output function for standard C++ input/output.
150 ostream &operator<<(ostream &os,AliITSgeomSSD275and75 &source);
151 istream &operator>>(istream &os,AliITSgeomSSD275and75 &source);
152 #endif
153 //======================================================================
154 #ifndef ALIITSGEOMSSD75275_H
155 #define ALIITSGEOMSSD75275_H
156 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
157  * See cxx source for full Copyright notice                               */
158
159 /*
160   $Id$
161 */
162
163 //#include "AliITSgeomSSD.h"
164
165 class TShape;
166
167 class AliITSgeomSSD75and275 : public AliITSgeomSSD {
168
169  public:
170     AliITSgeomSSD75and275();
171     AliITSgeomSSD75and275(Int_t npar,Float_t *par);
172
173     // This clas now has version 0 so that it will not be written to a root
174     // file. This is good since there are no longer any data members to this
175     // class. It is only designed to make it easer to define this standard
176     // SSD detector geometry.
177     ClassDef(AliITSgeomSSD75and275,0) // ITS SSD detector geometry class for 0.0075 and 0.0275 rad angled strips.
178
179 };
180 // Input and output function for standard C++ input/output.
181 ostream &operator<<(ostream &os,AliITSgeomSSD75and275 &source);
182 istream &operator>>(istream &os,AliITSgeomSSD75and275 &source);
183 #endif