]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSgeomSDD.h
Corrected deletion, additional protection
[u/mrichter/AliRoot.git] / ITS / AliITSgeomSDD.h
1 #ifndef ALIITSGEOMSDD_H
2 #define ALIITSGEOMSDD_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 ////////////////////////////////////////////////////////////////////////
10 // This class is for the Silicon Drift Detector, SDD, specific geometry.
11 // It is being replaced by AliITSsegmentationSDD class. This file also
12 // constains classes derived from AliITSgeomSDD which do nothing but
13 // initilize this one with predefined values.
14 ////////////////////////////////////////////////////////////////////////
15
16 #include <TObject.h>
17 #include <TBRIK.h>
18
19 class TShape;
20
21 class AliITSgeomSDD: public TObject {
22  public:
23     AliITSgeomSDD();
24     AliITSgeomSDD(const Float_t *box,Float_t per,Float_t vel,
25                   Float_t axL,Float_t axR,
26                   Int_t nA0,Float_t *le0,Int_t nA1,Float_t *le1);
27     AliITSgeomSDD(AliITSgeomSDD &source);
28     AliITSgeomSDD& operator=(AliITSgeomSDD &source);
29     virtual ~AliITSgeomSDD();
30     void ResetSDD(const Float_t *box,Float_t per,Float_t vel,
31                   Float_t axL,Float_t axR,
32                   Int_t nA0,Float_t *le0,Int_t nA1,Float_t *le1);
33     virtual TShape *GetShape() const {return fShapeSDD;}
34     virtual Float_t GetDx() const { // Get TBRIK Dx
35         if(fShapeSDD!=0) return fShapeSDD->GetDx();
36         else return 0.0;}
37     virtual Float_t GetDy() const {// Get TBRIK Dy
38         if(fShapeSDD!=0) return fShapeSDD->GetDy();
39         else return 0.0;}
40     virtual Float_t GetDz() const {// Get TBRIK Dz
41         if(fShapeSDD!=0) return fShapeSDD->GetDz();
42         else return 0.0;}
43     virtual Float_t GetAnodeX(Int_t a,Int_t s) const {
44         // returns X position of anode
45         a = 0; if(s==0) return fAnodeXL; else return fAnodeXR;}
46     virtual Float_t GetAnodeZ(Int_t a,Int_t s)const {
47         // returns X position of anode
48         if(s==0) return 0.5*(fAnodeLowEdgeL[a]+fAnodeLowEdgeL[a+1]);
49         else return 0.5*(fAnodeLowEdgeR[a]+fAnodeLowEdgeR[a+1]);}
50     virtual void SetNAnodesL(Int_t s)
51         {fNAnodesL = s;} // sets the number of anodes on side 0.
52     virtual void SetNAnodesR(Int_t s)
53         {fNAnodesR = s;} // sets the anodes spacing for side 1.
54     virtual void SetSamplingPeriod(Float_t s)
55         {fPeriod = s;} // sets the clock sampling period s.
56     virtual void SetDriftVelocity(Float_t s)
57         {fDvelocity = s;} // sets the SDD Drift velocity cm/s.
58     virtual void SetShape(char *name,char *title,char *mat,
59                           Float_t dx,Float_t dy,Float_t dz)
60                          {fShapeSDD = new TBRIK(name,title,mat,dx,dy,dz);}
61     virtual void Local2Det(Float_t xl,Float_t zl,Int_t &a,Int_t &t,Int_t &s);
62     virtual void Det2Local(Int_t a,Int_t t,Int_t s,Float_t &xl,Float_t &zl);
63     virtual void Print(ostream *os) const; // Output streamer to standard out.
64     virtual void Read(istream *is);   // Input streamer to standard in.
65     // or what other or different information that is needed.
66
67  protected:
68     // (L)  -+-> x  (R)
69     //       |
70     //       V z
71     Float_t fPeriod; // ADC sampiling period
72     Float_t fDvelocity; // Drift velocity
73     Int_t   fNAnodesL;  // number of Anodes on size 0
74     Int_t   fNAnodesR;  // number of Anodes on size 1
75     Float_t fAnodeXL;   // Anode location in x Left side
76     Float_t fAnodeXR;   // Anode location in x Right side
77     Float_t *fAnodeLowEdgeL; //[fNAnodesL] Anode spacing left edge
78     Float_t *fAnodeLowEdgeR; //[fNAnodesR] Anode spacing right edge
79     TBRIK *fShapeSDD;     // shape of sensitive volume
80
81     ClassDef(AliITSgeomSDD,1) // ITS SDD detector geometry class
82
83 };
84 // Input and output function for standard C++ input/output.
85 ostream &operator<<(ostream &os,AliITSgeomSDD &source);
86 istream &operator>>(istream &os,AliITSgeomSDD &source);
87 #endif
88 //======================================================================
89 #ifndef ALIITSGEOMSDD256_H
90 #define ALIITSGEOMSDD256_H
91 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
92  * See cxx source for full Copyright notice                               */
93
94 /*
95   $Id$
96 */
97
98 //#include "AliITSgeomSDD.h"
99
100
101 class AliITSgeomSDD256 : public AliITSgeomSDD {
102
103  public:
104     AliITSgeomSDD256();
105     AliITSgeomSDD256(Int_t npar,const Float_t *par);
106
107     // This clas now has version 0 so that it will not be written to a root
108     // file. This is good since there are no longer any data members to this
109     // class. It is only designed to make it easer to define this standard
110     // SDD detector geometry.
111     ClassDef(AliITSgeomSDD256,1) // ITS SDD detector geometry class for 256 anodes per side
112
113 };
114 // Input and output function for standard C++ input/output.
115 ostream &operator<<(ostream &os,AliITSgeomSDD256 &source);
116 istream &operator>>(istream &os,AliITSgeomSDD256 &source);
117 #endif
118 //======================================================================
119 #ifndef ALIITSGEOMSDD300_H
120 #define ALIITSGEOMSDD300_H
121 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
122  * See cxx source for full Copyright notice                               */
123
124 /*
125   $Id$
126 */
127
128 //#include "AliITSgeomSDD.h"
129
130
131 class AliITSgeomSDD300 : public AliITSgeomSDD {
132
133  public:
134     AliITSgeomSDD300();
135
136     // This clas now has version 0 so that it will not be written to a root
137     // file. This is good since there are no longer any data members to this
138     // class. It is only designed to make it easer to define this standard
139     // SDD detector geometry.
140     ClassDef(AliITSgeomSDD300,1) // ITS SDD detector geometry class for 300 anodes per side
141
142 };
143 // Input and output function for standard C++ input/output.
144 ostream &operator<<(ostream &os,AliITSgeomSDD300 &source);
145 istream &operator>>(istream &os,AliITSgeomSDD300 &source);
146 #endif