Update master to aliroot
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDClusterizer.h
... / ...
CommitLineData
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
21class AliHLTTRDClustersArray;
22class 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