AliFMDRing.h

Go to the documentation of this file.
00001 #ifndef ALIFMDRING_H
00002 #define ALIFMDRING_H
00003 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
00004  * reserved. 
00005  *
00006  * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
00007  *
00008  * See cxx source for full Copyright notice                               
00009  */
00010 //__________________________________________________________________
00011 //
00012 // Parameters of the FMD rings. 
00013 // 
00014 // This class is responsible to make the (common) rings of the three
00015 // sub-detectors. 
00016 //
00017 #ifndef ROOT_TNamed
00018 # include <TNamed.h>
00019 #endif
00020 #ifndef ROOT_TObjArray
00021 # include <TObjArray.h>
00022 #endif
00023 
00024 class TBrowser;
00025 class TVector2;
00026 
00036 class AliFMDRing : public TNamed
00037 {
00038 public:
00041   AliFMDRing(Char_t fId);
00043   virtual ~AliFMDRing() {}
00045   virtual void Init();
00046   
00048   void SetId(Char_t x) { fId = x; }
00050   void SetBondingWidth(Double_t x=.5) { fBondingWidth = x; }
00052   void SetWaferRadius(Double_t x=13.4/2) { fWaferRadius = x; }
00054   void SetSiThickness(Double_t x=.03) { fSiThickness = x; }
00056   void SetLowR(Double_t x) { fLowR = x; }
00058   void SetHighR(Double_t x) { fHighR = x; }
00060   void SetTheta(Double_t x) { fTheta = x; }
00062   void SetNStrips(Int_t x) { fNStrips = x; }
00064   void SetRingDepth(Double_t x) { fRingDepth = x; }
00066   void SetLegRadius(Double_t x=.5) { fLegRadius = x; }
00068   void SetLegLength(Double_t x=1) { fLegLength = x; }
00070   void SetLegOffset(Double_t x=2) { fLegOffset = x; }
00072   void SetModuleSpacing(Double_t x=1) { fModuleSpacing = x; }
00074   void SetPrintboardThickness(Double_t x=.1) { fPrintboardThickness = x; }
00076   void SetCopperThickness(Double_t x=.01) { fCopperThickness = x; }
00078   void SetChipThickness(Double_t x=.01) { fChipThickness = x; }
00080   void SetSpacing(Double_t x=.05) { fSpacing = x; }
00081 
00083   Char_t GetId() const { return fId; }
00085   Double_t GetBondingWidth() const { return fBondingWidth; }
00087   Double_t GetWaferRadius() const { return fWaferRadius; }
00089   Double_t GetSiThickness() const { return fSiThickness; }
00091   Double_t GetMinR() const { return fMinR; }
00093   Double_t GetMaxR() const { return fMaxR; }
00095   Double_t GetLowR() const { return fLowR; }
00097   Double_t GetHighR() const { return fHighR; }
00099   Double_t GetTheta() const { return fTheta; }
00101   Int_t GetNStrips() const { return fNStrips; }
00103   Int_t GetNSectors() const { return Int_t(360. / fTheta); }
00105   Int_t GetNModules() const { return GetNSectors() / 2; }
00107   Double_t GetRingDepth() const { return fRingDepth; }
00109   Double_t GetLegRadius() const { return fLegRadius; }
00111   Double_t GetLegLength() const { return fLegLength; }
00113   Double_t GetLegOffset() const { return fLegOffset; }
00115   Double_t GetModuleSpacing() const { return fModuleSpacing; }
00117   Double_t GetPrintboardThickness() const { return fPrintboardThickness; }
00119   Double_t GetCopperThickness() const { return fCopperThickness; }
00121   Double_t GetChipThickness() const { return fChipThickness; }
00123   Double_t GetSpacing() const { return fSpacing; }
00125   Double_t GetPitch() const { return (fMaxR - fMinR) / fNStrips; }
00127   Double_t GetStripRadius(UShort_t strip) const;
00128   
00130   const TObjArray& GetVerticies() const { return fVerticies; }
00132   Int_t GetNVerticies() const { return fVerticies.GetEntries(); }
00135   TVector2* GetVertex(Int_t i) const;
00136      
00138   void Detector2XYZ(UShort_t sector, UShort_t strip, 
00139                     Double_t& x, Double_t& y, Double_t& z) const;
00141   Bool_t XYZ2Detector(Double_t x, Double_t y, Double_t z, 
00142                       UShort_t& sector, UShort_t& strip) const;
00143 private: 
00144   Char_t        fId;                    // The Id of this ring type
00145   Double_t      fBondingWidth;          // With of bonding pad on sensor
00146   Double_t      fWaferRadius;           // Size of wafer sensor was made from
00147   Double_t      fSiThickness;           // Thickness of sensor
00148   Double_t      fLowR;                  // Lower radius of ring
00149   Double_t      fHighR;                 // Upper radius of ring
00150   Double_t      fMinR;                  // Lower radius of active strips
00151   Double_t      fMaxR;                  // Upper radius of active strips
00152   Double_t      fTheta;                 // Opening angle of the silicon wafers
00153   Int_t         fNStrips;               // Number of strips
00154   Double_t      fRingDepth;             // How far the ring extends beyond z
00155   Double_t      fLegRadius;             // Radius of support legs
00156   Double_t      fLegLength;             // Radius of support legs
00157   Double_t      fLegOffset;             // Radius of support legs
00158   Double_t      fModuleSpacing;         // Staggering offset
00159   Double_t      fPrintboardThickness;   // Thickness of print board
00160   Double_t      fCopperThickness;       // Thickness of Cu on print board
00161   Double_t      fChipThickness;         // Thickness of chip on print board
00162   Double_t      fSpacing;               // Spacing between si and PCB
00163   
00164   TObjArray     fVerticies;             // List of verticies
00165 
00166   ClassDef(AliFMDRing, 0);
00167 };
00168 #endif 
00169 //____________________________________________________________________
00170 //
00171 // Local Variables:
00172 //   mode: C++
00173 // End:
00174 //
00175 // EOF
00176 //

Generated on Fri Mar 24 17:11:21 2006 for ALICE FMD Off-line by  doxygen 1.4.6