]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/BASE/AliHLTRunStatistics.cxx
Update master to aliroot
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTRunStatistics.cxx
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   AliHLTRunStatistics.cxx
20     @author Jochen Thaeder
21     @date   
22     @brief  Base class for run statistics, for all detectors
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 #include "AliHLTRunStatistics.h"
32 #include <iostream>
33 #include <cerrno>
34
35 using std::cout;
36
37 ClassImp(AliHLTRunStatistics)
38     
39 AliHLTRunStatistics::AliHLTRunStatistics()
40   : TNamed("HLT", "HLT Run Statistics")
41   , fNEvents(0)
42   , fMyObjects()
43 {
44   // see header file for class documentation
45   // or
46   // refer to README to build package
47   // or
48   // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
49 }
50
51 AliHLTRunStatistics::AliHLTRunStatistics (const AliHLTRunStatistics& src)
52   : TNamed(src)
53   , fNEvents(src.fNEvents)
54   , fMyObjects()
55 {
56   // see header file for class documentation
57   for (int i=0; i<src.fMyObjects.GetEntriesFast(); i++) {
58     fMyObjects.Add(src.fMyObjects.Clone());
59   }
60   fMyObjects.SetOwner(kTRUE);
61 }
62
63 AliHLTRunStatistics& AliHLTRunStatistics::operator= (const AliHLTRunStatistics& src)
64 {
65   // see header file for class documentation
66   this->~AliHLTRunStatistics();
67   new (this) AliHLTRunStatistics(src);
68   return *this;
69 }
70
71 AliHLTRunStatistics::~AliHLTRunStatistics()
72 {
73   // see header file for class documentation
74   fMyObjects.Delete();
75 }
76
77 void AliHLTRunStatistics::Print(Option_t* option) const
78 {
79   // see header file for class documentation
80   cout << "============ " << GetTitle() << " ============" << endl;
81   cout << "\t" << GetNEvents() << " event(s)" << endl;
82   for (int i=0; i<fMyObjects.GetEntriesFast(); i++) {
83     fMyObjects.Print(option);
84   }
85   cout << "==============================================" << endl;
86 }
87
88 void AliHLTRunStatistics::Copy(TObject &object) const
89 {
90   // copy this to the specified object
91
92   AliHLTRunStatistics* pStatistics=dynamic_cast<AliHLTRunStatistics*>(&object);
93   if (pStatistics) {
94     // copy members if target is a AliHLTTriggerDecision
95     *pStatistics=*this;
96   }
97
98   // copy the base class
99   TObject::Copy(object);
100 }
101
102 TObject *AliHLTRunStatistics::Clone(const char */*newname*/) const
103 {
104   // create a new clone, classname is ignored
105
106   return new AliHLTRunStatistics(*this);
107 }
108
109 void  AliHLTRunStatistics::Clear(Option_t * /*option*/)
110 {
111   // clear the content
112   fNEvents=0;
113   fMyObjects.Clear();
114 }
115
116 int AliHLTRunStatistics::Add(const TObject* pObject)
117 {
118   // Add clone of object
119
120   if (!pObject) return -EINVAL;
121   fMyObjects.Add(pObject->Clone());
122   return 0;
123 }