*
* See cxx source for full Copyright notice
*/
+/** @file AliFMDRing.h
+ @author Christian Holm Christensen <cholm@nbi.dk>
+ @date Mon Mar 27 12:47:43 2006
+ @brief FMD ring geometry parameters
+*/
//__________________________________________________________________
//
// Parameters of the FMD rings.
-//
// This class is responsible to make the (common) rings of the three
// sub-detectors.
//
class TBrowser;
class TVector2;
-/** Geometry description and parameters of a ring in the FMD
+/** @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
*/
class AliFMDRing : public TNamed
{
public:
+ /** CTOR
+ @param fId Ring ID */
AliFMDRing(Char_t fId);
+ /** DTOR */
virtual ~AliFMDRing() {}
/** Initialize the ring geometry */
virtual void Init();
Double_t GetWaferRadius() const { return fWaferRadius; }
/** @return Thickness of sensor */
Double_t GetSiThickness() const { return fSiThickness; }
+ /** @return Minimum r for an active strip */
+ Double_t GetMinR() const { return fMinR; }
+ /** @return Maximum r for an active strip */
+ Double_t GetMaxR() const { return fMaxR; }
/** @return Lower radius of ring */
Double_t GetLowR() const { return fLowR; }
/** @return Upper radius of ring */
Double_t GetChipThickness() const { return fChipThickness; }
/** @return Value of spacing between si and PCB */
Double_t GetSpacing() const { return fSpacing; }
-
+ /** @return The strip pitch */
+ Double_t GetPitch() const { return (fMaxR - fMinR) / fNStrips; }
+ /** @return Radius (in cm) correspondig to strip @a strip */
+ Double_t GetStripRadius(UShort_t strip) const;
+
/** @return List of verticies */
const TObjArray& GetVerticies() const { return fVerticies; }
/** @return Number of verticies */
@return the ith vertex */
TVector2* GetVertex(Int_t i) const;
+ /** Not used */
void Detector2XYZ(UShort_t sector, UShort_t strip,
Double_t& x, Double_t& y, Double_t& z) const;
-
+ /** Not used */
+ Bool_t XYZ2Detector(Double_t x, Double_t y, Double_t z,
+ UShort_t& sector, UShort_t& strip) const;
private:
Char_t fId; // The Id of this ring type
Double_t fBondingWidth; // With of bonding pad on sensor
Double_t fSiThickness; // Thickness of sensor
Double_t fLowR; // Lower radius of ring
Double_t fHighR; // Upper radius of ring
+ Double_t fMinR; // Lower radius of active strips
+ Double_t fMaxR; // Upper radius of active strips
Double_t fTheta; // Opening angle of the silicon wafers
Int_t fNStrips; // Number of strips
Double_t fRingDepth; // How far the ring extends beyond z