3 #ifndef ALIHLTTPCEVENTSTATISTICSPRODUCERCOMPONENT_H
4 #define ALIHLTTPCEVENTSTATISTICSPRODUCERCOMPONENT_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 */
10 /** @file AliHLTTPCEventStatisticsProducerComponent.h
11 @author Jochen Thaeder
13 @brief Component for the @see AliHLTTPCEventStatisticsProducer class
16 // see below for class documentation
18 // refer to README to build package
20 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
22 #include "AliHLTProcessor.h"
24 #include "AliHLTTPCEventStatistics.h"
25 #include "AliHLTTPCTrackArray.h"
28 * @class AliHLTTPCEventStatisticsProducerComponent
29 * @brief Component for the @see AliHLTTPCEventStatisticsProducer class
32 * @ingroup alihlt_run_statistics alihlt_trigger
35 class AliHLTTPCEventStatisticsProducerComponent : public AliHLTProcessor {
40 AliHLTTPCEventStatisticsProducerComponent();
42 virtual ~AliHLTTPCEventStatisticsProducerComponent();
44 // Public functions to implement AliHLTComponent's interface.
45 // These functions are required for the registration process
47 const char* GetComponentID();
48 void GetInputDataTypes( AliHLTComponentDataTypeList& list );
50 AliHLTComponentDataType GetOutputDataType();
51 Int_t GetOutputDataTypes( AliHLTComponentDataTypeList& tgtList );
53 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
54 AliHLTComponent* Spawn();
58 using AliHLTProcessor::DoEvent;
60 // Protected functions to implement AliHLTComponent's interface.
61 // These functions provide initialization as well as the actual processing
62 // capabilities of the component.
64 /** Initialize the trigger component. */
65 Int_t DoInit( int argc, const char** argv );
67 /** DeInitialize the trigger component. */
70 /** Process the data in the trigger component */
71 Int_t DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
73 // ------------------------------------------------------------------------------------------
75 /** Initialize for next event */
76 void InitializeEvent();
78 /** Add new cluster block
79 * @param ptr Pointer to data block
80 * @param size Size of data block
84 void AddClusters( void* ptr, AliHLTUInt32_t size, Int_t slice, Int_t patch );
86 /** Add new tracks block
87 * @param ptr Pointer to data block
88 * @param size Size of data block
89 * @param slice Slice, default is -1 for GlobalMerger tracks
91 void AddTracks( void* ptr, AliHLTUInt32_t size, Int_t slice=-1 );
93 /** Process even -> get process statistics */
96 /** Fill tracks per slice ( @see fNTracksPerSlice ), if global tracks */
97 void FillTracksPerSlice();
99 /** Get ptr to @see AliHLTTPCEventStatistics, is a TObject */
100 AliHLTTPCEventStatistics* GetEventStatistics() { return fEvStat; }
104 /** copy constructor prohibited */
105 AliHLTTPCEventStatisticsProducerComponent (const AliHLTTPCEventStatisticsProducerComponent&);
107 /** assignment operator prohibited */
108 AliHLTTPCEventStatisticsProducerComponent& operator= (const AliHLTTPCEventStatisticsProducerComponent&);
110 /** Threshold for long tracks */
111 Int_t fClusterThreshold; // see above
113 /** Event Statistics class*/
114 AliHLTTPCEventStatistics* fEvStat; //! transient
116 /** Tracks per slice */
117 Int_t fNTracksPerSlice[36]; // see above
119 /** Track container of class @see AliHLTTPCTrackArray */
120 AliHLTTPCTrackArray *fTracks; //! transient
122 /** If tracks in global coordinates @see fTracksPerSlice has still to be filled */
123 Bool_t fGlobalTracks; // see above
125 /** Number of slices with tracks */
126 Int_t fNSlice; // see above
128 ClassDef(AliHLTTPCEventStatisticsProducerComponent, 0);