Cat
Data.cpp
Go to the documentation of this file.
1 // $Id: Data.cpp,v 1.11 2006/06/07 15:34:35 fmachefe Exp $
2 
3 // include files
4 #include "TH1F.h"
5 #include "TH2F.h"
6 #include "Object.h"
7 #include "Data.h"
8 
9 //-----------------------------------------------------------------------------
10 // Implementation file for class : Processus
11 //
12 // 2004-07-23 : Frederic Machefert
13 //-----------------------------------------------------------------------------
14 
15 //=============================================================================
16 // Standard constructor, initializes variables
17 //=============================================================================
19 }
20 
21 //=============================================================================
22 // Destructor
23 //=============================================================================
24 Data::~Data() {
25 }
26 
27 
31 void Data::addDataStream (std::string n, std::string t){
32  m_names .push_back(n);
33  m_titles.push_back(t);
34  m_values.push_back(new std::vector<double>);
35 }
36 
40 void Data::addHisto1d (TH1D *h){
41  m_h1d.push_back( h );
42 }
43 
47 void Data::addHisto2d (TH2D *h){
48  m_h2d.push_back( h );
49 }
50 
54 void Data::purge (){
55  m_names .clear();
56  m_titles.clear();
57  std::vector< std::vector<double>* >::iterator iter;
58  for (iter=m_values.begin(); iter!=m_values.end(); ++iter){
59  delete (*iter);
60  }
61  m_values.clear();
62  m_h1d.clear();
63  m_h2d.clear();
64  m_hist1d.clear();
65  debug("Data have been purged.","Data.purge");
66 }
67 
72  if (vectorPtr(i)!=0){
73  vectorPtr(i)->clear();
74  return StatusCode::SUCCESS;
75  }
76  else {
77  return StatusCode::FAILURE;
78  }
79 }
80 
85 StatusCode Data::dataFill(int i, double val){
86  if (vectorPtr(i)!=0){
87  vectorPtr(i)->push_back(val);
88  return StatusCode::SUCCESS;
89  }
90  else {
91  return StatusCode::FAILURE;
92  }
93 }
94 
99  std::vector<TH1D*>::iterator iter1d;
100  for (iter1d=m_h1d.begin(); iter1d!=m_h1d.end(); ++iter1d){
101  m_hist1d.push_back(Histo1D(*iter1d));
102  }
103  std::vector<TH2D*>::iterator iter2d;
104  for (iter2d=m_h2d.begin(); iter2d!=m_h2d.end(); ++iter2d){
105  m_hist2d.push_back(Histo2D(*iter2d));
106  }
107 }
108 
112 std::string Data::name(unsigned int row){
113  if (row>m_names.size()){
114  warning("Try to access a data stream value not defined ("+itos(row)+")","Data::name");
115  return 0;
116  }
117  return m_names[row];
118 }
119 
123 std::string Data::title(unsigned int row){
124  if (row>m_titles.size()){
125  warning("Try to access a data stream value not defined ("+itos(row)+")","Data::title");
126  return 0;
127  }
128  return m_titles[row];
129 }
130 
134 std::vector<double>* Data::vectorPtr(unsigned int row){
135  if (row>m_values.size()){
136  warning("Try to access a data stream value not defined ("+itos(row)+")",
137  "Data::vecData");
138  return 0;
139  }
140  return m_values[row];
141 }
142 
146 std::vector<double> Data::vector(unsigned int row){
147  std::vector<double>* ptr=vectorPtr(row);
148  if ((ptr)!=0){
149  return *ptr;
150  }
151  std::vector<double> a;
152  return (a);
153 }
154 
158 int Data::rowFromName(std::string name){
159  std::vector<std::string>::const_iterator iter;
160  for (iter=m_names.begin(); iter!=m_names.end(); ++iter){
161  if ((*iter).compare(name)==0){
162  return ((int)(iter-m_names.begin()));
163  }
164  }
165  return -1;
166 }
167 
171 std::vector<double> Data::vector(std::string name){
172  int row=rowFromName(name);
173  if (row>-1){
174  std::vector<double>* ptr=vectorPtr(row);
175  if ((ptr)!=0){
176  return *ptr;
177  }
178  }
179  std::vector<double> a;
180  return (a);
181 }
182 
186 void Data::print(){
187  char line[100];
188  sprintf(line,"Number of data streams : %i", m_names.size());
189  info(line,"Data::print");
190  std::vector<std::string>::const_iterator iter;
191  for (iter=m_names.begin(); iter!=m_names.end(); ++iter){
192  unsigned int index = (unsigned int)(iter-m_names.begin());
193  sprintf(line," (%3i) %10s - %40s (%8i)", index,
194  (*iter).c_str(),m_titles[index].c_str(),
195  vectorPtr(index)->size());
196  info(line,"Data::print");
197  }
198  sprintf(line,"Number of 1D histograms : %i", m_h1d.size());
199  info(line,"Data::print");
200  std::vector<TH1D*>::const_iterator h1diter;
201  for (h1diter=m_h1d.begin(); h1diter!=m_h1d.end(); ++h1diter){
202  unsigned int index = (unsigned int)(h1diter-m_h1d.begin());
203  sprintf(line," (%3i) %10s - %50s", index,
204  (*h1diter)->GetName(),(*h1diter)->GetTitle());
205  info(line,"Data::print");
206  }
207  sprintf(line,"Number of 2D histograms : %i", m_h2d.size());
208  info(line,"Data::print");
209  std::vector<TH2D*>::const_iterator h2diter;
210  for (h2diter=m_h2d.begin(); h2diter!=m_h2d.end(); ++h2diter){
211  unsigned int index = (unsigned int)(h2diter-m_h2d.begin());
212  sprintf(line," (%3i) %10s - %50s", index,
213  (*h2diter)->GetName(),(*h2diter)->GetTitle());
214  info(line,"Data::print");
215  }
216 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
void addDataStream(std::string, std::string)
Definition: Data.cpp:31
StatusCode dataFill(int, double)
Definition: Data.cpp:85
Data()
Standard constructor.
Definition: Data.cpp:18
std::string title()
Definition: Object.h:31
void addHisto2d(TH2D *)
Definition: Data.cpp:47
std::vector< Histo1D > m_hist1d
Definition: Data.h:60
int rowFromName(std::string)
Definition: Data.cpp:158
void purge()
Definition: Data.cpp:54
std::vector< std::vector< double > *> m_values
Definition: Data.h:57
std::vector< double > vector(unsigned int)
Definition: Data.cpp:146
StatusCode clear(int)
Definition: Data.cpp:71
std::vector< TH2D *> m_h2d
Definition: Data.h:59
std::vector< TH1D *> m_h1d
Definition: Data.h:58
void debug(std::string mymsg)
Definition: Object.h:37
list index
Definition: images.py:1021
virtual ~Data()
Definition: Data.h:21
void print()
Definition: Data.cpp:186
std::vector< std::string > m_titles
Definition: Data.h:62
std::vector< Histo2D > m_hist2d
Definition: Data.h:61
std::vector< std::string > m_names
Definition: Data.h:63
void buildHistos()
Definition: Data.cpp:98
std::string name() const
Definition: Object.h:28
void warning(std::string mymsg)
Definition: Object.h:39
void addHisto1d(TH1D *)
Definition: Data.cpp:40
std::vector< double > * vectorPtr(unsigned int)
Definition: Data.cpp:134