1 #ifndef ALIITSSEGMENTATIONUPGRADE_H
2 #define ALIITSSEGMENTATIONUPGRADE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
10 //////////////////////////////////////////////////
11 // Authors A.Mastroserio //
13 // annalisa.mastroserio@cern.ch //
14 // cristina.terrevoli@ba.infn.it //
15 // ITS Upgrade segmentation virtual base class //
17 //////////////////////////////////////////////////
20 class AliITSsegmentationUpgrade : public TObject {
23 AliITSsegmentationUpgrade();
24 AliITSsegmentationUpgrade(TArrayD Radii, TArrayD widths, TArrayD Length);
25 virtual ~AliITSsegmentationUpgrade(){}//dtor
28 // Set Detector Segmentation Parameters
29 virtual void SetSegmentation(Int_t ilayer, Double_t xsize, Double_t zsize); // x/z size in microns
30 virtual void SetFullSegmentation(TArrayD xsize, TArrayD zsize); // x/z size in microns
31 virtual void GetNpad(Int_t ilayer, Int_t &nx, Int_t &nz);
33 // Transformation from Geant cm detector center local coordinates
34 // to detector segmentation/cell coordiantes starting from (0,0).
35 Bool_t GlobalToDet(Int_t ilayer, Double_t x,Double_t y,Double_t z,Double_t &xl,Double_t &zl);
36 // Transformation from detector segmentation/cell coordiantes starting
37 // from (0,0) to Geant cm detector center local coordinates.
38 Bool_t DetToGlobal(Int_t ilayer, Double_t xl,Double_t zl,Double_t &x,Double_t &y, Double_t &z) const;
41 // Get Detector Segmentation Parameters
44 Double_t GetCellSizeX(Int_t ilayer){return fCellSizeX.At(ilayer);}
45 Double_t GetCellSizeZ(Int_t ilayer){return fCellSizeZ.At(ilayer);}
46 Double_t GetHalfLength(Int_t ilayer){return fHalfLength.At(ilayer);}
47 Double_t GetRadius(Int_t ilayer) {return fMinRadius.At(ilayer);}
49 TArrayD GetFullCellSizeX() {return fCellSizeX;}
50 TArrayD GetFullCellSizeZ() {return fCellSizeZ;}
52 virtual void GetSegmentation(Int_t ilayer, Double_t &xsize, Double_t &zsize) const;
55 virtual Float_t GetThickness(Int_t ilayer) const {if(ilayer > fMinRadius.GetSize() || ilayer < 0) return -1; else return fMaxRadius.At(ilayer) - fMinRadius.At(ilayer);}
57 static Int_t GetNLayers();
61 TArrayD fCellSizeX; //Size for each pixel in x -microns
62 TArrayD fCellSizeZ; //Size for each pixel in z -microns
63 TArrayD fMinRadius ; // layer inner radius
64 TArrayD fMaxRadius ; // layer outer radius
65 TArrayD fHalfLength ; // layer length
67 AliITSsegmentationUpgrade(const AliITSsegmentationUpgrade &source);
68 AliITSsegmentationUpgrade& operator=(const AliITSsegmentationUpgrade &source);
70 ClassDef(AliITSsegmentationUpgrade,1) //Segmentation class for Upgrade