ROOT logo
#ifndef ALITPCCLUSTERERKR_H
#define ALITPCCLUSTERERKR_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id: AliTPCclustererKr.h,v 1.8 2008/02/07 16:07:15 matyja Exp $ */

//-------------------------------------------------------
//                    TPC Kr Clusterer Class
//
//   Origin: Adam Matyja, INP PAN, adam.matyja@ifj.edu.pl
//-------------------------------------------------------

#include "TObject.h"

class AliTPCclusterKr;
class AliPadMax;
class AliSimDigits;
class AliTPCv4;
class AliTPCParam;
class AliTPCDigitsArray;
class AliTPCvtpr;
class AliTPCClustersRow;
class TTree;
class TH1F;
class TH2F;

class AliTPCTransform;

//used in raw data finder
class AliTPCROC;
class AliTPCCalPad;
class AliTPCAltroMapping;
class AliTPCcalibDB;
class AliTPCRecoParam;
class AliTPCReconstructor;
class AliRawReader;
class AliTPCCalROC;
class TTreeSRedirector;
class AliRawEventHeaderBase;
//_____________________________________________________________________________
class AliTPCclustererKr: public TObject{
public:
  AliTPCclustererKr();
  AliTPCclustererKr(const AliTPCclustererKr &param);//copy constructor
  AliTPCclustererKr &operator = (const AliTPCclustererKr & param); 
  virtual ~AliTPCclustererKr();

  //finders
  virtual Int_t FinderIO();//for MC
  virtual Int_t FinderIO(AliRawReader* rawReader);//for data
  virtual Int_t FindClusterKrIO();//main routine for finding clusters
  virtual void CleanSector(Int_t sector); // clean isolated digits

  //other
  void GetXY(Int_t sec,Int_t row,Int_t pad,Double_t& xGlob,Double_t& yGlob);//give XY coordinate of the pad

  virtual void SetInput(TTree * tree);  //set input tree with digits    
  virtual void SetOutput(TTree * tree); //set output tree with clusters
  virtual void SetParam(AliTPCParam *param){fParam=param;}//set TPC parameters
  virtual void SetDigArr(AliTPCDigitsArray *digarr){fDigarr=digarr;}//set current array of digits
  virtual void SetRecoParam(AliTPCRecoParam *recoParam=0);//set reconstruction parameters

  virtual void SetTimeStamp(UInt_t timestamp){ fTimeStamp = timestamp; }
  virtual void SetRun(UInt_t run){ fRun = run; }

  //setters for cluster finder parameters
  virtual void SetZeroSup(Int_t v){fZeroSup=v;}//set zero suppresion parameter
  virtual void SetFirstBin(Int_t v){fFirstBin=v;}//set first considered timebin
  virtual void SetLastBin(Int_t v){fLastBin=v;}//set last considered timebin
  virtual void SetMaxNoiseAbs(Float_t v){fMaxNoiseAbs=v;}//set maximal noise value
  virtual void SetMaxNoiseSigma(Float_t v){fMaxNoiseSigma=v;}//set maximal noise sigma

  virtual void SetMinAdc(Int_t v){v<=0?fMinAdc=1:fMinAdc=v;}//set fMinAdc
  virtual void SetMinTimeBins(Int_t v){fMinTimeBins=v;}//set fMinTimeBins
//  virtual void SetMaxPadRange(Int_t v){fMaxPadRange=v;}//set fMaxPadRange
//  virtual void SetMaxRowRange(Int_t v){fMaxRowRange=v;}//set fMaxRowRange
  virtual void SetMaxTimeRange(Int_t v){fMaxTimeRange=v;}//set fMaxTimeRange
  virtual void SetValueToSize(Float_t v){fValueToSize=v;}//set fValueToSize

  virtual void SetMaxPadRangeCm(Double_t v){fMaxPadRangeCm=v;}//set fMaxPadRangeCm
  virtual void SetMaxRowRangeCm(Double_t v){fMaxRowRangeCm=v;}//set fMaxRowRangeCm

  virtual void SetIsolCut(Short_t v){fIsolCut=v;}

  virtual void SetDebugLevel(Int_t debug){fDebugLevel=debug;}
  //debug = 0 to 71 -sector number to  print
  // = 72 - all sectors
  // = 73 - inners
  // = 74 - outers

  virtual void SetHistoRow(TH1F *histo)   {fHistoRow   =histo;}
  virtual void SetHistoPad(TH1F *histo)   {fHistoPad   =histo;}
  virtual void SetHistoTime(TH1F *histo)  {fHistoTime  =histo;}
  virtual void SetHistoRowPad(TH2F *histo){fHistoRowPad=histo;}

  //getters for cluster finder parameters
  Int_t GetZeroSup() const {return fZeroSup;}//get zero suppresion parameter
  Int_t GetFirstBin() const {return fFirstBin;}//get first considered timebin
  Int_t GetLastBin() const {return fLastBin;}//get last considered timebin
  Float_t GetMaxNoiseAbs() const {return fMaxNoiseAbs;}//get maximal noise value
  Float_t GetMaxNoiseSigma() const {return fMaxNoiseSigma;}//get maximal noise sigma

  Int_t GetMinAdc() const {return fMinAdc;}//get fMinAdc
  Int_t GetMinTimeBins() const {return fMinTimeBins;}//get fMinTimeBins
//  Int_t GetMaxPadRange() const {return fMaxPadRange;}//get fMaxPadRange
//  Int_t GetMaxRowRange() const {return fMaxRowRange;}//get fMaxRowRange
  Int_t GetMaxTimeRange() const {return fMaxTimeRange;}//get fMaxTimeRange
  Float_t GetValueToSize() const {return fValueToSize;}//get fValueToSize

  Double_t GetMaxPadRangeCm() const {return fMaxPadRangeCm;}//get fMaxPadRangeCm
  Double_t GetMaxRowRangeCm() const {return fMaxRowRangeCm;}//get fMaxRowRangeCm

  Short_t GetIsolCut() const {return fIsolCut;}

  Int_t GetDebugLevel() const {return fDebugLevel;}
  TH1F * GetHistoRow(){return fHistoRow;} 
  TH1F * GetHistoPad(){return fHistoPad;}
  TH1F * GetHistoTime(){return fHistoTime;}
  TH2F * GetHistoRowPad(){return fHistoRowPad;}

  UInt_t GetTimeStamp() const {return fTimeStamp;}
  UInt_t GetRun() const {return fRun;}

private:
  void MakeClusters(TObjArray * maximaInSector, Int_t iSec, Int_t &clusterCounter);
  Bool_t fRawData; //flag =0 for MC =1 for real data

  TTree * fInput;   //!input  tree with digits - object not owner
  TTreeSRedirector * fOutput;   //!output tree with clusters - object not owner

  AliTPCParam * fParam;//!TPC parameters
  AliTPCDigitsArray *fDigarr;//! pointer to current array if digits

  //only for raw data :)
  const AliTPCRecoParam  * fRecoParam;        //! reconstruction parameters

  //cluster finder parameters
  Int_t fZeroSup;//zero suppresion parameter = 2 def.
  Int_t fFirstBin;//first considered time bin used by cluster finder = 60 def.
  Int_t fLastBin;//last considered time bin used by cluster finder = 950 def.
  Float_t fMaxNoiseAbs;// maximal noise value on pad used in cluster finder = 2 def.
  Float_t fMaxNoiseSigma;// maximal noise sigma on pad used in cluster finder = 3 def.

  Int_t fMinAdc;//minimal value of acd count in each timebin = 3 def.
  Int_t fMinTimeBins;//minimal value of time bins one after each other = 2 def.
//  Int_t fMaxPadRange;//maximal pad range from maximum = 4 def.
//  Int_t fMaxRowRange;//maximal row range from maximum = 3 def.
  Int_t fMaxTimeRange;//maximal time bin range from maximum = 7 def.
  Float_t fValueToSize;//ratio cluster value to cluster size = 3.5 def.

  Double_t fMaxPadRangeCm;//maximal pad range in cm from maximum = 2.5cm def.
  Double_t fMaxRowRangeCm;//maximal row range in cm from maximum = 3.5cm def.

  Short_t fIsolCut;//isolation cut in 3D = 5 def.

  Int_t fDebugLevel;//! debug level variable
  TH1F *fHistoRow;//!debug histo for rows
  TH1F *fHistoPad;//!debug histo for pads
  TH1F *fHistoTime;//!debug histo for timebins
  TH2F *fHistoRowPad;//!debug histo for rows and pads

  UInt_t fTimeStamp; //!time stamp from event header
  UInt_t fRun; //!run from event header
  ClassDef(AliTPCclustererKr,8)  // Time Projection Chamber Kr clusters
};


#endif
 AliTPCclustererKr.h:1
 AliTPCclustererKr.h:2
 AliTPCclustererKr.h:3
 AliTPCclustererKr.h:4
 AliTPCclustererKr.h:5
 AliTPCclustererKr.h:6
 AliTPCclustererKr.h:7
 AliTPCclustererKr.h:8
 AliTPCclustererKr.h:9
 AliTPCclustererKr.h:10
 AliTPCclustererKr.h:11
 AliTPCclustererKr.h:12
 AliTPCclustererKr.h:13
 AliTPCclustererKr.h:14
 AliTPCclustererKr.h:15
 AliTPCclustererKr.h:16
 AliTPCclustererKr.h:17
 AliTPCclustererKr.h:18
 AliTPCclustererKr.h:19
 AliTPCclustererKr.h:20
 AliTPCclustererKr.h:21
 AliTPCclustererKr.h:22
 AliTPCclustererKr.h:23
 AliTPCclustererKr.h:24
 AliTPCclustererKr.h:25
 AliTPCclustererKr.h:26
 AliTPCclustererKr.h:27
 AliTPCclustererKr.h:28
 AliTPCclustererKr.h:29
 AliTPCclustererKr.h:30
 AliTPCclustererKr.h:31
 AliTPCclustererKr.h:32
 AliTPCclustererKr.h:33
 AliTPCclustererKr.h:34
 AliTPCclustererKr.h:35
 AliTPCclustererKr.h:36
 AliTPCclustererKr.h:37
 AliTPCclustererKr.h:38
 AliTPCclustererKr.h:39
 AliTPCclustererKr.h:40
 AliTPCclustererKr.h:41
 AliTPCclustererKr.h:42
 AliTPCclustererKr.h:43
 AliTPCclustererKr.h:44
 AliTPCclustererKr.h:45
 AliTPCclustererKr.h:46
 AliTPCclustererKr.h:47
 AliTPCclustererKr.h:48
 AliTPCclustererKr.h:49
 AliTPCclustererKr.h:50
 AliTPCclustererKr.h:51
 AliTPCclustererKr.h:52
 AliTPCclustererKr.h:53
 AliTPCclustererKr.h:54
 AliTPCclustererKr.h:55
 AliTPCclustererKr.h:56
 AliTPCclustererKr.h:57
 AliTPCclustererKr.h:58
 AliTPCclustererKr.h:59
 AliTPCclustererKr.h:60
 AliTPCclustererKr.h:61
 AliTPCclustererKr.h:62
 AliTPCclustererKr.h:63
 AliTPCclustererKr.h:64
 AliTPCclustererKr.h:65
 AliTPCclustererKr.h:66
 AliTPCclustererKr.h:67
 AliTPCclustererKr.h:68
 AliTPCclustererKr.h:69
 AliTPCclustererKr.h:70
 AliTPCclustererKr.h:71
 AliTPCclustererKr.h:72
 AliTPCclustererKr.h:73
 AliTPCclustererKr.h:74
 AliTPCclustererKr.h:75
 AliTPCclustererKr.h:76
 AliTPCclustererKr.h:77
 AliTPCclustererKr.h:78
 AliTPCclustererKr.h:79
 AliTPCclustererKr.h:80
 AliTPCclustererKr.h:81
 AliTPCclustererKr.h:82
 AliTPCclustererKr.h:83
 AliTPCclustererKr.h:84
 AliTPCclustererKr.h:85
 AliTPCclustererKr.h:86
 AliTPCclustererKr.h:87
 AliTPCclustererKr.h:88
 AliTPCclustererKr.h:89
 AliTPCclustererKr.h:90
 AliTPCclustererKr.h:91
 AliTPCclustererKr.h:92
 AliTPCclustererKr.h:93
 AliTPCclustererKr.h:94
 AliTPCclustererKr.h:95
 AliTPCclustererKr.h:96
 AliTPCclustererKr.h:97
 AliTPCclustererKr.h:98
 AliTPCclustererKr.h:99
 AliTPCclustererKr.h:100
 AliTPCclustererKr.h:101
 AliTPCclustererKr.h:102
 AliTPCclustererKr.h:103
 AliTPCclustererKr.h:104
 AliTPCclustererKr.h:105
 AliTPCclustererKr.h:106
 AliTPCclustererKr.h:107
 AliTPCclustererKr.h:108
 AliTPCclustererKr.h:109
 AliTPCclustererKr.h:110
 AliTPCclustererKr.h:111
 AliTPCclustererKr.h:112
 AliTPCclustererKr.h:113
 AliTPCclustererKr.h:114
 AliTPCclustererKr.h:115
 AliTPCclustererKr.h:116
 AliTPCclustererKr.h:117
 AliTPCclustererKr.h:118
 AliTPCclustererKr.h:119
 AliTPCclustererKr.h:120
 AliTPCclustererKr.h:121
 AliTPCclustererKr.h:122
 AliTPCclustererKr.h:123
 AliTPCclustererKr.h:124
 AliTPCclustererKr.h:125
 AliTPCclustererKr.h:126
 AliTPCclustererKr.h:127
 AliTPCclustererKr.h:128
 AliTPCclustererKr.h:129
 AliTPCclustererKr.h:130
 AliTPCclustererKr.h:131
 AliTPCclustererKr.h:132
 AliTPCclustererKr.h:133
 AliTPCclustererKr.h:134
 AliTPCclustererKr.h:135
 AliTPCclustererKr.h:136
 AliTPCclustererKr.h:137
 AliTPCclustererKr.h:138
 AliTPCclustererKr.h:139
 AliTPCclustererKr.h:140
 AliTPCclustererKr.h:141
 AliTPCclustererKr.h:142
 AliTPCclustererKr.h:143
 AliTPCclustererKr.h:144
 AliTPCclustererKr.h:145
 AliTPCclustererKr.h:146
 AliTPCclustererKr.h:147
 AliTPCclustererKr.h:148
 AliTPCclustererKr.h:149
 AliTPCclustererKr.h:150
 AliTPCclustererKr.h:151
 AliTPCclustererKr.h:152
 AliTPCclustererKr.h:153
 AliTPCclustererKr.h:154
 AliTPCclustererKr.h:155
 AliTPCclustererKr.h:156
 AliTPCclustererKr.h:157
 AliTPCclustererKr.h:158
 AliTPCclustererKr.h:159
 AliTPCclustererKr.h:160
 AliTPCclustererKr.h:161
 AliTPCclustererKr.h:162
 AliTPCclustererKr.h:163
 AliTPCclustererKr.h:164
 AliTPCclustererKr.h:165
 AliTPCclustererKr.h:166
 AliTPCclustererKr.h:167
 AliTPCclustererKr.h:168
 AliTPCclustererKr.h:169