////////////////////////////////////////////////
// ITS Cluster Finder Class //
////////////////////////////////////////////////
+/*
+ $Id$
+*/
#include "AliITSClusterFinder.h"
-class AliITSClusterFinderSDD :
- public AliITSClusterFinder
-
-{
-public:
- AliITSClusterFinderSDD
- (AliITSsegmentation *seg,
- AliITSresponse *response, TClonesArray *digits,TClonesArray *recpoints);
- AliITSClusterFinderSDD();
- virtual ~AliITSClusterFinderSDD(){
- // destructor
- }
- AliITSClusterFinderSDD(const AliITSClusterFinderSDD &source); // copy constructor
- AliITSClusterFinderSDD& operator=(const AliITSClusterFinderSDD &source); // assignment operator
-
- virtual void SetMap();
- virtual void SetCutAmplitude(Float_t thres=1.2) {
- // set cut amplitude
- fCutAmplitude=thres;
- }
- virtual void SetDAnode(Float_t danode=4.2) {
- // setDAnode
- fDAnode=danode;
- }
- virtual void SetDTime(Float_t dtime=75) {
- // SetDTime
- fDTime=dtime;
- }
- virtual void SetMinPeak(Int_t minpeak=7) {
- // SetMinPeak
- fMinPeak=minpeak;
- }
- virtual void SetNCells(Int_t minc=4) {
- // setNCells
- fMinNCells=minc;
- }
-
- void FillMap();
-
- // Search for clusters
- virtual void FindRawClusters();
- void Find1DClusters();
- void GroupClusters();
- void SelectClusters();
- void GetRecPoints();
-
-private:
-
- TClonesArray *fClusters; // clusters
- Int_t fNclusters; // num of clusters
- AliITSMapA2 *fMap; // map
- Float_t fCutAmplitude; // cut amplitude
- Float_t fDAnode; // fDanode
- Float_t fDTime; // fDtime
-
- Int_t fMinPeak; // min peak
- Int_t fMinNCells; // min num of cells
-
-
- ClassDef(AliITSClusterFinderSDD,1) // SDD clustering - Piergiorgio C. algo
- };
-#endif
-
-
+class AliITSMapA2;
+class AliITSresponse;
+class AliITSresponseSDD;
+class AliITSsegmentation;
+class AliITSsegmentationSDD;
+class TFile;
+class AliITSClusterFinderSDD : public AliITSClusterFinder{
+ public:
+ AliITSClusterFinderSDD
+ (AliITSsegmentation *seg,AliITSresponse *response,
+ TClonesArray *digits,TClonesArray *recpoints);
+ AliITSClusterFinderSDD();
+ virtual ~AliITSClusterFinderSDD(){};
+
+ virtual void SetCutAmplitude(Double_t nsigma=4);
+ virtual Int_t CutAmplitude() const {// get cut amplitude
+ return fCutAmplitude;}
+ virtual void SetDAnode(Double_t danode=4.2) {// setDAnode
+ fDAnode=danode;}
+ virtual Double_t DAnode() const {// get DAnode
+ return fDAnode;}
+ virtual void SetDTime(Double_t dtime=75) {// SetDTime
+ fDTime=dtime;}
+ virtual Double_t DTime() const {// get DTime
+ return fDTime;}
+ virtual void SetMinPeak(Int_t minpeak=10) {// SetMinPeak
+ fMinPeak=minpeak;}
+ virtual Int_t MinPeak() const {// get MinPeak
+ return fMinPeak;}
+ virtual void SetMinCharge(Int_t mincharge=30) {// SetMinCharge
+ fMinCharge=mincharge;}
+ virtual Int_t MinCharge() const {// get MinCharge
+ return fMinCharge;}
+ virtual void SetMinNCells(Int_t minc=3) {// setNCells
+ fMinNCells=minc;}
+ virtual Int_t MinNCells() const {// get MinNCells
+ return fMinNCells;}
+ virtual void SetMaxNCells(Int_t maxc=10) {// setNCells
+ fMaxNCells=maxc;}
+ virtual Int_t MaxNCells() const {// get MaxNCells
+ return fMaxNCells;}
+ virtual void SetTimeCorr(Double_t timec=19.3) {// setNCells
+ fTimeCorr=timec;}
+ virtual Double_t TimeCorr() const{// get Time Correction (ns)
+ return fTimeCorr;}
+ // Search for clusters
+ virtual void FindRawClusters(Int_t mod=0);
+ void Find1DClusters();
+ void Find1DClustersE();
+ void GroupClusters();
+ void SelectClusters();
+ void GetRecPoints();
+ void ResolveClusters(); // Boris........
+ void ResolveClustersE(); // Ernesto
+ Int_t SearchPeak(Double_t *spect,Int_t xdim,Int_t zdim,Int_t *peakX,
+ Int_t *peakZ,Double_t *peakAmp,Double_t minpeak);//Ernesto
+ Int_t NoLinearFit( Int_t xdim, Int_t zdim, Double_t *param, Double_t *spe,
+ Int_t *niter, Double_t *chir );
+ void Minim(Int_t xdim,Int_t zdim,Double_t *param,Double_t *prm0,
+ Double_t *steprm,Double_t *chisqr,Double_t *spe,Double_t *speFit);
+ Double_t ChiSqr(Int_t xdim,Int_t zdim,Double_t *spe,Double_t *speFit)const;
+ void PeakFunc( Int_t xdim, Int_t zdim, Double_t *par, Double_t *spe,
+ Double_t *Integral=0 );
+ void Print() const;
+ private:
+ virtual AliITSresponseSDD* GetResp()const{
+ return (AliITSresponseSDD*) GetResponse();}//Return Response
+ //Returns fSegmentation
+ virtual AliITSsegmentationSDD* GetSeg()const{
+ return (AliITSsegmentationSDD*)GetSegmentation();}
+ AliITSClusterFinderSDD(const AliITSClusterFinderSDD &source); // copy ctor
+ AliITSClusterFinderSDD& operator=(const AliITSClusterFinderSDD &source);
+ private:
+ Int_t fNclusters; //! num of clusters
+ Double_t fDAnode; //! fDanode
+ Double_t fDTime; //! fDtime
+ Double_t fTimeCorr; //! Correction factor along time coord
+ Int_t fCutAmplitude; //! cut amplitude
+ Int_t fMinPeak; //! min peak
+ Int_t fMinCharge; //! min charge
+ Int_t fMinNCells; //! min num of cells
+ Int_t fMaxNCells; //! max num of cells
+ ClassDef(AliITSClusterFinderSDD,2) // SDD clustering - Piergiorgio C. algo
+ };
+#endif