Reduced memory consumption (Bogdan)
[u/mrichter/AliRoot.git] / TRD / AliTRDmcmTracklet.h
1 #ifndef ALITRDMCMTRACKLET_H
2 #define ALITRDMCMTRACKLET_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 ///////////////////////////////////////////////////////
7 //                                                   //
8 //  Tracklet object (MCM/LTU)                        //
9 //                                                   //
10 ///////////////////////////////////////////////////////
11
12 #include <TObject.h>
13
14 class TGraph;
15
16 class AliTRDgeometry;
17
18 class AliTRDmcmTracklet : public TObject {
19
20  public:
21
22   enum { kNclsPads = 3, kNtimeBins = 30, kNdict = 3 };
23
24   AliTRDmcmTracklet();
25   AliTRDmcmTracklet(Int_t det, Int_t row, Int_t n);
26   virtual ~AliTRDmcmTracklet();
27   AliTRDmcmTracklet &operator=(const AliTRDmcmTracklet &t);
28   virtual void Copy(TObject &t) const;
29
30   void Reset();
31
32   void AddCluster(Int_t icol, Int_t itb, Float_t *adc, Int_t *track);
33   void MakeTrackletGraph(AliTRDgeometry *geo = 0, Float_t field = 0);
34   void MakeClusAmpGraph();
35   void CookLabel(Float_t frac);
36
37   void SetRow(Int_t row)      { fRow = row; };
38   void SetDetector(Int_t det) { fDetector = det; };
39   void SetN(Int_t n)          { fN = n; };
40
41   Int_t     GetNclusters() const { return fNclusters; };
42   Int_t     GetDetector()  const { return fDetector; };
43   Int_t     GetRow()       const { return fRow; };
44   Float_t   GetOffset()    const { return fOffset; };
45   Float_t   GetSlope()     const { return fSlope; };
46   Float_t   GetTime0()     const { return fTime0; };
47   Float_t   GetRowz()      const { return fRowz; };
48   Float_t   GetPt()        const { return fPt; };
49   Float_t   GetdQdl()      const { return fdQdl; };
50   Int_t     GetLabel()     const { return fTrackLabel; };
51   Int_t     GetNumber()    const { return fN; };
52   Float_t   GetOmegaTau(Float_t vdrift, Float_t field) const;
53   Float_t   GetClusY(Float_t *adc, Int_t pla) const;
54   TGraph   *GetTrackletGraph() const { return fGPos; };
55   TGraph   *GetClusAmpGraph()  const { return fGAmp; };
56   Float_t  *GetClusterADC(Int_t icl)        { return fADC[icl];  };
57   Int_t     GetClusterTime(Int_t icl) const { return fTime[icl]; };
58   Int_t     GetClusterCol(Int_t icl)  const { return fCol[icl];  };
59
60  protected:
61
62   Int_t   fDetector;                     //  TRD detector number (0 ... 539)
63   Int_t   fRow;                          //  Row number in the detector
64   Float_t fADC[kNtimeBins][kNclsPads];   //  Array of ADC values in a pad group
65   Int_t   fTrack[kNtimeBins][kNdict];    //! Array of track dictionary values
66   Int_t   fTrackLabel;                   //  Cooked track label
67   Int_t   fTime[kNtimeBins];             //  Array of time bin values
68   Int_t   fCol[kNtimeBins];              //  Array of pad column values
69   Int_t   fNclusters;                    //  Number of clusters in the tracklet
70
71   Int_t   fN;                            // Tracklet number
72
73   TGraph *fGPos;                         //! Positions
74   TGraph *fGAmp;                         //! Amplitudes
75
76   Float_t fTime0;                        // X position at the entrance window
77   Float_t fRowz;                         // Z position of the row center
78   Float_t fSlope;                        // Slope [deg]
79   Float_t fOffset;                       // Offset
80   Float_t fPt;                           // Transverse momentum
81   Float_t fdQdl;                         // Charge per unit length
82
83   ClassDef(AliTRDmcmTracklet,2)          // Track segment for the TRD (Tracklet)
84
85 };
86
87 #endif