]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TRD/AliHLTTRDPreprocessorComponent.h
HLTsim
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDPreprocessorComponent.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 #ifndef ALIHLTTRDPREPROCESSORCOMPONENT_H
4 #define ALIHLTTRDPREPROCESSORCOMPONENT_H
5
6 //* This file is property of and copyright by the ALICE HLT/TRD Project    *
7 //* ALICE Experiment at CERN, All rights reserved.                         *
8 //* See cxx source for full Copyright notice                               */
9
10 /// @file   AliHLTTRDPreprocessorComponent.h
11 /// @author Felix Rettig, Stefan Kirsch
12 /// @date   2012-08-16
13 /// @brief  A FEP-level pre-processing component for TRD tracking/trigger data
14 /// @ingroup alihlt_trd_components
15
16 #include "AliHLTProcessor.h"
17
18 class AliRawReaderMemory;
19 class TTree;
20 class AliTRDdigitsManager;
21 class AliTRDrawStream;
22 class AliTRDonlineTrackingDataContainer;
23 class TH1F;
24 class TH1I;
25 class TH2I;
26 class TH2F;
27
28 /**
29  * @class AliHLTTRDPreprocessorComponent
30  * Component fetches raw data input objects in DDL format and extracts tracklets and GTU tracks.
31  *  It also instantiates a RawReader in order to be used with some reconstruction.
32  *
33  * More information and examples can be found here (relative to $ALICE_ROOT):
34  *
35  * -- HLT/BASE/AliHLTComponent.h/.cxx,  HLT/BASE/AliHLTProcessor.h/.cxx
36  *    Interface definition and description
37  * -- HLT/SampleLib: example implementations of components
38  *
39  *
40  * <h2>General properties:</h2>
41  *
42  * Component ID: \b TRDPreprocessorComponent <br>
43  * Library: \b libAliHLTTRD.so     <br>
44  * Input Data Types: @ref kAliHLTDataTypeDDLRaw|kAliHLTDataOriginTRD <br>
45  * Output Data Types: @ref kAliHLTTrackDataTypeID|kAliHLTDataOriginTRD <br>
46  *
47  * <h2>Mandatory arguments:</h2>
48  * none
49  *
50  * <h2>Optional arguments:</h2>
51  * none
52  *
53  * <h2>Configuration:</h2>
54  * none
55  *
56  * <h2>Default CDB entries:</h2>
57  * none
58  *
59  * <h2>Performance:</h2>
60  * minmal
61  *
62  * <h2>Memory consumption:</h2>
63  * don't know yet
64  *
65  * <h2>Output size:</h2>
66  * not very much
67  *
68  * @ingroup The component has no output data.
69  */
70 class AliHLTTRDPreprocessorComponent : public AliHLTProcessor {
71 public:
72   AliHLTTRDPreprocessorComponent();
73   virtual ~AliHLTTRDPreprocessorComponent();
74
75   // AliHLTComponent interface functions
76   const char* GetComponentID();
77   void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
78   AliHLTComponentDataType GetOutputDataType();
79   int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
80   void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
81   void GetOCDBObjectDescription( TMap* const targetMap);
82
83   // Spawn function, return new class instance
84   AliHLTComponent* Spawn();
85
86  protected:
87   // AliHLTComponent interface functions
88   int DoInit( int argc, const char** argv );
89   int DoDeinit();
90   int DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
91   int ScanConfigurationArgument(int argc, const char** argv);
92   int Reconfigure(const char* cdbEntry, const char* chainId);
93   int ReadPreprocessorValues(const char* modules);
94
95   using AliHLTProcessor::DoEvent;
96
97 private:
98   /** copy constructor prohibited */
99   AliHLTTRDPreprocessorComponent(const AliHLTTRDPreprocessorComponent&);
100   /** assignment operator prohibited */
101   AliHLTTRDPreprocessorComponent& operator=(const AliHLTTRDPreprocessorComponent&);
102
103   void DbgLog(const char* prefix, ...);
104
105   // general
106   static const AliHLTEventID_t fgkInvalidEventId = 18446744073709551615llu;
107
108   UShort_t fDebugLevel;                              //! set debug checks/output level, 0: debug off
109   AliHLTEventID_t fEventId;                          //! event ID
110
111   // trd specific data
112   TClonesArray* fTrackletArray;                      //! internal tracklet array
113   TClonesArray *fGtuTrackArray;                      //! internal track array
114
115   // rawreader instance
116   AliRawReaderMemory* fRawReaderMem;                 //! TRD raw reader memory instance
117   AliTRDdigitsManager *fDigitsManagerTrd;            //! TRD digits manager instance
118   AliTRDrawStream*    fRawReaderTrd;                 //! TRD raw stream instance
119
120   AliTRDonlineTrackingDataContainer* fTrackingData;  //! internal tracking data container
121
122   ClassDef(AliHLTTRDPreprocessorComponent, 0)
123 };
124
125 #endif