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 *
9 /** @file AliHLTTPCKryptonClusterFinder.h
10 @author Kenneth Aamodt kenneth.aamodt@student.uib.no
12 @brief Krypton Cluster Finder for the TPC
15 //#include "AliHLTLogging.h"
16 //#include "AliHLTTPCPad.h"
17 #include "AliHLTTPCClusterFinder.h"
20 #include "TObjArray.h"
22 class AliHLTTPCSpacePointData;
23 class AliHLTTPCDigitReader;
26 * @class AliHLTTPCKryptonClusterFinder
30 class AliHLTTPCKryptonClusterFinder : public AliHLTTPCClusterFinder {
33 /** standard constructor */
34 AliHLTTPCKryptonClusterFinder();
36 virtual ~AliHLTTPCKryptonClusterFinder();
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);
41 /** rads the data insorted */
42 void ReadDataUnsorted(void* ptr,unsigned long size);
44 /** compare one pads combining neighbouring clustercandidates to a cluster */
45 Bool_t ComparePads(AliHLTTPCPad *nextPad,AliHLTTPCClusters* cluster,Int_t nextPadToRead);
47 /** Find clusters on the rows */
48 void FindRowClusters();
50 /** combines the row clusters to a krypton cluster */
51 void FindKryptonClusters();
53 /** checks if there is a candidate on the previous row */
54 void CheckForCandidateOnPreviousRow(AliHLTTPCClusters* tmpCluster);
56 /** initialize the histograms */
57 void InitializeHistograms();
59 /** resets the histograms */
60 void ResetHistograms(TString histoName);
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);
65 /** puts the histograms in the objarray*/
66 void GetHistogramObjectArray(TObjArray& histos);
68 /** write histograms to a file, filename must also include the path. Used only for debugging by developers */
69 void WriteHistograms(TString filename);
72 /** copy constructor prohibited */
73 AliHLTTPCKryptonClusterFinder(const AliHLTTPCKryptonClusterFinder&);
74 /** assignment operator prohibited */
75 AliHLTTPCKryptonClusterFinder& operator=(const AliHLTTPCKryptonClusterFinder&);
77 vector<Int_t> fTimebinsInBunch; //! transient
79 vector<Int_t> fIndexOfBunchStart; //! transient
82 TH1F * fHKryptonSpectrumFullPatch; //! transient
83 TH1F * fHKryptonSpectrumSelection; //! transient
84 TH1F * fHNumberOfKryptonClusters; //! transient
85 TH1F * fHNumberOfKryptonClustersSelection; //! transient
86 TH1F * fHMaxQofKryptonClusterLast1000; //! transient
87 TH1F * fHMaxQofKryptonClusterSelection; //! transient
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
96 Int_t fSelectionMinRowNumber; //! transient
97 Int_t fSelectionMaxRowNumber; //! transient
99 Int_t fMaxQOfCluster; //! transient
100 Int_t fMaxQOfClusterBin; //! transient
102 Int_t fNumberOfKryptonClusters; //! transient
103 Int_t fNumberOfKryptonClustersBin; //! transient
105 Bool_t fHistogramsInitialized; //! transient
107 ClassDef(AliHLTTPCKryptonClusterFinder,1) //Fast cluster finder