make AliVVevent abstract (=0)
[u/mrichter/AliRoot.git] / HLT / global / AliHLTGlobalDCSPublisherComponent.h
CommitLineData
3e8728ed 1//-*- Mode: C++ -*-
2// $Id$
3
4#ifndef ALIHLTGLOBALDCSPUBLISHERCOMPONENT_H
5#define ALIHLTGLOBALDCSPUBLISHERCOMPONENT_H
6
7//* This file is property of and copyright by the ALICE HLT Project *
8//* ALICE Experiment at CERN, All rights reserved. *
9//* See cxx source for full Copyright notice *
10
11/** @file AliHLTGlobalDCSPublisherComponent.h
12 @author Matthias Richter
13 @date 20010-03-10
14 @brief DIM publisher component for global HLT data
15*/
16#include "AliHLTDataSink.h"
f5eb29aa 17#include "AliHLTDimServer.h"
18#include <functional>
3e8728ed 19
20/**
21 * @class AliHLTGlobalDCSPublisherComponent
22 * DIM Publisher component for global HLT data.
23 * It implements a DIM server which publishes global HLT data through the
24 * following services:
25 * - Vertex_X
26 * - Vertex_Y
27 * - Vertex_Z
f5eb29aa 28 * - RmsVertex_X
29 * - RmsVertex_Y
30 * - RmsVertex_Z
3e8728ed 31 *
32 */
33class AliHLTGlobalDCSPublisherComponent : public AliHLTDataSink {
34public:
35 AliHLTGlobalDCSPublisherComponent();
36 ~AliHLTGlobalDCSPublisherComponent();
37
f5eb29aa 38 /// service enumerators
39 enum {
40 kVertexX,
41 kVertexY,
42 kVertexZ,
43 kDimensions,
44 kVertexRmsX=kDimensions,
45 kVertexRmsY,
46 kVertexRmsZ,
47 kLastService
48 };
49
3e8728ed 50 virtual const char* GetComponentID();
51 virtual void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
52 virtual AliHLTComponent* Spawn();
53
54 protected:
55 /// component initialization
56 int DoInit( int argc, const char** argv );
57
58 /// component cleanup
59 int DoDeinit();
60
61 /// Data processing method for the component.
62 virtual int DumpEvent( const AliHLTComponentEventData& evtData,
63 AliHLTComponentTriggerData& trigData );
64
65 using AliHLTDataSink::DumpEvent;
66
67 int ScanConfigurationArgument(int argc, const char** argv);
f5eb29aa 68 int Publish(bool reset=false);
3e8728ed 69
70private:
71 /// copy constructor not permitted
72 AliHLTGlobalDCSPublisherComponent(const AliHLTGlobalDCSPublisherComponent&);
73 /// assignment operator not permitted
74 AliHLTGlobalDCSPublisherComponent& operator=(const AliHLTGlobalDCSPublisherComponent&);
75
f5eb29aa 76 /// binary function for the calculation of rms using std::accumulate
77 template <class T> class MeanSqtOp {
78 public:
79 MeanSqtOp() : fMean(0) {}
80 MeanSqtOp(T mean) : fMean(mean) {}
81 T operator() (const T& x, const T& y) const {
82 T val=x+(y-fMean)*(y-fMean);
83 return val;
84 }
85 private:
86 T fMean;
87 };
88
89 void Reset(vector<float>& sample, int size) const;
90 template <class T> T Mean(const vector<T>& sample, int count) const;
91 template <class T> T Rms(const vector<T>& sample, T mean, int count) const;
92
93 /// dim server name
94 string fServerName; //!
95 /// dim DNS server name
96 string fDimdns; //!
97 /// dim server instance
98 AliHLTDimServer* fpServer; //!
99
100 /// position in the event buffer
101 int fPosition; //!
102 /// size of the event buffer
103 int fEventBufferSize; //!
104 /// last update time
105 unsigned int fLastUpdate; //!
106 /// update period in seconds
107 unsigned int fUpdatePeriod; //!
108
109 /// event buffers
110 vector<float> fEventBuffers[kDimensions]; //!
111 /// array of dim services
112 AliHLTDimServer::AliHLTDimService* fDimServices[kLastService]; //!
113 /// dim service for the number of samples for
114 AliHLTDimServer::AliHLTDimService* fDimServiceEventCount; //!
115
116 /// names of services
117 static const char* fgkServiceNames[kLastService]; //!
3e8728ed 118
119 ClassDef(AliHLTGlobalDCSPublisherComponent, 0)
120};
121#endif