,kMask = 0x3f // bit mask
,kNtb = 31 // max clusters/pad row
,kNclusters = 2*kNtb // max number of clusters/tracklet
- ,kNslices = 10 // max dEdx slices
+ ,kNdEdxSlices= 8 // dEdx slices allocated in reconstruction
};
// bits from 0-13 are reserved by ROOT (see TObject.h)
enum ETRDtrackletStatus {
kOwner = BIT(14) // owner of its clusters
,kRowCross = BIT(15) // pad row cross tracklet
- ,kPID = BIT(16) // PID contributor
+ ,kChmbGood = BIT(16) // status of the detector from calibration view point
,kCalib = BIT(17) // calibrated tracklet
,kKink = BIT(18) // kink prolongation tracklet
,kStandAlone = BIT(19) // tracklet build during stand alone track finding
Bool_t CookPID();
Bool_t Fit(UChar_t opt=0);
Bool_t FitRobust(Bool_t ChgPlus=kTRUE);
- Bool_t Init(AliTRDtrackV1 *track);
+ Bool_t Init(const AliTRDtrackV1 *track);
void Init(const AliRieman *fit);
Bool_t IsEqual(const TObject *inTracklet) const;
Bool_t IsCalibrated() const { return TestBit(kCalib);}
+ Bool_t IsChmbGood() const { return TestBit(kChmbGood);}
Bool_t IsOwner() const { return TestBit(kOwner);}
Bool_t IsKink() const { return TestBit(kKink);}
Bool_t IsPrimary() const { return TestBit(kPrimary);}
- Bool_t HasPID() const { return TestBit(kPID);}
Bool_t HasError(ETRDtrackletError err) const
{ return TESTBIT(fErrorMsg, err);}
Bool_t IsOK() const { return GetN() > 4 && GetNUsed() < 4;}
UChar_t GetErrorMsg() const { return fErrorMsg;}
Float_t GetdX() const { return fdX;}
const Float_t* GetdEdx() const { return &fdEdx[0];}
+ Float_t GetQperTB(Int_t tb) const;
Float_t GetdQdl() const;
Float_t GetdQdl(Int_t ic, Float_t *dx=NULL) const;
Float_t GetdYdX() const { return fYfit[1];}
Float_t GetdZdX() const { return fZfit[1];}
Int_t GetdY() const { return Int_t(GetY()/0.014);}
Int_t GetDetector() const { return fDet;}
+ Int_t GetChargeGaps(Float_t sz[kNtb], Float_t pos[kNtb], Int_t ntb[kNtb]) const;
void GetCalibParam(Float_t &exb, Float_t &vd, Float_t &t0, Float_t &s2, Float_t &dl, Float_t &dt) const {
exb = fExB; vd = fVD; t0 = fT0; s2 = fS2PRF; dl = fDiffL; dt = fDiffT;}
AliTRDcluster* GetClusters(Int_t i) const { return i<0 || i>=kNclusters ? NULL: fClusters[i];}
void Reset(Option_t *opt="");
void SetC(Float_t c, Int_t typ=0) { fC[typ] = c;}
+ void SetChmbGood(Bool_t k = kTRUE){ SetBit(kChmbGood, k);}
void SetChi2(Float_t chi2) { fChi2 = chi2;}
inline void SetCovRef(const Double_t *cov);
void SetErrorMsg(ETRDtrackletError err) { SETBIT(fErrorMsg, err);}
void SetLabels(Int_t *lbls) { memcpy(fLabels, lbls, 3*sizeof(Int_t)); }
void SetKink(Bool_t k = kTRUE){ SetBit(kKink, k);}
void SetPrimary(Bool_t k = kTRUE){ SetBit(kPrimary, k);}
- void SetPID(Bool_t k = kTRUE) { SetBit(kPID, k);}
void SetStandAlone(Bool_t st) { SetBit(kStandAlone, st); }
void SetPt(Double_t pt) { fPt = pt;}
void SetOwner();
Float_t fS2Z; // estimated resolution in the z direction
Float_t fC[2]; // Curvature for standalone [0] rieman [1] vertex constrained
Float_t fChi2; // Global chi2
- Float_t fdEdx[kNslices]; // dE/dx measurements for tracklet
+ Float_t fdEdx[kNdEdxSlices]; // dE/dx measurements for tracklet
Float_t fProb[AliPID::kSPECIES]; // PID probabilities
Int_t fLabels[3]; // most frequent MC labels and total number of different labels
Double_t fRefCov[7]; // covariance matrix of the track in the yz plane + the rest of the diagonal elements