5de4fd6608efaffcb7c45b62bedf1331ce0a4e9b
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDClusterizer.h
1 //-*- Mode: C++ -*-
2 // $Id$
3
4 #ifndef ALIHLTTRDCLUSTERIZER_H
5 #define ALIHLTTRDCLUSTERIZER_H
6 //* This file is property of and copyright by the ALICE HLT Project        * 
7 //* ALICE Experiment at CERN, All rights reserved.                         *
8 //* See cxx source for full Copyright notice                               *
9
10 ////////////////////////////////////////////////////////////////////////////
11 //                                                                        //
12 //  HLT TRD cluster finder                                                //
13 //                                                                        //
14 ////////////////////////////////////////////////////////////////////////////
15
16 #include "AliTRDclusterizer.h"
17 #include "AliTRDReconstructor.h"
18 #include "AliHLTDataTypes.h"
19 #include "AliHLTTRDTrackletWordArray.h"
20
21 class AliHLTTRDClustersArray;
22 class AliHLTTRDClusterizer : public AliTRDclusterizer
23 {
24  public:
25   AliHLTTRDClusterizer(const AliTRDReconstructor *const rec = 0x0);
26   AliHLTTRDClusterizer(const Text_t *const name, const Text_t *const title, const AliTRDReconstructor *const rec = 0x0);
27   AliHLTTRDClusterizer(const AliHLTTRDClusterizer& c);
28   virtual ~AliHLTTRDClusterizer() {};
29   AliHLTTRDClusterizer& operator=(const AliHLTTRDClusterizer& c);
30
31   void            Copy(TObject& c) const;
32   void            SetMemBlock(AliHLTUInt8_t* ptr){
33     if(fReconstructor->IsProcessingTracklets()){
34       fTrMemBlock=ptr; fTrMemCurrPtr=ptr;
35       fClMemBlock=ptr+GetTrMemBlockSize();  //if IsProcessingTracklets() is enabled we always reserve a data block of size GetTrMemBlockSize() for the tracklets
36     }else{
37       fClMemBlock=ptr;
38     }
39     fNoOfClusters=0;
40     fAddedSize=0;
41     fLastDet=-1;
42     fClusters=NULL;
43   }
44   AliHLTUInt8_t*  GetClMemBlock(){return fClMemBlock;}
45   AliHLTUInt8_t*  GetTrMemBlock(){return fTrMemBlock;}
46   UInt_t          GetAddedClSize(){return fAddedSize;}
47   UInt_t          GetAddedTrSize(){return (AliHLTUInt8_t*)fTrMemCurrPtr-(AliHLTUInt8_t*)fTrMemBlock;}
48   UInt_t          GetTrMemBlockSize(){return 30*(sizeof(AliHLTTRDTrackletWordArray)+512*sizeof(UInt_t));}
49
50  protected:
51   void            AddClusterToArray(AliTRDcluster* cluster);
52   void            AddTrackletsToArray();
53
54   TClonesArray*   RecPoints(){return 0x0;}       //these are functions in the parents class and must not be used in hlt!
55   TClonesArray*   TrackletsArray(){return 0x0;}  //if used accidentally it may give a compilation error because they are protected,
56   void  SetClustersOwner(Bool_t /*own*/){}       //but it could be that the error appears only in  run time
57   
58   AliHLTUInt8_t*  fClMemBlock;
59   AliHLTUInt8_t*  fTrMemBlock;
60   AliHLTUInt8_t*  fTrMemCurrPtr;
61   Int_t           fLastDet;
62   AliHLTTRDClustersArray* fClusters;
63   AliHLTUInt32_t  fAddedSize;
64
65   ClassDef(AliHLTTRDClusterizer, 1)
66 };
67
68 #endif