// Utility class for PMD //
// //
//-----------------------------------------------------//
+// Author -
+//
#include "Rtypes.h"
-class AliPMDUtility
+
+
+class AliPMDUtility:public TObject
{
public:
AliPMDUtility();
AliPMDUtility(Float_t px, Float_t py, Float_t pz);
+ AliPMDUtility(const AliPMDUtility &pmdutil); // copy constructor
+ AliPMDUtility &operator=(const AliPMDUtility &pmdutil); // assignment op
virtual ~AliPMDUtility();
+
void RectGeomCellPos(Int_t ism, Int_t xpad, Int_t ypad,
Float_t & xpos, Float_t & ypos);
void RectGeomCellPos(Int_t ism, Float_t xpad, Float_t ypad,
Float_t & xpos, Float_t & ypos);
+
+ void RectGeomCellPos(Int_t ism, Float_t xpad, Float_t ypad,
+ Float_t & xpos, Float_t & ypos, Float_t & zpos);
+
+ void GenerateBoundaryPoints(Int_t ism, Float_t &x1ism, Float_t &y1ism
+ , Float_t &x2ism, Float_t &y2ism);
+
+ void GetEtaIndexXY(Int_t smn, Int_t row, Int_t col,
+ Float_t &xp, Float_t &yp, Double_t &eta, Int_t &etaindex);
+
+ void DrawPMDModule(Int_t idet);
+
+ void ApplyVertexCorrection(Float_t vertex[],
+ Float_t xpos, Float_t ypos, Float_t zpos);
+ void ApplyAlignment(Double_t sectr[][3]);
void SetPxPyPz(Float_t px, Float_t py, Float_t pz);
void SetXYZ(Float_t xpos, Float_t ypos, Float_t zpos);
+ void SetWriteModule(Int_t wrmod);
void CalculateEta();
void CalculatePhi();
void CalculateEtaPhi();
+ void CalculateXY(Float_t eta, Float_t phi, Float_t zpos);
Float_t GetTheta() const;
Float_t GetEta() const;
Float_t GetPhi() const;
+ Float_t GetX() const;
+ Float_t GetY() const;
+ Float_t GetZ() const;
protected:
+
Float_t fPx; // Momentum along x
Float_t fPy; // Momentum along y
Float_t fPz; // Momentum along z
Float_t fTheta; // Polar angle in radian
Float_t fEta; // Pseudo-rapidity
Float_t fPhi; // Azimuthal angle in radian
+ Float_t fSecTr[4][3]; // Sector alignement (translation)
+ Int_t fWriteModule; // Module number writing
- ClassDef(AliPMDUtility,3) // Utility class for the detector set:PMD
+ ClassDef(AliPMDUtility,8) // Utility class for the detector set:PMD
};
#endif