X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDseed.h;h=822c16c42f43628edeb67dfe6bc440670330c799;hb=be4253b23d4acceb99f6f77b598c79d06b08218c;hp=1adafcb7849769ff44af6cdc0b0c199ff0c990aa;hpb=75bd7f818f5c13c92fce20cd5c56686d3356a4ca;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDseed.h b/TRD/AliTRDseed.h index 1adafcb7849..822c16c42f4 100644 --- a/TRD/AliTRDseed.h +++ b/TRD/AliTRDseed.h @@ -1,67 +1,146 @@ #ifndef ALITRDSEED_H -#define ALITRDSEED_H - +#define ALITRDSEED_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ +/* $Id$ */ + +//////////////////////////////////////////////////////////////////////////// +// // +// The TRD track seed // +// // +//////////////////////////////////////////////////////////////////////////// + #include "TObject.h" class AliTRDcluster; class AliTRDseed : public TObject { +public: + enum { + knTimebins = 70 // maximum number of clusters/tracklet + ,kNtb = 35 // maximum clusters/pad row + }; - friend class AliTRDtracker; + AliTRDseed(); + AliTRDseed(const AliTRDseed &s); + virtual ~AliTRDseed() {}; - public: + AliTRDseed &operator=(const AliTRDseed &s) { *(new(this) AliTRDseed(s)); + return *this; } - AliTRDseed(); - ~AliTRDseed() {}; - - static void EvaluateUni(Int_t nvectors, Double_t *data, Double_t &mean, Double_t &sigma, Int_t hh); - static Float_t FitRiemanTilt(AliTRDseed *seed, Bool_t error); - void UseClusters(); // use clusters - void Update(); // update information - without tilt correction - void CookLabels(); // cook label - void UpdateUsed(); - void Reset(); // reset seed - Bool_t IsOK() const { return fN2 > 8;} - - private: - - Float_t fTilt; // tilting angle - Float_t fPadLength; // pad length - Float_t fX0; // x0 position - Float_t fX[25]; // !x position - Float_t fY[25]; // !y position - Float_t fZ[25]; // !z position - Int_t fIndexes[25]; // !indexes - AliTRDcluster *fClusters[25]; // !clusters - Bool_t fUsable[25]; // !indication - usable cluster - Float_t fYref[2]; // reference y - Float_t fZref[2]; // reference z - Float_t fYfit[2]; // y fit position +derivation - Float_t fYfitR[2]; // y fit position +derivation - Float_t fZfit[2]; // z fit position - Float_t fZfitR[2]; // z fit position - Float_t fSigmaY; // "robust" sigma in Y - constant fit - Float_t fSigmaY2; // "robust" sigma in Y - line fit - Float_t fMeanz; // mean vaue of z - Float_t fZProb; // max probbable z - Int_t fLabels[2]; // labels - Int_t fN; // number of associated clusters - Int_t fN2; // number of not crossed - Int_t fNUsed; // number of used clusters - Int_t fFreq; // freq - Int_t fNChange; // change z counter - Float_t fMPads; // mean number of pads per cluster - // global - // - Float_t fC; // curvature - Float_t fCC; // curvature with constrain - Float_t fChi2; // global chi2 - Float_t fChi2Z; // global chi2 - - ClassDef(AliTRDseed,1) // Seed for a local TRD track + static Float_t FitRiemanTilt(AliTRDseed *seed, Bool_t error); + void UseClusters(); + void Update(); + void CookLabels(); + void UpdateUsed(); + void Reset(); + + Bool_t IsOK() const { return fN2 > 4; } + Bool_t IsUsable(Int_t i) const { return fUsable[i]; } + + Float_t GetTilt() const { return fTilt; } + Float_t GetPadLength() const { return fPadLength; } + Float_t GetX0() const { return fX0; } + Float_t GetY0() const { return fYfit[0]; } + Float_t GetZ0() const { return fZfit[0]; } + Float_t GetX(Int_t i) const { return fX[i]; } + Float_t GetY(Int_t i) const { return fY[i]; } + Float_t GetZ(Int_t i) const { return fZ[i]; } + Int_t GetIndexes(Int_t i) const { return fIndexes[i]; } + AliTRDcluster *GetClusters(Int_t i) const { return fClusters[i]; } + Float_t GetYref(Int_t i) const { return fYref[i]; } + Float_t GetZref(Int_t i) const { return fZref[i]; } + Float_t GetYfit(Int_t i) const { return fYfit[i]; } + Float_t GetYfitR(Int_t i) const { return fYfitR[i]; } + Float_t GetZfit(Int_t i) const { return fZfit[i]; } + Float_t GetZfitR(Int_t i) const { return fZfitR[i]; } + Float_t GetSigmaY() const { return fSigmaY; } + Float_t GetSigmaY2() const { return fSigmaY2; } + Float_t GetMeanz() const { return fMeanz; } + Float_t GetZProb() const { return fZProb; } + Int_t GetLabels(Int_t i) const { return fLabels[i]; } + Float_t GetMPads() const { return fMPads; } + Int_t GetNbClusters() const { return fN; } + Int_t GetN2() const { return fN2; } + Int_t GetNChange() const { return fNChange; } + Int_t GetNUsed() const { return fNUsed; } + Int_t GetFreq() const { return fFreq; } + Float_t GetC() const { return fC; } + Float_t GetCC() const { return fCC; } + Float_t GetChi2() const { return fChi2; } + Float_t GetChi2Z() const { return fChi2Z; } + + + void SetTilt(Float_t tilt) { fTilt = tilt; } + void SetPadLength(Float_t len) { fPadLength = len; } + void SetX0(Float_t x0) { fX0 = x0; } + void SetX(Int_t i, Float_t x) { fX[i] = x; } + void SetY(Int_t i, Float_t y) { fY[i] = y; } + void SetZ(Int_t i, Float_t z) { fZ[i] = z; } + void SetIndexes(Int_t i, Int_t idx) { fIndexes[i] = idx; } + void SetClusters(Int_t i, AliTRDcluster * const c) { fClusters[i] = c; } + void SetUsable(Int_t i, Bool_t usable) { fUsable[i] = usable; } + void SetYref(Int_t i, Float_t yref) { fYref[i] = yref; } + void SetZref(Int_t i, Float_t zref) { fZref[i] = zref; } + void SetYfit(Int_t i, Float_t yfit) { fYfit[i] = yfit; } + void SetYfitR(Int_t i, Float_t yfitr) { fYfitR[i] = yfitr; } + void SetZfit(Int_t i, Float_t zfit) { fZfit[i] = zfit; } + void SetZfitR(Int_t i, Float_t zfitr) { fZfitR[i] = zfitr; } + void SetSigmaY(Float_t sigmay) { fSigmaY = sigmay; } + void SetSigmaY2(Float_t sigmay) { fSigmaY2 = sigmay; } + void SetMeanz(Float_t meanz) { fMeanz = meanz; } + void SetZProb(Float_t zprob) { fZProb = zprob; } + void SetLabels(Int_t i, Int_t label) { fLabels[i] = label; } + void SetMPads(Float_t mPads) { fMPads = mPads; } + void SetN(Int_t n) { fN = n; } + void SetNChange(Int_t n) { fNChange = n; } + void SetN2(Int_t n2) { fN2 = n2; } + void SetNUsed(Int_t nused) { fNUsed = nused; } + void SetFreq(Int_t freq) { fFreq = freq; } + void SetC(Float_t c) { fC = c; } + void SetCC(Float_t cc) { fCC = cc; } + void SetChi2(Float_t chi2) { fChi2 = chi2; } + void SetChi2Z(Float_t chi2z) { fChi2Z = chi2z; } + + protected: + + void Copy(TObject &o) const; + + Float_t fTilt; // Tilting angle + Float_t fPadLength; // Pad length + Float_t fX0; // X0 position + Float_t fX[knTimebins]; //! X position + Float_t fY[knTimebins]; //! Y position + Float_t fZ[knTimebins]; //! Z position + Int_t fIndexes[knTimebins]; //! Indexes + AliTRDcluster *fClusters[knTimebins]; // Clusters + Bool_t fUsable[knTimebins]; // Indication - usable cluster + Float_t fYref[2]; // Reference y + Float_t fZref[2]; // Reference z + Float_t fYfit[2]; // Y fit position +derivation + Float_t fYfitR[2]; // Y fit position +derivation + Float_t fZfit[2]; // Z fit position + Float_t fZfitR[2]; // Z fit position + Float_t fSigmaY; // "Robust" sigma in Y - constant fit + Float_t fSigmaY2; // "Robust" sigma in Y - line fit + Float_t fMeanz; // Mean vaue of z + Float_t fZProb; // Max probbable z + Int_t fLabels[2]; // Labels + Int_t fN; // Number of associated clusters + Int_t fN2; // Number of not crossed + Int_t fNUsed; // Number of used clusters + Int_t fFreq; // Frequency + Int_t fNChange; // Change z counter + Float_t fMPads; // Mean number of pads per cluster + + Float_t fC; // Curvature + Float_t fCC; // Curvature with constrain + Float_t fChi2; // Global chi2 + Float_t fChi2Z; // Global chi2 + + ClassDef(AliTRDseed,1) // Seed for a local TRD track }; + #endif