- private:
- // define shape of active area using ROOT shapes so that they can
- // be easly plotted. Inputs to TBRIK are
- // Shape name (what ever that is)
- // Shape title (what ever that means)
- // name of material (something I took from ITSgeometry.tme file
- // dx => 1/2 thickness of wafer's active volume (cm)
- // dy => 1/2 r*phi size of active volume (cm)
- // dz => 1/2 size of active volume (cm)
- TBRIK *fShapeSSD;
- // Other infomation like.
- // Float_t fTopPitch; // cm
- // Float_t fTopWidth; // cm
- // Float_t fTopLength; // cm
- // Float_t fTopAngle; // cm
- // Float_t fBottomPitch; // cm
- // Float_t fBottomWidth; // cm
- // Float_t fBottomLength; // cm
- // Float_t fBottomAngle; // cm
+ public:
+ AliITSgeomSSD(); // default constructor
+ AliITSgeomSSD(const Float_t *box,Float_t ap,Float_t an,
+ Int_t np,Float_t *p,Int_t nn,Float_t *n); // Constructor
+ virtual ~AliITSgeomSSD(); // Destructor
+ AliITSgeomSSD(const AliITSgeomSSD &source);// copy constructor
+ virtual AliITSgeomSSD& operator=(const AliITSgeomSSD &source); // = opt.
+ void ResetSSD(const Float_t *box,Float_t ap,Float_t an,
+ Int_t np,Float_t *p,Int_t nn,Float_t *n); // Filler
+ virtual TShape *GetShape() const {return fShapeSSD;}// get shape
+ virtual Float_t GetDx() const {if(fShapeSSD!=0) return fShapeSSD->GetDx();
+ else return 0.0;}// get Dx
+ virtual Float_t GetDy() const {if(fShapeSSD!=0) return fShapeSSD->GetDy();
+ else return 0.0;}// get Dy
+ virtual Float_t GetDz() const {if(fShapeSSD!=0) return fShapeSSD->GetDz();
+ else return 0.0;}// get Dz
+ virtual Int_t GetNAnodes() const {return fNp-1;}//the number of Anodes "P"
+ virtual Int_t GetNCathodess() const {return fNn-1;}//the number of Cathodes "N"
+ virtual Float_t GetAnodePitch(Int_t i=0) const { //anode pitch for anode i
+ if(i>=0&&i<fNp) return fLowEdgeP[i+1]-fLowEdgeP[i];else return 0.0;}
+ virtual Float_t GetCathodePitch(Int_t i=0) const { // cathode pitch for cathode i
+ if(i>0&&i<fNn) return fLowEdgeN[1]-fLowEdgeN[0];else return 0.0;}
+ virtual Float_t GetAnodeAngle() const {return fAngleP;}//anode strip angle.
+ virtual Float_t GetCathodeAngle() const {return fAngleN;}//cathode strip angle.
+ virtual void SetShape(char *name,char *title,char *mat,
+ Float_t dx,Float_t dy,Float_t dz){
+ // defines TBRIK with given paramters
+ fShapeSSD = new TBRIK(name,title,mat,dx,dy,dz);};
+ virtual void SetNAnodes(Int_t n) {// sets the number of Anodes "P" and
+ // allocates array of low edges.
+ fNp=n+1;delete fLowEdgeP;fLowEdgeP = new Float_t[fNp];}
+ virtual void SetNCathotess(Int_t n) {// sets the number of Anodes "N" and
+ // allocates array of low edges.
+ fNn=n+1;delete fLowEdgeN;fLowEdgeN =new Float_t[fNn];}
+ virtual void SetAnodeLowEdges(Float_t *p){// sets Anode low edges +1.
+ for(Int_t i=0;i<fNp;i++)fLowEdgeP[i]=p[i];}
+ virtual void SetCathodeLowEdges(Float_t *p){// sets Cathodes low edges +1.
+ for(Int_t i=0;i<fNn;i++)fLowEdgeN[i]=p[i];}
+ virtual void SetAnodeAngle(Float_t a){fAngleP=a;} //sets anode angle.
+ virtual void SetCathodeAngle(Float_t a){fAngleN=a;}//sets cathode angle.
+
+ virtual void Local2Det(Float_t x,Float_t z,Int_t &a,Int_t &c);
+ virtual void Det2Local(Int_t a,Int_t c,Float_t &x,Float_t &z);
+
+ virtual void Print(ostream *os) const; // Output streamer to standard out.
+ virtual void Read(istream *is); // Input streamer to standard in.
+
+ protected:
+ // -+-> x
+ // |
+ // V
+ // z
+ TBRIK *fShapeSSD; // comment
+ Int_t fNp; // Number of Anode strips.
+ Int_t fNn; // Number of Cathode strips.
+ Float_t *fLowEdgeP; //[fNp] Anode side strip pitch angle==0.
+ Float_t *fLowEdgeN; //[fNn] Cathode side strip pich angle==0.
+ Float_t fAngleP; // Anode side strip angle (rad).
+ Float_t fAngleN; // Cathode side strip angle (rad).