ClassImp(AliPMDUtility)
-AliPMDUtility::AliPMDUtility()
+AliPMDUtility::AliPMDUtility():
+ fPx(0.),
+ fPy(0.),
+ fPz(0.),
+ fTheta(0.),
+ fEta(0.),
+ fPhi(0.)
{
// Default constructor
- fPx = 0.;
- fPy = 0.;
- fPz = 0.;
- fTheta = 0.;
- fEta = 0.;
- fPhi = 0.;
}
-AliPMDUtility::AliPMDUtility(Float_t px, Float_t py, Float_t pz)
+AliPMDUtility::AliPMDUtility(Float_t px, Float_t py, Float_t pz):
+ fPx(px),
+ fPy(py),
+ fPz(pz),
+ fTheta(0.),
+ fEta(0.),
+ fPhi(0.)
{
// Constructor
- fPx = px;
- fPy = py;
- fPz = pz;
- fTheta = 0.;
- fEta = 0.;
- fPhi = 0.;
}
-
+AliPMDUtility::AliPMDUtility(const AliPMDUtility &pmdutil):
+ fPx(pmdutil.fPx),
+ fPy(pmdutil.fPy),
+ fPz(pmdutil.fPz),
+ fTheta(pmdutil.fTheta),
+ fEta(pmdutil.fEta),
+ fPhi(pmdutil.fPhi)
+{
+ // copy constructor
+}
+AliPMDUtility & AliPMDUtility::operator=(const AliPMDUtility &pmdutil)
+{
+ // assignment operator
+ if(this != &pmdutil)
+ {
+ fPx = pmdutil.fPx;
+ fPy = pmdutil.fPy;
+ fPz = pmdutil.fPz;
+ fTheta = pmdutil.fTheta;
+ fEta = pmdutil.fEta;
+ fPhi = pmdutil.fPhi;
+ }
+ return *this;
+}
AliPMDUtility::~AliPMDUtility()
{
// Default destructor
}
}
+void AliPMDUtility::ApplyVertexCorrection(Float_t vertex[], Float_t xpos,
+ Float_t ypos, Float_t zpos)
+{
+ // Not implemented
+ fPx = xpos - vertex[0];
+ fPy = ypos - vertex[1];
+ fPz = zpos - vertex[2];
+}
+void AliPMDUtility::ApplyAlignment()
+{
+ // Not implemented
+}
void AliPMDUtility::SetPxPyPz(Float_t px, Float_t py, Float_t pz)
{
theta = TMath::ATan2(rpxpy,fPz);
eta = -TMath::Log(TMath::Tan(0.5*theta));
- if(fPx==0)
+ if(fPx == 0)
{
if(fPy>0) phi = 90.;
if(fPy<0) phi = 270.;
fEta = eta;
fPhi = phi;
}
+void AliPMDUtility::CalculateXY(Float_t eta, Float_t phi, Float_t zpos)
+{
+ // Not implemented
+
+ // eta = -TMath::Log(TMath::Tan(0.5*theta));
+
+ Float_t xpos = 0., ypos = 0.;
+
+ // Float_t theta = 2.0*TMath::ATan(TMath::Log(-eta));
+
+ fEta = eta;
+ fPhi = phi;
+ fPx = xpos;
+ fPy = ypos;
+ fPz = zpos;
+}
Float_t AliPMDUtility::GetTheta() const
{
return fTheta;
{
return fPhi;
}
+Float_t AliPMDUtility::GetX() const
+{
+ return fPx;
+}
+Float_t AliPMDUtility::GetY() const
+{
+ return fPy;
+}
+Float_t AliPMDUtility::GetZ() const
+{
+ return fPz;
+}
// Utility class for PMD //
// //
//-----------------------------------------------------//
+// Author - B.K. Nandi
+//
#include "Rtypes.h"
class AliPMDUtility
{
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 ApplyVertexCorrection(Float_t vertex[],
+ Float_t xpos, Float_t ypos, Float_t zpos);
+ void ApplyAlignment();
void SetPxPyPz(Float_t px, Float_t py, Float_t pz);
void SetXYZ(Float_t xpos, Float_t ypos, Float_t zpos);
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 fEta; // Pseudo-rapidity
Float_t fPhi; // Azimuthal angle in radian
- ClassDef(AliPMDUtility,3) // Utility class for the detector set:PMD
+ ClassDef(AliPMDUtility,4) // Utility class for the detector set:PMD
};
#endif