Cat
CurrentMeasurement.cpp
Go to the documentation of this file.
1 // $Id: CurrentMeasurement.cpp,v 1.4 2006/03/16 17:08:23 fmachefe Exp $
2 
3 // Include files
4 #include <ctime>
5 #include <iostream>
6 #include <sstream>
7 #include <string>
8 
9 // ROOT include files
10 #include "TRandom.h"
11 #include "TH2D.h"
12 #include "TH1D.h"
13 
14 // local
15 #include "CurrentMeasurement.h"
16 
17 //-----------------------------------------------------------------------------
18 // Implementation file for class : CurrentMeasurement
19 //
20 // 2004-07-23 : Frédéric Machefert
21 //-----------------------------------------------------------------------------
22 
23 //=============================================================================
24 // Standard constructor, initializes variables
25 //=============================================================================
27  setName ( "CurrentMeasurement" );
28  setType ( "NI6008" );
29  setTitle( "NI6008 current measurement" );
30  m_device = 0;
31 }
32 
33 //=========================================================================
34 // virtual function intialize
35 //=========================================================================
37  m_device = dynamic_cast <NI6008*> (element());
39  time(&m_startTime);
40  if (application()->options()->dataStorage()){
41  m_tree = new TTree(name().c_str(), title().c_str());
42  m_tree->Branch("Run",&m_runNumber,"Run/I");
43  m_tree->Branch("Event",&m_evtNumber,"Event/I");
44  m_tree->Branch("Time",m_timestamp,(std::string("Time[")+
46  std::string("]/I")).c_str());
47  m_tree->Branch("Duration",m_duration,(std::string("Duration[")+
49  std::string("]/I")).c_str());
50  m_tree->Branch("ai0",m_ai0,
51  (std::string("ai0[")+itos(m_device->numberOfDevices())+std::string("]/D")).c_str());
52  m_tree->Branch("ai1",m_ai1,
53  (std::string("ai1[")+itos(m_device->numberOfDevices())+std::string("]/D")).c_str());
54  m_tree->Branch("ai2",m_ai2,
55  (std::string("ai2[")+itos(m_device->numberOfDevices())+std::string("]/D")).c_str());
56  m_tree->Branch("ai3",m_ai3,
57  (std::string("ai3[")+itos(m_device->numberOfDevices())+std::string("]/D")).c_str());
58  }
59  for (int i = 0; i<m_device->numberOfDevices(); ++i){
60  std::string dev = m_device->device(i);
61  info("Preparing dataStream for device "+dev);
62  addDataStream((dev+std::string(":Duration")).c_str(),"Duration");
63  addDataStream((dev+std::string(":ai0")).c_str(),"Channel 0");
64  addDataStream((dev+std::string(":ai1")).c_str(),"Channel 1");
65  addDataStream((dev+std::string(":ai2")).c_str(),"Channel 2");
66  addDataStream((dev+std::string(":ai3")).c_str(),"Channel 3");
67  }
69  return StatusCode::SUCCESS;
70 }
71 
72 //=========================================================================
73 // Virtual function execute
74 //=========================================================================
76  for (int i = 0; i<m_device->numberOfDevices(); ++i){
77  std::string dev = m_device->device(i);
78  std::string val = m_device->cmd(dev, "ai");
79  std::istringstream splitval(val);
80  std::string v0, v1, v2, v3;
81  splitval >> v0;
82  splitval >> v1;
83  splitval >> v2;
84  splitval >> v3;
85  // m_ai0[i]=toDouble(v0);
86  // m_ai1[i]=toDouble(v1);
87  // m_ai2[i]=toDouble(v2);
88  // m_ai3[i]=toDouble(v3);
89  m_ai0[i]=atof(v0.c_str());
90  m_ai1[i]=atof(v1.c_str());
91  m_ai2[i]=atof(v2.c_str());
92  m_ai3[i]=atof(v3.c_str());
93  time_t t = time(0);
94  m_timestamp[i]=t;
95  m_duration[i]=difftime(t, m_startTime);
96  dataFill(0+5*i, m_duration[i]);
97  dataFill(1+5*i, m_ai0[i]);
98  dataFill(2+5*i, m_ai1[i]);
99  dataFill(3+5*i, m_ai2[i]);
100  dataFill(4+5*i, m_ai3[i]);
101  }
102  if (application()->options()->dataStorage()){
104  m_tree->Fill();
105  }
106  wait(m_frequency);
107  return StatusCode::SUCCESS;
108 }
109 
110 //=========================================================================
111 // Virtual function finalize
112 //=========================================================================
114  // if (application()->options()->dataStorage()){
115  // m_tree->Print();
116  // }
117  return StatusCode::SUCCESS;
118 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
unsigned long nEvt()
Definition: Options.h:317
unsigned int m_frequency
std::string device(unsigned int dev)
Definition: NI6008.h:120
CurrentMeasurement()
Standard constructor.
std::string title()
Definition: Object.h:31
void setName(std::string name)
Definition: Object.h:51
void addDataStream(std::string name, std::string title)
Definition: Processus.h:153
unsigned long runNumber()
Definition: Options.h:107
virtual StatusCode finalize()
Application * application()
Definition: Tools.cpp:42
Options * options()
Definition: Application.h:86
void setType(std::string type)
Definition: Object.h:52
virtual StatusCode execute()
void setTitle(std::string title)
Definition: Object.h:54
unsigned int m_numberOfDevices
std::string cmd(std::string, std::string)
Definition: NI6008.cpp:38
unsigned int numberOfDevices()
Definition: NI6008.h:133
std::string name() const
Definition: Object.h:28
Element * element()
Definition: Processus.h:231
StatusCode dataFill(int i, double val)
Definition: Processus.h:175
virtual StatusCode initialize()
Destructor.
void wait(int nbr_ms)
Definition: Tools.cpp:271
Definition: NI6008.h:26