1 #ifndef ALITPCCLUSTERERKR_H
\r
2 #define ALITPCCLUSTERERKR_H
\r
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
\r
4 * See cxx source for full Copyright notice */
\r
6 /* $Id: AliTPCclusterKr.h,v 1.8 2008/02/07 16:07:15 matyja Exp $ */
\r
8 //-------------------------------------------------------
\r
9 // TPC Kr Clusterer Class
\r
11 // Origin: Adam Matyja, INP PAN, adam.matyja@ifj.edu.pl
\r
12 //-------------------------------------------------------
\r
14 #include "TObject.h"
\r
16 class AliTPCclusterKr;
\r
21 class AliTPCDigitsArray;
\r
23 class AliTPCClustersRow;
\r
28 class AliTPCTransform;
\r
30 //used in raw data finder
\r
33 class AliTPCAltroMapping;
\r
34 class AliTPCcalibDB;
\r
35 class AliTPCRawStream;
\r
36 class AliTPCRecoParam;
\r
37 class AliTPCReconstructor;
\r
40 class TTreeSRedirector;
\r
41 //_____________________________________________________________________________
\r
42 class AliTPCclustererKr: public TObject{
\r
44 AliTPCclustererKr();
\r
45 AliTPCclustererKr(const AliTPCclustererKr ¶m);//copy constructor
\r
46 AliTPCclustererKr &operator = (const AliTPCclustererKr & param);
\r
47 virtual ~AliTPCclustererKr();
\r
50 virtual Int_t FinderIO();//for MC
\r
51 virtual Int_t FinderIO(AliRawReader* rawReader);//for data
\r
52 virtual Int_t FindClusterKrIO();//main routine for finding clusters
\r
53 virtual void CleanSector(Int_t sector); // clean isolated digits
\r
56 void GetXY(Int_t sec,Int_t row,Int_t pad,Double_t& xGlob,Double_t& yGlob);//give XY coordinate of the pad
\r
58 virtual void SetInput(TTree * tree); //set input tree with digits
\r
59 virtual void SetOutput(TTree * tree); //set output tree with clusters
\r
60 virtual void SetParam(AliTPCParam *param){fParam=param;}//set TPC parameters
\r
61 virtual void SetDigArr(AliTPCDigitsArray *digarr){fDigarr=digarr;}//set current array of digits
\r
62 virtual void SetRecoParam(AliTPCRecoParam *recoParam=0);//set reconstruction parameters
\r
66 //setters for cluster finder parameters
\r
67 virtual void SetZeroSup(Int_t v){fZeroSup=v;}//set zero suppresion parameter
\r
68 virtual void SetFirstBin(Int_t v){fFirstBin=v;}//set first considered timebin
\r
69 virtual void SetLastBin(Int_t v){fLastBin=v;}//set last considered timebin
\r
70 virtual void SetMaxNoiseAbs(Float_t v){fMaxNoiseAbs=v;}//set maximal noise value
\r
71 virtual void SetMaxNoiseSigma(Float_t v){fMaxNoiseSigma=v;}//set maximal noise sigma
\r
73 virtual void SetMinAdc(Int_t v){v<=0?fMinAdc=1:fMinAdc=v;}//set fMinAdc
\r
74 virtual void SetMinTimeBins(Int_t v){fMinTimeBins=v;}//set fMinTimeBins
\r
75 // virtual void SetMaxPadRange(Int_t v){fMaxPadRange=v;}//set fMaxPadRange
\r
76 // virtual void SetMaxRowRange(Int_t v){fMaxRowRange=v;}//set fMaxRowRange
\r
77 virtual void SetMaxTimeRange(Int_t v){fMaxTimeRange=v;}//set fMaxTimeRange
\r
78 virtual void SetValueToSize(Float_t v){fValueToSize=v;}//set fValueToSize
\r
80 virtual void SetMaxPadRangeCm(Double_t v){fMaxPadRangeCm=v;}//set fMaxPadRangeCm
\r
81 virtual void SetMaxRowRangeCm(Double_t v){fMaxRowRangeCm=v;}//set fMaxRowRangeCm
\r
83 virtual void SetIsolCut(Short_t v){fIsolCut=v;}
\r
85 virtual void SetDebugLevel(Int_t debug){fDebugLevel=debug;}
\r
86 //debug = 0 to 71 -sector number to print
\r
87 // = 72 - all sectors
\r
91 virtual void SetHistoRow(TH1F *histo) {fHistoRow =histo;}
\r
92 virtual void SetHistoPad(TH1F *histo) {fHistoPad =histo;}
\r
93 virtual void SetHistoTime(TH1F *histo) {fHistoTime =histo;}
\r
94 virtual void SetHistoRowPad(TH2F *histo){fHistoRowPad=histo;}
\r
96 //getters for cluster finder parameters
\r
97 Int_t GetZeroSup() const {return fZeroSup;}//get zero suppresion parameter
\r
98 Int_t GetFirstBin() const {return fFirstBin;}//get first considered timebin
\r
99 Int_t GetLastBin() const {return fLastBin;}//get last considered timebin
\r
100 Float_t GetMaxNoiseAbs() const {return fMaxNoiseAbs;}//get maximal noise value
\r
101 Float_t GetMaxNoiseSigma() const {return fMaxNoiseSigma;}//get maximal noise sigma
\r
103 Int_t GetMinAdc() const {return fMinAdc;}//get fMinAdc
\r
104 Int_t GetMinTimeBins() const {return fMinTimeBins;}//get fMinTimeBins
\r
105 // Int_t GetMaxPadRange() const {return fMaxPadRange;}//get fMaxPadRange
\r
106 // Int_t GetMaxRowRange() const {return fMaxRowRange;}//get fMaxRowRange
\r
107 Int_t GetMaxTimeRange() const {return fMaxTimeRange;}//get fMaxTimeRange
\r
108 Float_t GetValueToSize() const {return fValueToSize;}//get fValueToSize
\r
110 Double_t GetMaxPadRangeCm() const {return fMaxPadRangeCm;}//get fMaxPadRangeCm
\r
111 Double_t GetMaxRowRangeCm() const {return fMaxRowRangeCm;}//get fMaxRowRangeCm
\r
113 Short_t GetIsolCut() const {return fIsolCut;}
\r
115 Int_t GetDebugLevel() const {return fDebugLevel;}
\r
116 TH1F * GetHistoRow(){return fHistoRow;}
\r
117 TH1F * GetHistoPad(){return fHistoPad;}
\r
118 TH1F * GetHistoTime(){return fHistoTime;}
\r
119 TH2F * GetHistoRowPad(){return fHistoRowPad;}
\r
122 void MakeClusters(TObjArray * maximaInSector, Int_t iSec, Int_t &clusterCounter);
\r
123 Bool_t fRawData; //flag =0 for MC =1 for real data
\r
125 TTree * fInput; //!input tree with digits - object not owner
\r
126 TTreeSRedirector * fOutput; //!output tree with clusters - object not owner
\r
128 AliTPCParam * fParam;//!TPC parameters
\r
129 AliTPCDigitsArray *fDigarr;//! pointer to current array if digits
\r
131 //only for raw data :)
\r
132 const AliTPCRecoParam * fRecoParam; //! reconstruction parameters
\r
134 //cluster finder parameters
\r
135 Int_t fZeroSup;//zero suppresion parameter = 2 def.
\r
136 Int_t fFirstBin;//first considered time bin used by cluster finder = 60 def.
\r
137 Int_t fLastBin;//last considered time bin used by cluster finder = 950 def.
\r
138 Float_t fMaxNoiseAbs;// maximal noise value on pad used in cluster finder = 2 def.
\r
139 Float_t fMaxNoiseSigma;// maximal noise sigma on pad used in cluster finder = 3 def.
\r
141 Int_t fMinAdc;//minimal value of acd count in each timebin = 3 def.
\r
142 Int_t fMinTimeBins;//minimal value of time bins one after each other = 2 def.
\r
143 // Int_t fMaxPadRange;//maximal pad range from maximum = 4 def.
\r
144 // Int_t fMaxRowRange;//maximal row range from maximum = 3 def.
\r
145 Int_t fMaxTimeRange;//maximal time bin range from maximum = 7 def.
\r
146 Float_t fValueToSize;//ratio cluster value to cluster size = 3.5 def.
\r
148 Double_t fMaxPadRangeCm;//maximal pad range in cm from maximum = 2.5cm def.
\r
149 Double_t fMaxRowRangeCm;//maximal row range in cm from maximum = 3.5cm def.
\r
151 Short_t fIsolCut;//isolation cut in 3D = 5 def.
\r
153 Int_t fDebugLevel;//! debug level variable
\r
154 TH1F *fHistoRow;//!debug histo for rows
\r
155 TH1F *fHistoPad;//!debug histo for pads
\r
156 TH1F *fHistoTime;//!debug histo for timebins
\r
157 TH2F *fHistoRowPad;//!debug histo for rows and pads
\r
159 ClassDef(AliTPCclustererKr,6) // Time Projection Chamber Kr clusters
\r