Changing once more (hopefully we get it correct this time...) the logic to trig the...
[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 new TBRIK(fName.Data(),
34                            fTitle.Data(),fMat.Data(),GetDx(),GetDy(),GetDz());}
35     virtual Float_t GetDx() const {return fDx;} // Get TBRIK Dx
36     virtual Float_t GetDy() const {return fDy;}// Get TBRIK Dy
37     virtual Float_t GetDz() const {return fDz;}// Get TBRIK Dz
38     virtual Float_t GetAnodeX(Int_t a,Int_t s) const {
39         // returns X position of anode
40         a = 0; if(s==0) return fAnodeXL; else return fAnodeXR;}
41     virtual Float_t GetAnodeZ(Int_t a,Int_t s)const {
42         // returns X position of anode
43         if(s==0) return 0.5*(fAnodeLowEdgeL[a]+fAnodeLowEdgeL[a+1]);
44         else return 0.5*(fAnodeLowEdgeR[a]+fAnodeLowEdgeR[a+1]);}
45     virtual void SetNAnodesL(Int_t s)
46         {fNAnodesL = s;} // sets the number of anodes on side 0.
47     virtual void SetNAnodesR(Int_t s)
48         {fNAnodesR = s;} // sets the anodes spacing for side 1.
49     virtual void SetSamplingPeriod(Float_t s)
50         {fPeriod = s;} // sets the clock sampling period s.
51     virtual void SetDriftVelocity(Float_t s)
52         {fDvelocity = s;} // sets the SDD Drift velocity cm/s.
53     virtual void SetShape(char *name,char *title,char *mat,
54                           Float_t dx,Float_t dy,Float_t dz){fName=name;
55                           fTitle=title;fMat=mat;fDx=dx;fDy=dy;fDz=dz;}
56     virtual void Local2Det(Float_t xl,Float_t zl,Int_t &a,Int_t &t,Int_t &s);
57     virtual void Det2Local(Int_t a,Int_t t,Int_t s,Float_t &xl,Float_t &zl);
58     virtual void Print(ostream *os) const; // Output streamer to standard out.
59     virtual void Read(istream *is);   // Input streamer to standard in.
60     virtual void Print(Option_t *option="") const {TObject::Print(option);}
61     virtual Int_t Read(const char *name) {return TObject::Read(name);}
62     // or what other or different information that is needed.
63
64  protected:
65     // (L)  -+-> x  (R)
66     //       |
67     //       V z
68     Float_t fPeriod; // ADC sampiling period
69     Float_t fDvelocity; // Drift velocity
70     Int_t   fNAnodesL;  // number of Anodes on size 0
71     Int_t   fNAnodesR;  // number of Anodes on size 1
72     Float_t fAnodeXL;   // Anode location in x Left side
73     Float_t fAnodeXR;   // Anode location in x Right side
74     Float_t *fAnodeLowEdgeL; //[fNAnodesL] Anode spacing left edge
75     Float_t *fAnodeLowEdgeR; //[fNAnodesR] Anode spacing right edge
76     TString fName;  // Object name
77     TString fTitle; // Ojbect title
78     TString fMat;   // Object material name  Replacement for TBRIK
79     Float_t fDx;    // half length in z  Replacement for TBRIK
80     Float_t fDy;    // half length in y  Replacement for TBRIK
81     Float_t fDz;    // half length in z  Replacement for TBRIK
82
83     ClassDef(AliITSgeomSDD,2) // ITS SDD detector geometry class
84
85 };
86 // Input and output function for standard C++ input/output.
87 ostream &operator<<(ostream &os,AliITSgeomSDD &source);
88 istream &operator>>(istream &os,AliITSgeomSDD &source);
89 #endif
90 //======================================================================
91 #ifndef ALIITSGEOMSDD256_H
92 #define ALIITSGEOMSDD256_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 "AliITSgeomSDD.h"
101
102
103 class AliITSgeomSDD256 : public AliITSgeomSDD {
104
105  public:
106     AliITSgeomSDD256();
107     AliITSgeomSDD256(Int_t npar,const Float_t *par);
108
109     // This clas now has version 0 so that it will not be written to a root
110     // file. This is good since there are no longer any data members to this
111     // class. It is only designed to make it easer to define this standard
112     // SDD detector geometry.
113     ClassDef(AliITSgeomSDD256,1) // ITS SDD detector geometry class for 256 anodes per side
114
115 };
116 // Input and output function for standard C++ input/output.
117 ostream &operator<<(ostream &os,AliITSgeomSDD256 &source);
118 istream &operator>>(istream &os,AliITSgeomSDD256 &source);
119 #endif
120 //======================================================================
121 #ifndef ALIITSGEOMSDD300_H
122 #define ALIITSGEOMSDD300_H
123 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
124  * See cxx source for full Copyright notice                               */
125
126 /*
127   $Id$
128 */
129
130 //#include "AliITSgeomSDD.h"
131
132 class AliITSgeomSDD300 : public AliITSgeomSDD {
133
134  public:
135     AliITSgeomSDD300();
136
137     // This clas now has version 0 so that it will not be written to a root
138     // file. This is good since there are no longer any data members to this
139     // class. It is only designed to make it easer to define this standard
140     // SDD detector geometry.
141     ClassDef(AliITSgeomSDD300,1) // ITS SDD detector geometry class for 300 anodes per side
142
143 };
144 // Input and output function for standard C++ input/output.
145 ostream &operator<<(ostream &os,AliITSgeomSDD300 &source);
146 istream &operator>>(istream &os,AliITSgeomSDD300 &source);
147 #endif