Fix for FMD DA
[u/mrichter/AliRoot.git] / ITS / ITSbase / AliITSClusterFinderSDDfast.h
1 #ifndef ALIITSCLUSTERFINDERSDDFAST_H
2 #define ALIITSCLUSTERFINDERSDDFAST_H
3
4 //----------------------------------------------------------------------
5 //              ITS clusterer for SDD - fast algorithm
6 //
7 //   Origin: Simone Capodicasa, Universita e INFN, capodica@to.infn.it
8 //----------------------------------------------------------------------
9
10 #include "AliITSClusterFinder.h"
11 #include "AliITSDetTypeRec.h"
12 #include <vector>
13
14 class TBits;
15 class TClonesArray;
16 class AliRawReader;
17 class AliITSRawStream;
18 class AliITSCalibrationSDD;
19 class AliITSsegmentationSDD;
20
21 class AliITSClusterFinderSDDfast : public AliITSClusterFinder {
22  public:
23   AliITSClusterFinderSDDfast(AliITSDetTypeRec* dettyp);
24   virtual ~AliITSClusterFinderSDDfast();
25   virtual void FindRawClusters(Int_t mod);
26   virtual void RawdataToClusters(AliRawReader* rawReader);
27   void SetPeakSelection(Float_t looseCut=15., Float_t tightCut=30., Float_t maxTime=2000.){
28     fCutOnPeakLoose=looseCut;
29     fCutOnPeakTight=tightCut;
30     fMaxDrTimeForTightCut=maxTime;
31   }
32   
33   enum {kHybridsPerDDL = 24};   // number of hybrids in each DDL
34   enum {kModulesPerDDL = 12};   // number of modules in each DDL
35   
36  protected:
37   AliITSClusterFinderSDDfast(const AliITSClusterFinderSDDfast &source); // copy constructor
38   // assignment operator
39   AliITSClusterFinderSDDfast& operator=(const AliITSClusterFinderSDDfast &source);
40   void FindClustersSDD(TClonesArray *digits);
41   void FindClustersSDD(std::vector<int>& bins0, std::vector<int>& bins1, const Int_t map0[], const Int_t map1[], TClonesArray *dig, TClonesArray *clusters=0x0, Int_t jitter=0);
42   
43   void FindClustersSDD(AliITSRawStream* input);
44   virtual AliITSCalibrationSDD* GetResp(Int_t mod)const{
45     return (AliITSCalibrationSDD*) fDetTypeRec->GetCalibrationModel(mod);}
46   virtual AliITSsegmentationSDD* GetSeg()const{
47     return (AliITSsegmentationSDD*)fDetTypeRec->GetSegmentationModel(1);}
48   
49   Int_t fNAnodes;                   // number of anodes
50   Int_t fNTimeBins;                 // number of time bins
51   Int_t fNZbins;                    // number of cells along anodes
52   Int_t fNXbins;                    // number of cells along time
53   std::vector<std::vector<int> > fDDLBins; // container for digits for 1 DDL
54   Float_t fCutOnPeakLoose;          // loose cut on peak (for all drift times)
55   Float_t fCutOnPeakTight;          // tight cut on peak (for small drift times)
56   Float_t fMaxDrTimeForTightCut;    // max. drift time for fCutOnPeakTight
57   
58   ClassDef(AliITSClusterFinderSDDfast,1)  // ITS cluster finder fast for SDD
59     };
60
61 #endif