]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/AliHLTTPCKryptonClusterFinder.h
4dc0d5480fb01a0e60a62a14894afe6d8e154b02
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCKryptonClusterFinder.h
1 // $Id$
2
3 #ifndef AliHLTTPC_KRYPTONCLUSTERFINDER
4 #define AliHLTTPC_KRYPTONCLUSTERFINDER
5 //* This file is property of and copyright by the ALICE HLT Project        * 
6 //* ALICE Experiment at CERN, All rights reserved.                         *
7 //* See cxx source for full Copyright notice                               *
8
9 /** @file   AliHLTTPCKryptonClusterFinder.h
10     @author Kenneth Aamodt kenneth.aamodt@student.uib.no
11     @date   
12     @brief  Krypton Cluster Finder for the TPC
13 */
14
15 //#include "AliHLTLogging.h"
16 //#include "AliHLTTPCPad.h"
17 #include "AliHLTTPCClusterFinder.h"
18 #include "TString.h"
19 #include "TH1F.h"
20 #include "TObjArray.h"
21
22 class AliHLTTPCSpacePointData;
23 class AliHLTTPCDigitReader;
24
25 /**
26  * @class AliHLTTPCKryptonClusterFinder
27  *
28  * @ingroup alihlt_tpc
29  */
30 class AliHLTTPCKryptonClusterFinder : public AliHLTTPCClusterFinder {
31
32  public:
33   /** standard constructor */
34   AliHLTTPCKryptonClusterFinder();
35   /** destructor */
36   virtual ~AliHLTTPCKryptonClusterFinder();
37
38   /** Rebunches the data, use on real data which has "wrong" bunches due to keeping 0 data */
39   void ReBunch(const UInt_t * bunchData,Int_t bunchSize);
40
41   /** rads the data insorted */
42   void ReadDataUnsorted(void* ptr,unsigned long size);
43
44   /** compare one pads combining neighbouring clustercandidates to a cluster */
45   Bool_t ComparePads(AliHLTTPCPad *nextPad,AliHLTTPCClusters* cluster,Int_t nextPadToRead);
46
47   /** Find clusters on the rows */
48   void FindRowClusters();
49
50   /** combines the row clusters to a krypton cluster */
51   void FindKryptonClusters();
52
53   /** checks if there is a candidate on the previous row */
54   void CheckForCandidateOnPreviousRow(AliHLTTPCClusters* tmpCluster);
55
56   /** initialize the histograms */
57   void InitializeHistograms();
58
59   /** resets the histograms */
60   void ResetHistograms(TString histoName);
61
62   /*set the selection from minrow to maxrow, used to look at a certain interval of rows */
63   void SetSelection(Int_t minRow, Int_t maxRow);
64
65   /** puts the histograms in the objarray*/
66   void GetHistogramObjectArray(TObjArray& histos);
67
68   /** write histograms to a file, filename must also include the path. Used only for debugging by developers */
69   void WriteHistograms(TString filename);
70
71  private: 
72   /** copy constructor prohibited */
73   AliHLTTPCKryptonClusterFinder(const AliHLTTPCKryptonClusterFinder&);
74   /** assignment operator prohibited */
75   AliHLTTPCKryptonClusterFinder& operator=(const AliHLTTPCKryptonClusterFinder&);
76
77   vector<Int_t> fTimebinsInBunch;                                  //! transient
78
79   vector<Int_t> fIndexOfBunchStart;                                //! transient
80
81   //histograms
82   TH1F * fHKryptonSpectrumFullPatch;                                //! transient
83   TH1F * fHKryptonSpectrumSelection;                                //! transient
84   TH1F * fHNumberOfKryptonClusters;                                 //! transient
85   TH1F * fHNumberOfKryptonClustersSelection;                        //! transient
86   TH1F * fHMaxQofKryptonClusterLast1000;                            //! transient
87   TH1F * fHMaxQofKryptonClusterSelection;                           //! transient
88   
89   Int_t fStartBinKryptonSpectrum;                                  //! transient
90   Int_t fEndBinKryptonSpectrum;                                    //! transient
91   Int_t fStartBinMaxQ;                                             //! transient
92   Int_t fEndBinMaxQ;                                               //! transient
93   Int_t fStartBinNumberOfKryptonClusters;                          //! transient
94   Int_t fEndBinNumberOfKryptonClusters;                            //! transient
95
96   Int_t fSelectionMinRowNumber;                                    //! transient
97   Int_t fSelectionMaxRowNumber;                                    //! transient
98
99   Int_t fMaxQOfCluster;                                            //! transient
100   Int_t fMaxQOfClusterBin;                                         //! transient
101   
102   Int_t fNumberOfKryptonClusters;                                  //! transient
103   Int_t fNumberOfKryptonClustersBin;                               //! transient
104
105   Bool_t fHistogramsInitialized;                                   //! transient                 
106   
107   ClassDef(AliHLTTPCKryptonClusterFinder,1) //Fast cluster finder
108 };
109 #endif