Line data Source code
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 0 : virtual ~AliHLTTRDClusterizer() {};
29 : AliHLTTRDClusterizer& operator=(const AliHLTTRDClusterizer& c);
30 :
31 : void Copy(TObject& c) const;
32 : void SetMemBlock(AliHLTUInt8_t* ptr){
33 0 : if(fReconstructor->IsProcessingTracklets()){
34 0 : fTrMemBlock=ptr; fTrMemCurrPtr=ptr;
35 0 : fClMemBlock=ptr+GetTrMemBlockSize(); //if IsProcessingTracklets() is enabled we always reserve a data block of size GetTrMemBlockSize() for the tracklets
36 0 : }else{
37 0 : fClMemBlock=ptr;
38 : }
39 0 : fNoOfClusters=0;
40 0 : fAddedSize=0;
41 0 : fLastDet=-1;
42 0 : fClusters=NULL;
43 0 : }
44 0 : AliHLTUInt8_t* GetClMemBlock(){return fClMemBlock;}
45 0 : AliHLTUInt8_t* GetTrMemBlock(){return fTrMemBlock;}
46 0 : UInt_t GetAddedClSize(){return fAddedSize;}
47 0 : UInt_t GetAddedTrSize(){return (AliHLTUInt8_t*)fTrMemCurrPtr-(AliHLTUInt8_t*)fTrMemBlock;}
48 0 : UInt_t GetTrMemBlockSize(){return 30*(sizeof(AliHLTTRDTrackletWordArray)+512*sizeof(UInt_t));}
49 :
50 : protected:
51 : void AddClusterToArray(AliTRDcluster* cluster);
52 : void AddTrackletsToArray();
53 :
54 0 : 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 0 : 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 6 : ClassDef(AliHLTTRDClusterizer, 1)
66 : };
67 :
68 : #endif
|