]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/AliTRDclusterizer.h
Use debug stream only if requested
[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 TClonesArray;
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 class AliTRDReconstructor;
33 class AliTRDclusterizer : public TNamed 
34 {
35 public:
36   // steering flags
37   enum{
38     kOwner = BIT(14)
39   };
40   
41   AliTRDclusterizer(AliTRDReconstructor *rec = 0x0);
42   AliTRDclusterizer(const Text_t* name, const Text_t* title, AliTRDReconstructor *rec = 0x0);
43   AliTRDclusterizer(const AliTRDclusterizer &c);
44   virtual         ~AliTRDclusterizer();
45   AliTRDclusterizer &operator=(const AliTRDclusterizer &c);
46
47   virtual void     Copy(TObject &c) const;
48
49   virtual Bool_t   Open(const Char_t *name, Int_t nEvent = 0);
50   virtual Bool_t   OpenInput(Int_t nEvent = 0);
51   virtual Bool_t   OpenOutput();
52   virtual Bool_t   OpenOutput(TTree *clusterTree);
53
54   virtual Bool_t   ReadDigits();
55   virtual Bool_t   ReadDigits(AliRawReader *rawReader);
56   virtual Bool_t   ReadDigits(TTree *digitsTree);
57
58   virtual Bool_t   WriteClusters(Int_t det);
59           void     ResetRecPoints();
60   TClonesArray       *RecPoints();
61           Bool_t   WriteTracklets(Int_t det);
62
63   virtual Bool_t   Raw2Clusters(AliRawReader *rawReader);
64   virtual Bool_t   Raw2ClustersChamber(AliRawReader *rawReader);
65
66   virtual Bool_t   MakeClusters();
67   virtual Bool_t   MakeClusters(Int_t det);
68
69   virtual Bool_t   AddLabels(Int_t idet, Int_t firstClusterROC, Int_t nClusterROC);
70   virtual Bool_t   SetAddLabels(Bool_t kset) { fAddLabels = kset; 
71             return fAddLabels;  } // should we assign labels to clusters
72   virtual void     SetRawVersion(Int_t iver) { fRawVersion = iver; } // set the expected raw data version
73   void             SetReconstructor(const AliTRDReconstructor *rec) {fReconstructor = rec;}
74   static UChar_t   GetStatus(Short_t &signal);
75
76   Bool_t           IsClustersOwner() const {return TestBit(kOwner);}
77   void             SetClustersOwner(Bool_t own=kTRUE) {SetBit(kOwner, own); if(!own) fRecPoints = 0x0;}
78
79 protected:
80   void     DeConvExp(Double_t *source, Double_t *target
81               , Int_t nTimeTotal, Int_t nexp);
82   void     TailCancelation(AliTRDdataArrayDigits *digitsIn
83               , AliTRDdataArrayF *digitsOut 
84               , AliTRDSignalIndex *indexesIn
85               , AliTRDSignalIndex *indexesOut
86               , Int_t nTimeTotal
87               , Float_t ADCthreshold
88               , AliTRDCalROC *calGainFactorROC
89               , Float_t calGainFactorDetValue);
90   virtual Double_t Unfold(Double_t eps, Int_t layer, Double_t *padSignal);
91   Double_t GetCOG(Double_t signal[5]) const; 
92   void     FillLUT();
93   Double_t LUTposition(Int_t ilayer, Double_t ampL, Double_t ampC, Double_t ampR) const;
94   virtual void     ResetHelperIndexes(AliTRDSignalIndex *indexesIn);
95
96 protected:
97   const AliTRDReconstructor *fReconstructor;       //! reconstructor
98   AliRunLoader        *fRunLoader;           //! Run Loader
99   TTree               *fClusterTree;         //! Tree with the cluster
100   TClonesArray        *fRecPoints;           //! Array of clusters
101
102   TTree               *fTrackletTree;         //! Tree for tracklets
103
104   AliTRDdigitsManager *fDigitsManager;       //! TRD digits manager
105
106   UInt_t              **fTrackletContainer;    //! tracklet container
107
108   Bool_t               fAddLabels;           //  Should clusters have MC labels?
109   Int_t                fRawVersion;          //  Expected raw version of the data - default is 2
110
111   AliTRDSignalIndex   *fIndexesOut;          //! Helper indexes for clusterization
112   AliTRDSignalIndex   *fIndexesMaxima;       //! Helper indexes for clusterization
113
114   AliTRDtransform     *fTransform;           //! Transforms the reconstructed space points
115
116   Int_t                fLUTbin;              //  Number of bins of the LUT
117   Double_t            *fLUT;                 //! The lookup table
118
119   ClassDef(AliTRDclusterizer,6)              //  TRD clusterfinder
120
121 };
122
123 #endif