]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/AliTRDclusterizer.h
Introduce the tracklet writing by MinJung
[u/mrichter/AliRoot.git] / TRD / AliTRDclusterizer.h
1 #ifndef ALITRDCLUSTERIZER_H
2 #define ALITRDCLUSTERIZER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ////////////////////////////////////////////////////////////////////////////
9 //                                                                        //
10 //  TRD cluster finder                                                    //
11 //                                                                        //
12 ////////////////////////////////////////////////////////////////////////////
13
14 #include <TNamed.h>
15
16 class TFile;
17 class TTree;
18 class TObjArray;
19
20 class AliRunLoader;
21 class AliRawReader;
22
23 class AliTRD;
24 class AliTRDcluster;
25 class AliTRDdataArrayS;
26 class AliTRDdataArrayDigits;
27 class AliTRDdataArrayF;
28 class AliTRDdigitsManager;
29 class AliTRDSignalIndex;
30 class AliTRDtransform;
31 class AliTRDCalROC;
32
33 class AliTRDclusterizer : public TNamed {
34
35  public:
36
37   AliTRDclusterizer();
38   AliTRDclusterizer(const Text_t* name, const Text_t* title);
39   AliTRDclusterizer(const AliTRDclusterizer &c);
40   virtual         ~AliTRDclusterizer();
41   AliTRDclusterizer &operator=(const AliTRDclusterizer &c);
42
43   virtual void     Copy(TObject &c) const;
44
45   virtual Bool_t   Open(const Char_t *name, Int_t nEvent = 0);
46   virtual Bool_t   OpenInput(Int_t nEvent = 0);
47   virtual Bool_t   OpenOutput();
48   virtual Bool_t   OpenOutput(TTree *clusterTree);
49
50   virtual Bool_t   ReadDigits();
51   virtual Bool_t   ReadDigits(AliRawReader *rawReader);
52   virtual Bool_t   ReadDigits(TTree *digitsTree);
53
54   virtual Bool_t   WriteClusters(Int_t det);
55           void     ResetRecPoints();
56   TObjArray       *RecPoints();
57           Bool_t   WriteTracklets(Int_t det);
58
59   virtual Bool_t   Raw2Clusters(AliRawReader *rawReader);
60   virtual Bool_t   Raw2ClustersChamber(AliRawReader *rawReader);
61
62   virtual Bool_t   MakeClusters();
63   virtual Bool_t   MakeClusters(Int_t det);
64
65   virtual Bool_t   AddLabels(Int_t idet, Int_t firstClusterROC, Int_t nClusterROC);
66   virtual Bool_t   SetAddLabels(Bool_t kset) { fAddLabels = kset; 
67                                                return fAddLabels;  } // should we assign labels to clusters
68   virtual void     SetRawVersion(Int_t iver) { fRawVersion = iver; } // set the expected raw data version
69
70         static UChar_t GetStatus(Short_t &signal);
71
72  protected:
73
74           void     DeConvExp(Double_t *source, Double_t *target
75                            , Int_t nTimeTotal, Int_t nexp);
76           void     TailCancelation(AliTRDdataArrayDigits *digitsIn
77                                  , AliTRDdataArrayF *digitsOut 
78                                  , AliTRDSignalIndex *indexesIn
79                                  , AliTRDSignalIndex *indexesOut
80                                  , Int_t nTimeTotal
81                                  , Float_t ADCthreshold
82                                  , AliTRDCalROC *calGainFactorROC
83                                  , Float_t calGainFactorDetValue);
84   virtual Double_t Unfold(Double_t eps, Int_t layer, Double_t *padSignal);
85           Double_t GetCOG(Double_t signal[5]) const; 
86           void     FillLUT();
87           Double_t LUTposition(Int_t ilayer, Double_t ampL, Double_t ampC, Double_t ampR) const;
88
89   virtual void     ResetHelperIndexes(AliTRDSignalIndex *indexesIn);
90
91   AliRunLoader        *fRunLoader;           //! Run Loader
92   TTree               *fClusterTree;         //! Tree with the cluster
93   TObjArray           *fRecPoints;           //! Array of clusters
94
95   TTree               *fTrackletTree;         //! Tree for tracklets
96
97   AliTRDdigitsManager *fDigitsManager;       //! TRD digits manager
98
99   UInt_t              **fTrackletContainer;    //! tracklet container
100
101   Bool_t               fAddLabels;           //  Should clusters have MC labels?
102   Int_t                fRawVersion;          //  Expected raw version of the data - default is 2
103
104   AliTRDSignalIndex   *fIndexesOut;          //! Helper indexes for clusterization
105   AliTRDSignalIndex   *fIndexesMaxima;       //! Helper indexes for clusterization
106
107   AliTRDtransform     *fTransform;           //! Transforms the reconstructed space points
108
109   Int_t                fLUTbin;              //  Number of bins of the LUT
110   Double_t            *fLUT;                 //! The lookup table
111
112   ClassDef(AliTRDclusterizer,6)              //  TRD clusterfinder
113
114 };
115
116 #endif