f211b158d15c1f25dc995076b23953a1403dbcdd
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDTrackerV1Component.h
1 #ifndef ALIHLTTRDTRACKERV1COMPONENT_H
2 #define ALIHLTTRDTRACKERV1COMPONENT_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /** @file   AliHLTTRDTrackerComponent.h
7     @author Timm Steinbeck, Matthias Richter
8     @date   
9     @brief  Declaration of a TRDTracker component. */
10
11 #include "AliHLTProcessor.h"
12
13 class TFile;
14 class TTree;
15
16 class TGeoManager;
17 class AliCDBManager;
18 class AliMagFMaps;
19 class AliTRDtrackerV1;
20 class AliTRDrecoParam;
21 class AliTRDReconstructor;
22
23 /**
24  * @class AliHLTTRDTrackerComponent
25  * @brief A TRDTrackerV1 HLT processing component. 
26  *
27  * Uses the second generation TRD tracker AliTRDtrackerV1
28 */
29
30 class AliHLTTRDTrackerV1Component : public AliHLTProcessor
31     {
32     public:
33         AliHLTTRDTrackerV1Component();
34         virtual ~AliHLTTRDTrackerV1Component();
35
36         // Public functions to implement AliHLTComponent's interface.
37         // These functions are required for the registration process
38
39         const char* GetComponentID();
40         void GetInputDataTypes( vector<AliHLTComponent_DataType>& list);
41         AliHLTComponent_DataType GetOutputDataType();
42         virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
43         AliHLTComponent* Spawn();
44         
45     protected:
46         AliHLTUInt32_t AddToOutput (TClonesArray* inTrackArray, AliHLTUInt8_t* output);
47         Int_t ReadClusters (TClonesArray *outArray, void* inputPtr, AliHLTUInt32_t size);
48         void ReadAndLoadClusters(TTree *inClusterTree, TClonesArray *inClusterArray, const AliHLTComponentBlockData *inBlock);
49         AliHLTUInt32_t TransportTracks(TClonesArray *inTracksArray, AliHLTUInt8_t* output,
50                                        vector<AliHLTComponent_BlockData>& outputBlocks, AliHLTUInt32_t inOffset, AliHLTUInt32_t inSpec);
51         
52         // Protected functions to implement AliHLTComponent's interface.
53         // These functions provide initialization as well as the actual processing
54         // capabilities of the component. 
55
56         int DoInit( int argc, const char** argv );
57         int DoDeinit();
58         int DoEvent( const AliHLTComponentEventData& evtData, 
59                      const AliHLTComponentBlockData* blocks, 
60                      AliHLTComponent_TriggerData& /*trigData*/, 
61                      AliHLTUInt8_t* outputPtr, 
62                      AliHLTUInt32_t& size, 
63                      vector<AliHLTComponent_BlockData>& outputBlocks );
64         using AliHLTProcessor::DoEvent;
65         
66     private:
67         /** copy constructor prohibited */
68         AliHLTTRDTrackerV1Component(const AliHLTTRDTrackerV1Component&);
69         /** assignment operator prohibited */
70         AliHLTTRDTrackerV1Component& operator=(const AliHLTTRDTrackerV1Component&);
71
72         // The size of the output data produced, as a percentage of the input data's size.
73         // Can be greater than 100 (%)
74         unsigned fOutputPercentage; // Output volume in percentage of the input
75
76         string fStrorageDBpath; // Default path for OCDB
77         AliCDBManager *fCDB; //! Pointer to OCDB
78
79         AliMagFMaps* fField; //! magn. field settings
80
81         string fGeometryFileName; // Path to geometry file 
82         Bool_t   fUseHLTClusters;
83         Bool_t   fUseHLTTracks;
84
85         AliTRDtrackerV1 *fTracker;//! Offline-pure/HLT tracker V1
86         AliTRDrecoParam *fRecoParam; //! Offline reco params
87         AliTRDReconstructor * fReconstructor;
88         
89         ClassDef(AliHLTTRDTrackerV1Component, 0)
90
91     };
92 #endif