]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/AliHLTTPCEventStatisticsProducerComponent.h
reverting r45444 to disentangle modules and make porting possible
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCEventStatisticsProducerComponent.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 #ifndef ALIHLTTPCEVENTSTATISTICSPRODUCERCOMPONENT_H
4 #define ALIHLTTPCEVENTSTATISTICSPRODUCERCOMPONENT_H
5
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 /** @file   AliHLTTPCEventStatisticsProducerComponent.h
11     @author Jochen Thaeder
12     @date   
13     @brief  Component for the @see AliHLTTPCEventStatisticsProducer class
14 */
15
16 // see below for class documentation
17 // or
18 // refer to README to build package
19 // or
20 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
21
22 #include "AliHLTProcessor.h"
23
24 #include "AliHLTTPCEventStatistics.h"
25 #include "AliHLTTPCTrackArray.h"
26 #include "AliESDEvent.h"
27 #include "TTree.h"
28
29 /**
30  * @class  AliHLTTPCEventStatisticsProducerComponent
31  * @brief  Component for the @see AliHLTTPCEventStatisticsProducer class
32  *
33  *
34  * @ingroup alihlt_run_statistics alihlt_trigger
35  */
36
37 class AliHLTTPCEventStatisticsProducerComponent : public AliHLTProcessor {
38   
39 public:
40   
41   /** constructor */
42   AliHLTTPCEventStatisticsProducerComponent();
43   /** destructor */
44   virtual ~AliHLTTPCEventStatisticsProducerComponent();
45
46   // Public functions to implement AliHLTComponent's interface.
47   // These functions are required for the registration process
48   
49   const char* GetComponentID();
50   void GetInputDataTypes( AliHLTComponentDataTypeList& list );
51
52   AliHLTComponentDataType GetOutputDataType();
53
54   virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
55   AliHLTComponent* Spawn();
56
57  protected:
58
59   using AliHLTProcessor::DoEvent;
60
61   // Protected functions to implement AliHLTComponent's interface.
62   // These functions provide initialization as well as the actual processing
63   // capabilities of the component. 
64   
65   /** Initialize the trigger component. */
66   Int_t DoInit( int argc, const char** argv );
67
68   /** DeInitialize the trigger component. */
69   Int_t DoDeinit();
70   
71   /** Process the data in the trigger component */
72   Int_t DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
73
74   // ------------------------------------------------------------------------------------------
75
76   /** Initialize for next event */
77   void InitializeEvent();                  
78
79   /** Add new cluster block 
80    * @param ptr   Pointer to data block
81    * @param size  Size of data block
82    * @param slice Slice
83    * @param patch Patch
84    */
85   void AddClusters( void* ptr, Int_t slice, Int_t patch );
86
87   /** Add new tracks block
88    * @param ptr   Pointer to data block
89    * @param size  Size of data block
90    * @param slice Slice, default is -1 for GlobalMerger tracks
91    */
92   void AddTracks( void* ptr, Int_t slice=-1 );     
93
94   /** Add ESD
95    * @param esdEvent Pointer to AliESDEvent
96    */
97   void AddESD( TTree* esdTree );     
98
99   /** Process even -> get process statistics */
100   void ProcessEvent();                          
101
102   /** Fill tracks per slice ( @see fNTracksPerSlice ), if global tracks */
103   void FillTracksPerSlice();    
104
105   /** Get ptr to @see AliHLTTPCEventStatistics, is a TObject */
106   AliHLTTPCEventStatistics* GetEventStatistics() { return fEvStat; }    
107
108 private:
109  
110   /** copy constructor prohibited */
111   AliHLTTPCEventStatisticsProducerComponent (const AliHLTTPCEventStatisticsProducerComponent&);
112
113   /** assignment operator prohibited */
114   AliHLTTPCEventStatisticsProducerComponent& operator= (const AliHLTTPCEventStatisticsProducerComponent&);
115
116   /** Threshold for long tracks */
117   Int_t fClusterThreshold;                                                                           // see above
118
119   /** Event Statistics class*/
120   AliHLTTPCEventStatistics* fEvStat;                                                                 //! transient
121
122   /** Tracks per slice */
123   Int_t fNTracksPerSlice[36];                                                                        // see above
124
125   /** Track container of class @see AliHLTTPCTrackArray */
126   AliHLTTPCTrackArray *fTracks;                                                                      //! transient
127
128   /** If tracks in global coordinates @see fTracksPerSlice has still to be filled */
129   Bool_t fGlobalTracks;                                                                              // see above
130
131   /** Number of slices with tracks */
132   Int_t fNSlice;                                                                                     // see above
133
134   ClassDef(AliHLTTPCEventStatisticsProducerComponent, 0);
135
136 };
137 #endif
138