X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=FMD%2FAliFMDRing.h;h=b2914d3f95959558ee172a58f5ceb23740435b10;hb=a9d940490b1d829cf52aadadd108e00b76713c8c;hp=f05f8b7d339a11c62b0811f3dea956976d21ac26;hpb=ed82d35ec5e88ef7df1d7a5baa882467571fe3c7;p=u%2Fmrichter%2FAliRoot.git diff --git a/FMD/AliFMDRing.h b/FMD/AliFMDRing.h index f05f8b7d339..b2914d3f959 100644 --- a/FMD/AliFMDRing.h +++ b/FMD/AliFMDRing.h @@ -28,136 +28,370 @@ class TBrowser; class TVector2; -/** @brief Geometry description and parameters of a ring in the FMD - detector. - - As there are only 2 kinds of rings @e Inner (@c 'I') and @e - Outer (@c 'O') the two objects of this class is owned by the - Geometry::FMD singleton object. The 3 Geometry::FMDDetector - objects shares these two instances as needed. - @ingroup FMD_base +/** + * @brief Geometry description and parameters of a ring in the FMD + * detector. + * + * As there are only 2 kinds of rings @e Inner (@c 'I') and @e Outer + * (@c 'O') the two objects of this class is owned by the + * AliFMDGeometry singleton object. The 3 AliFMDDetector objects + * shares these two instances as needed. + * @ingroup FMD_base */ class AliFMDRing : public TNamed { public: - /** CTOR - @param fId Ring ID */ + /** + * CTOR + * + * @param fId Ring ID + */ AliFMDRing(Char_t fId); - /** DTOR */ + /** + * DTOR + */ virtual ~AliFMDRing() {} - /** Initialize the ring geometry */ + /** + * Initialize the ring geometry + */ virtual void Init(); - /** @param x Value of The Id of this ring type */ + /** + * + * @param x Value of The Id of this ring type + */ void SetId(Char_t x) { fId = x; } - /** @param x Value of With of bonding pad on sensor */ + /** + * + * @param x Value of With of bonding pad on sensor + */ void SetBondingWidth(Double_t x=.5) { fBondingWidth = x; } - /** @param x Value of Size of wafer the sensor was made from */ + /** + * + * @param x Value of Size of wafer the sensor was made from + */ void SetWaferRadius(Double_t x=13.4/2) { fWaferRadius = x; } - /** @param x Value of Thickness of sensor */ + /** + * + * @param x Value of Thickness of sensor + */ void SetSiThickness(Double_t x=.032) { fSiThickness = x; } - /** @param x Value of Lower radius of ring */ + /** + * + * @param x Value of Lower radius of ring + */ void SetLowR(Double_t x) { fLowR = x; } - /** @param x Value of Upper radius of ring */ + /** + * + * @param x Value of Upper radius of ring + */ void SetHighR(Double_t x) { fHighR = x; } - /** @param x Value of Opening angle of the silicon wafers */ + /** + * + * @param x Value of Opening angle of the silicon wafers + */ void SetTheta(Double_t x) { fTheta = x; } - /** @param x Value of Number of strips */ + /** + * + * @param x Value of Number of strips + */ void SetNStrips(Int_t x) { fNStrips = x; } - /** @param x Value of How far the ring extends beyond the z value given. */ + /** + * + * @param x Value of How far the ring extends beyond the z value given. + */ void SetRingDepth(Double_t x) { fRingDepth = x; } - /** @param x Value of Radius of support legs */ - void SetLegRadius(Double_t x=.2) { fLegRadius = x; } - /** @param x Value of Radius of support legs */ - void SetLegLength(Double_t x=1) { fLegLength = x; } - /** @param x Value of Radius of support legs */ + /** + * + * @param x Value of Radius of support legs + */ + void SetLegRadius(Double_t x=.25) { fLegRadius = x; } + /** + * + * @param x Value of Radius of support legs + */ + void SetLegLength(Double_t x=.9) { fLegLength = x; } + /** + * + * @param x Value of Radius of support legs + */ void SetLegOffset(Double_t x=2) { fLegOffset = x; } - /** @param x Value of Staggering offset */ - void SetModuleSpacing(Double_t x=.6) { fModuleSpacing = x; } - /** @param x Value of Thickness of print board */ - void SetPrintboardThickness(Double_t x=.1) { fPrintboardThickness = x; } - /** @param x Value of Thickness of copper on print board */ + /** + * + * @param x Value of Staggering offset + */ + void SetModuleSpacing(Double_t x=.5) { fModuleSpacing = x; } + /** + * + * @param x Value of Thickness of print board + */ + void SetPrintboardThickness(Double_t x=.08) { fPrintboardThickness = x; } + /** + * + * @param x Value of Thickness of copper on print board + */ void SetCopperThickness(Double_t x=.01) { fCopperThickness = x; } - /** @param x Value of Thickness of chip on print board */ + /** + * + * @param x Value of Thickness of chip on print board + */ void SetChipThickness(Double_t x=.01) { fChipThickness = x; } - /** @param x Value of spacing between si and PCB */ + /** + * + * @param x Value of spacing between si and PCB + */ void SetSpacing(Double_t x=.05) { fSpacing = x; } - /** @param x Thickness of honeycomb plate */ + /** + * + * @param x Thickness of honeycomb plate + */ void SetHoneycombThickness(Double_t x=0.65) { fHoneycombThickness = x; } - /** @param x Thickness of aluminium of honeycomb */ + /** + * + * @param x Thickness of aluminium of honeycomb + */ void SetAlThickness(Double_t x=.1) { fAlThickness = x; } - /** @return The Id of this ring type */ + /** + * + * @return The Id of this ring type + */ Char_t GetId() const { return fId; } - /** @return With of bonding pad on sensor */ + /** + * + * @return With of bonding pad on sensor + */ Double_t GetBondingWidth() const { return fBondingWidth; } - /** @return Size of wafer the sensor was made from */ + /** + * + * @return Size of wafer the sensor was made from + */ Double_t GetWaferRadius() const { return fWaferRadius; } - /** @return Thickness of sensor */ + /** + * + * @return Thickness of sensor + */ Double_t GetSiThickness() const { return fSiThickness; } - /** @return Minimum r for an active strip */ + /** + * + * @return Minimum r for an active strip + */ Double_t GetMinR() const { return fMinR; } - /** @return Maximum r for an active strip */ + /** + * + * @return Maximum r for an active strip + */ Double_t GetMaxR() const { return fMaxR; } - /** @return Lower radius of ring */ + /** + * + * @return Lower radius of ring + */ Double_t GetLowR() const { return fLowR; } - /** @return Upper radius of ring */ + /** + * + * @return Upper radius of ring + */ Double_t GetHighR() const { return fHighR; } - /** @return Opening angle of the sector (half that of silicon wafers) */ + /** + * + * @return Opening angle of the sector (half that of silicon wafers) + */ Double_t GetTheta() const { return fTheta; } - /** @return Number of strips */ + /** + * + * @return Number of strips + */ Int_t GetNStrips() const { return fNStrips; } - /** @return Number of sectors */ + /** + * + * @return Number of sectors + */ Int_t GetNSectors() const { return Int_t(360. / fTheta); } - /** @return Number of modules (2 sectors per module) */ + /** + * + * @return Number of modules (2 sectors per module) + */ Int_t GetNModules() const { return GetNSectors() / 2; } - /** @return How far the ring extends beyond the z value given. */ + /** + * + * @return How far the ring extends beyond the z value given. + */ Double_t GetRingDepth() const { return fRingDepth; } - /** @return Radius of support legs */ + /** + * + * @return Radius of support legs + */ Double_t GetLegRadius() const { return fLegRadius; } - /** @return Radius of support legs */ + /** + * + * @return Radius of support legs + */ Double_t GetLegLength() const { return fLegLength; } - /** @return Radius of support legs */ + /** + * + * @return Radius of support legs + */ Double_t GetLegOffset() const { return fLegOffset; } - /** @return Staggering offset */ + /** + * + * @return Staggering offset + */ Double_t GetModuleSpacing() const { return fModuleSpacing; } - /** @return Thickness of print board */ + /** + * + * @return Thickness of print board + */ Double_t GetPrintboardThickness() const { return fPrintboardThickness; } - /** @return Thickness copper of print board */ + /** + * + * @return Thickness copper of print board + */ Double_t GetCopperThickness() const { return fCopperThickness; } - /** @return Thickness chip of print board */ + /** + * + * @return Thickness chip of print board + */ Double_t GetChipThickness() const { return fChipThickness; } - /** @return Value of spacing between si and PCB */ + /** + * + * @return Value of spacing between si and PCB + */ Double_t GetSpacing() const { return fSpacing; } - /** @return Thickness of honeycomb plate */ + /** + * + * @return Thickness of honeycomb plate + */ Double_t GetHoneycombThickness() const { return fHoneycombThickness; } - /** @return Thickness of aluminium of honeycomb */ + /** + * + * @return Thickness of aluminium of honeycomb + */ Double_t GetAlThickness() const { return fAlThickness; } - /** @return The strip pitch */ + /** + * + * @return The strip pitch + */ Double_t GetPitch() const { return (fMaxR - fMinR) / fNStrips; } - /** @return Radius (in cm) correspondig to strip @a strip */ + /** + * + * @return Radius (in cm) correspondig to strip @a strip + */ Double_t GetStripRadius(UShort_t strip) const; - /** @return Full depth of this (half) ring */ + /** + * + * @return Full depth of (low) modules in this (half) ring + */ + Double_t GetModuleDepth() const; + /** + * + * @return Full depth of this (half) ring + */ Double_t GetFullDepth() const; - /** Get the inner radius of the digitizer cards */ + /** + * Get the inner radius of the digitizer cards + * + * @return The inner radius of the digitizer cards + */ Double_t GetFMDDLowR() const { return 1.2*GetLowR(); } - /** Get the outer radius of the digitizer cards */ + /** + * Get the outer radius of the digitizer cards + * + * @return The outer radius of the digitizer cards + */ Double_t GetFMDDHighR() const { return .95*GetHighR(); } - /** @return Thickness of print board */ + /** + * + * @return Thickness of print board + */ Double_t GetFMDDPrintboardThickness() const { return 2*fPrintboardThickness; } - /** @return Thickness copper of print board */ + /** + * + * @return Thickness copper of print board + */ Double_t GetFMDDCopperThickness() const { return 2*fCopperThickness; } - /** @return Thickness chip of print board */ + /** + * + * @return Thickness chip of print board + */ Double_t GetFMDDChipThickness() const { return 2*fChipThickness; } - /** @return List of verticies */ + /** + * + * @return List of verticies + */ const TObjArray& GetVerticies() const { return fVerticies; } - /** @return Number of verticies */ + /** + * + * @return Number of verticies + */ Int_t GetNVerticies() const { return fVerticies.GetEntries(); } - /** @param i Vertex number - @return the ith vertex */ + /** + * @param i Vertex number + * + * @return the ith vertex + */ TVector2* GetVertex(Int_t i) const; - + /** + * + * @return List of verticies + */ + const TObjArray& GetSensorVerticies() const { return fSensorVerticies; } + /** + * @param i Vertex number + * + * @return the ith vertex + */ + TVector2* GetSensorVertex(Int_t i) const; + /** + * + * @return List of verticies + */ + const TObjArray& GetHybridVerticies() const { return fHybridVerticies; } + /** + * @param i Vertex number + * + * @return the ith vertex + */ + TVector2* GetHybridVertex(Int_t i) const; + + /** + * Get a list of feet positions + * + * + * @return List TVector2 of feet positions on hybrid card + */ + const TObjArray& GetFeetPositions() const { return fFeetPositions; } + /** + * Get the number of feet positions + * + * + * @return Number of feet positions + */ + Int_t GetNFeetPositions() const { return fFeetPositions.GetEntries(); } + /** + * Get the @a i feet position + * + * @param i Index + * + * @return The foot position of stand-off @a i + */ + TVector2* GetFootPosition(Int_t i) const; + /** + * Get the real length of a strip + * + * @param strip strip number + * + * @return length of strip + */ + Float_t GetStripLength(UShort_t strip) const ; + /** + * Get the length of a strip assuming the corners are not cut off + * + * @param strip strip number + * + * @return length of strip w/o corners + */ + Float_t GetBaseStripLength(UShort_t strip) const ; /** Not used */ void Detector2XYZ(UShort_t sector, UShort_t strip, Double_t& x, Double_t& y, Double_t& z) const; @@ -187,8 +421,11 @@ private: Double_t fHoneycombThickness; // Thickness of honeycomb plate Double_t fAlThickness; // Thickness of aluminium of honeycomb - TObjArray fVerticies; // List of verticies - + TObjArray fVerticies; // List of active sensor verticies + TObjArray fSensorVerticies; // List of physical sensor verticies + TObjArray fHybridVerticies; // List of hybrid card verticies + TObjArray fFeetPositions; // List of feet positions + ClassDef(AliFMDRing, 0); }; #endif