]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDseed.h
Correct assignment operator (Uwe)
[u/mrichter/AliRoot.git] / TRD / AliTRDseed.h
index f9af38049fd24e67a44b1814145a66c8908cab97..3d703a6dcea2bedece3b14c0b0fe76176efe7547 100644 (file)
@@ -1,6 +1,5 @@
 #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                               */ 
 
 class AliTRDcluster;
 
 class AliTRDseed : public TObject {
-
- public:
+public:
+       enum {
+    knTimebins = 70 // maximum number of clusters/tracklet
+    ,kNtb = 35       // maximum clusters/pad row
+  };
 
   AliTRDseed(); 
   AliTRDseed(const AliTRDseed &s);
-  ~AliTRDseed() {};                 
-
-  AliTRDseed      &operator=(const AliTRDseed &s)           { *(new(this) AliTRDseed(s)); 
-                                                              return *this;          }
+  virtual ~AliTRDseed() {};
 
+  AliTRDseed      &operator=(const AliTRDseed &s);
 
   static  Float_t  FitRiemanTilt(AliTRDseed *seed, Bool_t error);
           void     UseClusters();
@@ -35,12 +35,14 @@ class AliTRDseed : public TObject {
           void     UpdateUsed();
           void     Reset();
 
-          Bool_t   IsOK() const                             { return fN2 > 8;        }
+          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];          }
@@ -57,7 +59,10 @@ class AliTRDseed : public TObject {
           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;             }
@@ -65,6 +70,7 @@ class AliTRDseed : public TObject {
           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;     }
@@ -72,7 +78,7 @@ class AliTRDseed : public TObject {
           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 *c)   { fClusters[i] = c;      }
+          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;   }
@@ -85,6 +91,9 @@ class AliTRDseed : public TObject {
           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;   }
@@ -93,41 +102,43 @@ class AliTRDseed : public TObject {
           void     SetChi2(Float_t chi2)                    { fChi2        = chi2;   }
           void     SetChi2Z(Float_t chi2z)                  { fChi2Z       = chi2z;  }
 
- 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;               //  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
+ 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
 
 };