]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/TPCLib/AliHLTTPCRunStatisticsProducerComponent.cxx
Bugfix, comparison of string -sorted was not correct.
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCRunStatisticsProducerComponent.cxx
CommitLineData
2ff24e4c 1//-*- Mode: C++ -*-
2// $Id$
3/**************************************************************************
4 * This file is property of and copyright by the ALICE HLT Project *
5 * ALICE Experiment at CERN, All rights reserved. *
6 * *
7 * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de> *
8 * for The ALICE HLT Project. *
9 * *
10 * Permission to use, copy, modify and distribute this software and its *
11 * documentation strictly for non-commercial purposes is hereby granted *
12 * without fee, provided that the above copyright notice appears in all *
13 * copies and that both the copyright notice and this permission notice *
14 * appear in the supporting documentation. The authors make no claims *
15 * about the suitability of this software for any purpose. It is *
16 * provided "as is" without express or implied warranty. *
17 **************************************************************************/
18
19/** @file AliHLTTPCRunStatisticsProducerComponent.cxx
20 @author Jochen Thaeder
21 @date
22 @brief Component for the @see AliHLTTPCEventStatisticsProducer class
23*/
24
25// see header file for class documentation
26// or
27// refer to README to build package
28// or
29// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
30
31#if __GNUC__ >= 3
32using namespace std;
33#endif
34
35#include "AliHLTTPCRunStatisticsProducerComponent.h"
36#include "AliHLTTPCEventStatistics.h"
37#include "TMath.h"
38
39#include <cerrno>
40
672f8b8c 41/** ROOT macro for the implementation of ROOT specific class methods */
2ff24e4c 42ClassImp(AliHLTTPCRunStatisticsProducerComponent)
43
44// ------------------------------------------------------------------------------------------
45AliHLTTPCRunStatisticsProducerComponent::AliHLTTPCRunStatisticsProducerComponent() :
46 fRunStat(NULL),
47 fIsHeader(kFALSE) {
48
49 // see header file for class documentation
50 // or
51 // refer to README to build package
52 // or
53 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
54}
55
56// ------------------------------------------------------------------------------------------
57AliHLTTPCRunStatisticsProducerComponent::~AliHLTTPCRunStatisticsProducerComponent() {
58 // see header file for class documentation
59}
60
61// ------------------------------------------------------------------------------------------
62const char* AliHLTTPCRunStatisticsProducerComponent::GetComponentID() {
63 // see header file for class documentation
64 return "TPCRunStatisticsProducer";
65}
66
67// ------------------------------------------------------------------------------------------
68void AliHLTTPCRunStatisticsProducerComponent::GetInputDataTypes(AliHLTComponentDataTypeList& list) {
69 // see header file for class documentation
70
71 list.clear();
72 list.push_back( kAliHLTDataTypeEventStatistics );
73}
74
75// ------------------------------------------------------------------------------------------
76AliHLTComponentDataType AliHLTTPCRunStatisticsProducerComponent::GetOutputDataType() {
77 // see header file for class documentation
78
79 return kAliHLTDataTypeRunStatistics|kAliHLTDataOriginTPC;
80}
81
82// ------------------------------------------------------------------------------------------
83void AliHLTTPCRunStatisticsProducerComponent::GetOutputDataSize( unsigned long& constBase,
84 double& inputMultiplier ) {
85 // see header file for class documentation
86
87 constBase = sizeof( AliHLTTPCRunStatistics );
88 inputMultiplier = 0.0;
89}
90
91// ------------------------------------------------------------------------------------------
92AliHLTComponent* AliHLTTPCRunStatisticsProducerComponent::Spawn() {
93 // Spawn function, return new instance of this class
94 // see header file for class documentation
95
96 return new AliHLTTPCRunStatisticsProducerComponent;
97}
98
99// ------------------------------------------------------------------------------------------
5eefc803 100Int_t AliHLTTPCRunStatisticsProducerComponent::DoInit( int /*argc*/, const char** /*argv*/ ) {
2ff24e4c 101 // see header file for class documentation
102
103 Int_t iResult = 0;
104
105 if ( fRunStat )
106 return EINPROGRESS;
107
108 fRunStat = new AliHLTTPCRunStatistics();
109
110 return iResult;
111}
112
113// ------------------------------------------------------------------------------------------
114Int_t AliHLTTPCRunStatisticsProducerComponent::DoDeinit() {
115 // see header file for class documentation
116
117 if ( fRunStat )
118 delete fRunStat;
119 fRunStat = NULL;
120
121 return 0;
122}
123
124// ------------------------------------------------------------------------------------------
5eefc803 125Int_t AliHLTTPCRunStatisticsProducerComponent::DoEvent( const AliHLTComponentEventData& /*evtData*/,
126 AliHLTComponentTriggerData& /*trigData*/ ) {
2ff24e4c 127 // see header file for class documentation
128
129 // ** Process EventStatistics Block
130 AliHLTTPCEventStatistics* evStat = (AliHLTTPCEventStatistics*) GetFirstInputObject ( kAliHLTDataTypeEventStatistics|kAliHLTDataOriginTPC,
131 "AliHLTTPCEventStatistics" );
132 if ( evStat )
133 ProcessEventStatistics ( evStat );
134
135 if ( ! fIsHeader ) {
136 fRunStat->SetDetectorName("TPC");
137
138 if ( evStat )
139 fRunStat->SetClusterThreshold( evStat->GetClusterThreshold() );
140 }
141
142 // ** increase number of events
143 fRunStat->AddNEvents();
144
145
146 PushBack ( (TObject*) GetRunStatistics(), sizeof(AliHLTTPCRunStatistics), kAliHLTDataTypeRunStatistics|kAliHLTDataOriginTPC, (AliHLTUInt32_t) 0 );
147
148 return 0;
149}
150
151// -- **********************************************************************************************
152// -- ******************************* Processing Functions **************************************
153// -- **********************************************************************************************
154
155// -- **********************************************************************************************
156void AliHLTTPCRunStatisticsProducerComponent::ProcessEventStatistics( AliHLTTPCEventStatistics* evStat ) {
157 // see header file for class documentation
158
159 // ** add number of total tracks
160 fRunStat->AddNTotalTracks( evStat->GetNTotalTracks() );
161
162 // ** add number of long tracks ( tracks above cluster threshold )
163 fRunStat->AddNTracksAboveClusterThreshold( evStat->GetNTracksAboveClusterThreshold() );
164
165 // ** add number of total clusters
166 fRunStat->AddNTotalCluster( evStat->GetNTotalCluster() );
167
168 // ** add number of cluster used in tracks
169 fRunStat->AddNUsedCluster( evStat->GetNUsedCluster() );
170
171 // ** add number of average clusters per track
172 fRunStat->AddAvgClusterPerTrack( evStat->GetAvgClusterPerTrack() );
173
174}
175
176
177