#ifndef HPARTICLE_H
#define HPARTICLE_H
#include "TLorentzVector.h"
#include "hphysicsconstants.h"
#include "hsymmat.h"
class HCategory;
class HKickTrack;
class HRichHit;
class HParticle: public TLorentzVector {
public:
HParticle(Double_t px = 0., Double_t py = 0., Double_t pz = 0., Double_t m=0.);
HParticle(Int_t, Double_t px = 0., Double_t py = 0., Double_t pz = 0.);
HParticle(const Char_t *Pid, Double_t px = 0., Double_t py = 0., Double_t pz = 0.);
HParticle(const TVector3 &, Double_t);
HParticle(const HParticle &);
HParticle(const HParticle *);
virtual ~HParticle() {}
inline Double_t Angle(const HParticle &p) const;
inline Double_t AngleD(const HParticle &p) const;
Double_t P() const {return Vect().Mag();}
Int_t getPid() const {return pid;}
void setPid(Int_t sPid) {pid = sPid;}
void setPid(const Char_t *sPid) {setPid( HPhysicsConstants::pid(sPid) );}
Int_t getCharge() const {return HPhysicsConstants::charge(pid);}
HKickTrack* getKickTrack();
HRichHit* getRichHit();
Double_t getR() const {return r;}
void setR(Double_t sR) {r = sR;}
Double_t getZ() const {return z;}
void setZ(Double_t sZ) {z = sZ;}
Int_t getIndex() const {return index;}
void setIndex(Int_t sInd) {index = sInd;}
Int_t getTrackId() const {return trackId;}
void setTrackId(Int_t sInd) {trackId = sInd;}
Int_t getRingId() const {return ringId;}
void setRingId(Int_t sInd) {ringId = sInd;}
Int_t getVertexId() const {return vertexId;}
void setVertexId(Int_t sInd) {vertexId = sInd;}
TLorentzVector Vect4() const { return TLorentzVector(Vect(),E()); }
void setVect4(const TLorentzVector &v) {SetPxPyPzE(v[0],v[1],v[2],v[3]);}
HParticle & operator = ( const HParticle &);
private:
HCategory *fKickTrackCat;
HCategory *fRichHitCat;
protected:
Double_t r;
Double_t z;
Int_t pid;
Int_t index;
Int_t trackId;
Int_t ringId;
Int_t vertexId;
HSymMat6 cov;
ClassDef(HParticle,1)
};
inline Double_t HParticle::Angle(const HParticle &p) const {
TVector3 v1(Px(),Py(),Pz());
TVector3 v2(p.Px(),p.Py(),p.Pz());
return v1.Angle(v2);
}
inline Double_t HParticle::AngleD(const HParticle &p) const {
TVector3 v1(Px(),Py(),Pz());
TVector3 v2(p.Px(),p.Py(),p.Pz());
return (v1.Angle(v2))*57.29578;
}
#endif /* !HPARTICLE_H */
Last change: Sat May 22 13:06:35 2010
Last generated: 2010-05-22 13:06
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.