#ifndef HPIDTRACKDATA_H
#define HPIDTRACKDATA_H
#include "TObject.h"
#include "TArrayI.h"
#include "TArrayF.h"
#include "TError.h"
#include "piddef.h"
#include "hsymmat.h"
#include <math.h>
class HBaseTrack;
class HMetaMatch;
class HPidTrackData : public TObject
{
protected:
HSymMat6 cov[MAX_MOM_ALGS];
public:
HPidTrackData(void);
HPidTrackData(const HPidTrackData& source);
Int_t nBestMomAlg;
Short_t nRKTrackInd;
Short_t nKickTrackInd;
Short_t nKickTrack123Ind;
Short_t nRefTrackInd;
Short_t nSplineTrackInd;
Float_t fMetaMatchingQuality;
Float_t fRKRichMatchingQuality;
Float_t dxRkMeta;
Float_t dyRkMeta;
Float_t dzRkMeta;
Float_t dxMdcMeta;
Float_t dyMdcMeta;
Float_t dzMdcMeta;
Float_t xMeta, yMeta, zMeta;
Float_t errXMeta, errYMeta, errZMeta;
Int_t nCloseTracklets;
Float_t fPull, fSplineChiSquare,fRKChiSquare;
mutable Int_t iIndexClosestTracklet;
TArrayI aTrackletClusInf0;
TArrayI aTrackletClusInf1;
TArrayF aTrackletDistances;
Float_t getAngleWithClosestCandidate(Int_t selectLeptons, Int_t selectFitted) const;
Float_t getAngleWithClosestHadronCandidate(void) const;
Float_t getAngleWithClosestLeptonCandidate(void) const;
Bool_t closestCandidateIsFitted(Int_t selectLeptons) const;
Bool_t closestHadronCandidateIsFitted(void) const;
Bool_t closestLeptonCandidateIsFitted(void) const;
Float_t qIOMatching[MAX_MOM_ALGS];
Short_t nPolarity[MAX_MOM_ALGS];
Float_t fMomenta[MAX_MOM_ALGS];
Float_t fMomError[MAX_MOM_ALGS];
Float_t fTrackR[MAX_MOM_ALGS];
Float_t fTrackZ[MAX_MOM_ALGS];
Float_t fRKPhi, fRKTheta;
Float_t fCorrectedEloss[MAX_MOM_ALGS];
Float_t fCorrectedBeta[MAX_MOM_ALGS];
Float_t fPathLength[MAX_MOM_ALGS];
Float_t fMassSquared[MAX_MOM_ALGS];
Bool_t bIsAccepted[MAX_MOM_ALGS];
Short_t nTofRecFlag[MAX_MOM_ALGS];
Float_t fTofRecTof[MAX_MOM_ALGS];
Float_t fTofRecBeta[MAX_MOM_ALGS];
Float_t fTofRecMassSquared[MAX_MOM_ALGS];
Float_t getBeta(Int_t nAlg) const
{
if (nTofRecFlag[nAlg]==0) return fCorrectedBeta[nAlg];
else return fTofRecBeta[nAlg];
}
Float_t getMass2(Int_t nAlg) const
{
if (nTofRecFlag[nAlg]==0) return fMassSquared[nAlg];
else return fTofRecMassSquared[nAlg];}
Float_t getPathLength(Int_t nAlg) const { return fPathLength[nAlg];}
HSymMat &getCovariance(Int_t nAlg) { return cov[nAlg]; }
Float_t getIOMatching(Int_t nAlg) const {return qIOMatching[nAlg];}
virtual void reset(Option_t * = "");
virtual void Clear(Option_t * = "");
void print(void) const;
void Print(Option_t *o = "") const { print(); }
HBaseTrack* getBaseTrack(Int_t momAlgIndex) const;
void fillFromBaseTrack(HBaseTrack* pBaseTrack, Int_t momalg);
void fillFromMetaMatch(HMetaMatch* pMetaMatch);
void appendCloseTracklet(Float_t distance, Int_t clusinf_index_0, Int_t clusinf_index_1);
Int_t getBestMomAlg() const {return nBestMomAlg;}
Short_t getRKTrackInd() const {return nRKTrackInd;}
Short_t getKickTrackInd() const {return nKickTrackInd;}
Short_t getKickTrack123Ind() const {return nKickTrack123Ind;}
Short_t getRefTrackInd() const {return nRefTrackInd;}
Short_t getSplineTrackInd() const {return nSplineTrackInd;}
Float_t getMetaMatchingQuality() const {return fMetaMatchingQuality;}
Float_t getPull() const {return fPull;}
Float_t getSplineChiSquare() const {return fSplineChiSquare;}
Float_t getRKChiSquare() const {return fRKChiSquare;}
Int_t getNCloseTracklets(void) const {return nCloseTracklets;}
Float_t getTrackletDistance(Int_t index) const
{
if(index>=getNCloseTracklets() || index<0)
{
Error("HPidTrackData::getTrackletDistance(Int_t index)","index %d out of bounds",index);
return -1.0;
}
return aTrackletDistances[index];
}
Int_t getTrackletClusInf(Int_t module, Int_t index = -1) const;
Int_t getIndexClosestTracklet() const {return iIndexClosestTracklet;}
Short_t getPolarity(Int_t index) const {return nPolarity[index];}
Float_t getMomenta(Int_t index) const {return fMomenta[index];}
Float_t getMomError(Int_t index) const {return fMomError[index];}
Float_t getTrackR(Int_t index) const {return fTrackR[index];}
Float_t getTrackZ(Int_t index) const {return fTrackZ[index];}
Float_t getCorrectedEloss(Int_t index) const {return fCorrectedEloss[index];}
Float_t getCorrectedBeta(Int_t index) const {return fCorrectedBeta[index];}
Bool_t getIsAccepted(Int_t index) const {return bIsAccepted[index];}
Short_t getTofRecFlag(Int_t index) const {return nTofRecFlag[index];}
Float_t getTofRecTof(Int_t index) const {return fTofRecTof[index];}
Float_t getTofRecBeta(Int_t index) const {return fTofRecBeta[index];}
Float_t getTofRecMassSquared(Int_t index) const {return fTofRecMassSquared[index];}
Float_t getMassSquared(Int_t index) const {return fMassSquared[index];}
Float_t getRKTheta(void) const {return fRKTheta;}
Float_t getRKPhi(void) const {return fRKPhi;}
Float_t getRKMetaMatchingQuality() const {
return dxRkMeta != -1. && errXMeta != -1. ? sqrt(((dxRkMeta * dxRkMeta) / (errXMeta * errXMeta)) +
((dyRkMeta * dyRkMeta) / (errYMeta * errYMeta)) +
((dzRkMeta * dzRkMeta) / (errZMeta * errZMeta)) ) : -1. ;
}
Float_t getRKRichMatchingQuality() const {return fRKRichMatchingQuality;}
Float_t getRkMetadx(void) const {return dxRkMeta;}
Float_t getRkMetady(void) const {return dyRkMeta;}
Float_t getRkMetadz(void) const {return dzRkMeta;}
Float_t getMdcMetadx(void) const {return dxMdcMeta;}
Float_t getMdcMetady(void) const {return dyMdcMeta;}
Float_t getMdcMetadz(void) const {return dzMdcMeta;}
Float_t getxMeta(void) const {return xMeta;}
Float_t getyMeta(void) const {return yMeta;}
Float_t getzMeta(void) const {return zMeta;}
Float_t geterrXMeta(void) const {return errXMeta;}
Float_t geterrYMeta(void) const {return errYMeta;}
Float_t geterrZMeta(void) const {return errZMeta;}
void setBestMomAlg(Int_t o_BestMomAlg) {nBestMomAlg = o_BestMomAlg;}
void setRKTrackInd(Short_t o_RKTrackInd) {nRKTrackInd = o_RKTrackInd;}
void setKickTrackInd(Short_t o_KickTrackInd){nKickTrackInd = o_KickTrackInd;}
void setKickTrack123Ind(Short_t o_KickTrack123Ind){nKickTrack123Ind = o_KickTrack123Ind;}
void setRefTrackInd(Short_t o_RefTrackInd){nRefTrackInd = o_RefTrackInd;}
void setSplineTrackInd(Short_t o_SplineTrackInd){nSplineTrackInd = o_SplineTrackInd;}
void setMetaMatchingQuality(Float_t o_MetaMatchingQuality)
{fMetaMatchingQuality = o_MetaMatchingQuality;}
void setPull(Float_t o_Pull){fPull = o_Pull;}
void setSplineChiSquare(Float_t o_SplineChiSquare){fSplineChiSquare = o_SplineChiSquare;}
void setRKChiSquare(Float_t o_RKChiSquare){fRKChiSquare = o_RKChiSquare;}
void setIOMatching(Int_t index,Float_t o_qIOMatching) {qIOMatching[index]=o_qIOMatching;}
void setPolarity(Int_t index, Short_t o_Polarity) {nPolarity[index] = o_Polarity;}
void setMomenta(Int_t index, Float_t o_Momentum) {fMomenta[index] = o_Momentum;}
void setMomError(Int_t index, Float_t o_MomError) {fMomError[index] = o_MomError;}
void setTrackR(Int_t index, Float_t o_TrackR) {fTrackR[index] = o_TrackR;}
void setTrackZ(Int_t index, Float_t o_TrackZ) {fTrackZ[index] = o_TrackZ;}
void setCorrectedEloss(Int_t index, Float_t o_CorrectedEloss)
{fCorrectedEloss[index] = o_CorrectedEloss;}
void setCorrectedBeta(Int_t index, Float_t o_CorrectedBeta) {fCorrectedBeta[index] = o_CorrectedBeta;}
void setPathLength(Int_t index,Float_t o_PathLength) {fPathLength[index] = o_PathLength;}
void setMass2(Int_t index,Float_t o_Mass2)
{
if(nTofRecFlag[index]==0)
{
fMassSquared[index]=o_Mass2;
}
else
{
fTofRecMassSquared[index]=o_Mass2;
}
}
void setIsAccepted(Int_t index, Bool_t o_IsAccepted) {bIsAccepted[index] = o_IsAccepted;}
void setTofRecFlag(Int_t index, Short_t o_TofRecFlag) {nTofRecFlag[index] = o_TofRecFlag;}
void setTofRecTof(Int_t index, Float_t o_TofRecTof) {fTofRecTof[index] = o_TofRecTof;}
void setBeta(Int_t index,Float_t o_Beta)
{
if(nTofRecFlag[index]==0)
{
fCorrectedBeta[index]=o_Beta;
}
else
{
fTofRecBeta[index]=o_Beta;
}
}
void setRKTheta(Float_t o_fRKTheta) {fRKTheta = o_fRKTheta;}
void setRKPhi(Float_t o_fRKPhi) {fRKPhi = o_fRKPhi;}
void setRKRichMatchingQuality(Float_t qua) { fRKRichMatchingQuality = qua;}
void setRkMetadx(Float_t o_dxRkMeta){dxRkMeta = o_dxRkMeta;}
void setRkMetady(Float_t o_dyRkMeta){dyRkMeta = o_dyRkMeta;}
void setRkMetadz(Float_t o_dzRkMeta){dzRkMeta = o_dzRkMeta;}
void setMdcMetadx(Float_t o_dxMdcMeta){dxMdcMeta = o_dxMdcMeta;}
void setMdcMetady(Float_t o_dyMdcMeta){dyMdcMeta = o_dyMdcMeta;}
void setMdcMetadz(Float_t o_dzMdcMeta){dzMdcMeta = o_dzMdcMeta;}
void setxMeta(Float_t o_xMeta) {xMeta = o_xMeta;}
void setyMeta(Float_t o_yMeta) {yMeta = o_yMeta;}
void setzMeta(Float_t o_zMeta) {zMeta = o_zMeta;}
void seterrXMeta(Float_t o_errXMeta) {errXMeta = o_errXMeta;}
void seterrYMeta(Float_t o_errYMeta) {errXMeta = o_errYMeta;}
void seterrZMeta(Float_t o_errZMeta) {errZMeta = o_errZMeta;}
ClassDef(HPidTrackData, 13)
};
#endif //HPIDTRACKDATA_H
Last change: Sat May 22 13:07:34 2010
Last generated: 2010-05-22 13:07
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.