Cat
Classes | Public Member Functions | Protected Member Functions | Private Attributes | List of all members
ADCMeasurement Class Reference

#include <include/ADCMeasurement.h>

Inheritance diagram for ADCMeasurement:
Processus Object Attrib

Classes

class  CurrentMeasurement
 

Public Member Functions

 ADCMeasurement ()
 Standard constructor. More...
 
virtual ~ADCMeasurement ()
 
virtual StatusCode initialize ()
 Destructor. More...
 
virtual StatusCode execute ()
 
virtual StatusCode finalize ()
 
StatusCode setFrequency (unsigned int frequency)
 
unsigned int frequency ()
 
unsigned int numberOfDevices ()
 
- Public Member Functions inherited from Processus
 Processus ()
 Standard constructor. More...
 
virtual ~Processus ()
 Destructor. More...
 
StatusCode startProcessing ()
 
StatusCode endProcessing ()
 
void clean ()
 
void setStorage (std::string storage)
 
Datadata ()
 
std::vector< double > data (unsigned int row)
 
std::vector< double > data (std::string name)
 
Histo1Dhist1d (unsigned int row)
 
Histo2Dhist2d (unsigned int row)
 
void addDataStream (std::string name, std::string title)
 
void addHisto1d (TH1D *h)
 
void addHisto2d (TH2D *h)
 
StatusCode dataFill (int i, double val)
 
StatusCode dataFill (std::string name, double val)
 
std::string storage ()
 
void setElement (Element *element)
 
Elementelement ()
 
void incNErrors ()
 
void setNErrors (unsigned int)
 
unsigned int nErrors ()
 
TFile * rootFile ()
 
void openRootFile ()
 
void closeRootFile ()
 
void startChrono ()
 
void setLogMsg (std::string logMsg)
 
std::string logMsg ()
 
void setState (int state)
 
double elapsedTime ()
 
double elapsedTime (time_t start)
 
- Public Member Functions inherited from Object
 Object ()
 Standard constructor. More...
 
virtual ~Object ()
 Destructor. More...
 
std::string name () const
 
std::string type ()
 
unsigned char id ()
 
std::string title ()
 
void msgSvc (int level, std::string msg, std::string name)
 
void msg (std::string mymsg)
 
void verbose (std::string mymsg)
 
void debug (std::string mymsg)
 
void info (std::string mymsg)
 
void warning (std::string mymsg)
 
void error (std::string mymsg)
 
void fatal (std::string mymsg)
 
void msg (std::string mymsg, std::string name)
 
void verbose (std::string mymsg, std::string name)
 
void debug (std::string mymsg, std::string name)
 
void info (std::string mymsg, std::string name)
 
void warning (std::string mymsg, std::string name)
 
void error (std::string mymsg, std::string name)
 
void fatal (std::string mymsg, std::string name)
 
void setName (std::string name)
 
void setType (std::string type)
 
void setId (unsigned char id)
 
void setTitle (std::string title)
 
void setDllName (std::string dllName)
 
std::string dllName ()
 
- Public Member Functions inherited from Attrib
 Attrib ()
 Standard constructor. More...
 
virtual ~Attrib ()
 Destructor. More...
 
bool is (int attribut)
 
void add (int attribut)
 
void remove (int attribut)
 
std::string attributs ()
 

Protected Member Functions

ADCMeasurementclone ()
 

Private Attributes

TRandom * m_rnd
 
NI6008m_device
 
unsigned int m_frequency
 
TTree * m_tree
 
Int_t m_runNumber
 
Int_t m_evtNumber
 
Int_t m_timestamp
 
Int_t m_duration
 
time_t m_startTime
 
Float_t m_ai0
 
Float_t m_ai1
 
Float_t m_ao0
 
Float_t m_ao1
 
Int_t m_diA
 
Int_t m_diB
 
Float_t m_minRamp
 
Float_t m_maxRamp
 
Int_t m_stepRamp
 
Float_t m_ramp
 
Int_t m_baseline
 

Additional Inherited Members

- Public Types inherited from Processus
enum  states { ERR =-1, NOT_OK, OK }
 
- Public Types inherited from Attrib
enum  Attribut {
  UNDEFINED, PASSIVE, ACTIVE, INTERFACE,
  IO, IODATA, ELEMENT, HARDWARE,
  PROCESSUS, SOFTWARE
}
 
- Protected Attributes inherited from Processus
Elementm_element
 
- Protected Attributes inherited from Attrib
std::string m_attribString [10]
 

Detailed Description

Author
Frederic Machefert
Date
2010-01-07

Definition at line 23 of file ADCMeasurement.h.

Constructor & Destructor Documentation

◆ ADCMeasurement()

ADCMeasurement::ADCMeasurement ( )

Standard constructor.

Definition at line 26 of file ADCMeasurement.cpp.

References Object::setName(), Object::setTitle(), and Object::setType().

Referenced by clone().

26  {
27  setName ( "ADCMeasurement" );
28  setType ( "NI6008" );
29  setTitle( "NI6008 ADC measurement" );
30 }
void setName(std::string name)
Definition: Object.h:51
void setType(std::string type)
Definition: Object.h:52
void setTitle(std::string title)
Definition: Object.h:54

◆ ~ADCMeasurement()

virtual ADCMeasurement::~ADCMeasurement ( )
inlinevirtual

Definition at line 28 of file ADCMeasurement.h.

References execute(), finalize(), and initialize().

28 {};

Member Function Documentation

◆ clone()

ADCMeasurement* ADCMeasurement::clone ( )
inlineprotectedvirtual

processus termination virtual function

Implements Processus.

Definition at line 48 of file ADCMeasurement.h.

References ADCMeasurement().

48  {
49  return new ADCMeasurement (*this);
50  };
ADCMeasurement()
Standard constructor.

◆ execute()

StatusCode ADCMeasurement::execute ( )
virtual

processus execution virtual function

Implements Processus.

Definition at line 73 of file ADCMeasurement.cpp.

References application(), NI6008::cmd(), Processus::dataFill(), m_ai0, m_ai1, m_ao0, m_baseline, m_device, m_diA, m_diB, m_duration, m_evtNumber, m_frequency, m_maxRamp, m_minRamp, m_ramp, m_startTime, m_stepRamp, m_timestamp, m_tree, Options::nEvt(), Application::options(), StatusCode::SUCCESS, and wait().

Referenced by ~ADCMeasurement().

73  {
74  // get current
75  std::string val = m_device->cmd("Dev1", "ai");
76  std::istringstream sv1(val);
77  std::string v0, v1, tmp;
78  sv1 >> v0;
79  sv1 >> v1;
80  // m_ai0=toDouble(v0);
81  // m_ai1=toDouble(v1);
82  m_ai0 = atof(v0.c_str());
83  m_ai1 = atof(v1.c_str());
84  std::cout << v0 << " " << v1 << " " << m_ai0 << " " << m_ai1 << std::endl;
85  dataFill(1, m_ai0);
86  dataFill(2, m_ai1);
87  // set ramp value and channel A
88  dataFill(3, m_ramp);
89  m_ao0 = m_ramp;
90  char cmd[80];
91  sprintf(cmd,"ao %f %f", m_ramp, 0.);
92  m_device->cmd("Dev1", cmd );
93  val = m_device->cmd("Dev1", "di");
94  std::istringstream sv2(val);
95  sv2 >> tmp;
96  sv2 >> tmp;
97  sv2 >> tmp;
98  sv2 >> v0 >> tmp >> v1 ;
99  m_diA = atoi(v0.c_str());
100  dataFill(4, m_diA);
101 
102  sprintf(cmd,"ao %f %f", m_ramp, 3.3);
103  m_device->cmd("Dev1", cmd );
104  val = m_device->cmd("Dev1", "di");
105  std::istringstream sv3(val);
106  sv3 >> tmp;
107  sv3 >> tmp;
108  sv3 >> tmp;
109  sv3 >> v0 >> tmp >> v1 ;
110  m_diB = atoi(v1.c_str());
111  dataFill(5, m_diB);
112 
113  if (m_diA>m_baseline){
114  dataFill(6, m_ramp/float(m_diA-m_baseline));
115  }
116  else {
117  dataFill(6, 0.);
118  }
119  if (m_diB>m_baseline){
120  dataFill(7, m_ramp/float(m_diB-m_baseline));
121  }
122  else {
123  dataFill(7, 0.);
124  }
125 
126  // std::cout << "digit: " << m_ramp << " " << m_diA << " " << m_diB << std::endl;
127 
128  time_t t =time(0);
129  m_duration=difftime(t, m_startTime);
130  m_timestamp = t;
131  dataFill(0, m_duration);
132 
133  if (application()->options()->dataStorage()){
135  m_tree->Fill();
136  }
137  wait(m_frequency);
138  m_ramp += (m_maxRamp-m_minRamp)/float(m_stepRamp);
139  if ( m_ramp > m_maxRamp ) { m_ramp = m_minRamp; }
140  return StatusCode::SUCCESS;
141 }
unsigned long nEvt()
Definition: Options.h:317
Application * application()
Definition: Tools.cpp:42
Options * options()
Definition: Application.h:86
NI6008 * m_device
std::string cmd(std::string, std::string)
Definition: NI6008.cpp:38
unsigned int m_frequency
StatusCode dataFill(int i, double val)
Definition: Processus.h:175
void wait(int nbr_ms)
Definition: Tools.cpp:271

◆ finalize()

StatusCode ADCMeasurement::finalize ( )
virtual

processus termination virtual function

Implements Processus.

Definition at line 146 of file ADCMeasurement.cpp.

References StatusCode::SUCCESS.

Referenced by ~ADCMeasurement().

146  {
147  return StatusCode::SUCCESS;
148 }

◆ frequency()

unsigned int ADCMeasurement::frequency ( )
inline

Definition at line 39 of file ADCMeasurement.h.

References m_frequency.

Referenced by BOOST_PYTHON_MODULE(), and setFrequency().

39  {
40  return m_frequency;
41  }
unsigned int m_frequency

◆ initialize()

StatusCode ADCMeasurement::initialize ( )
virtual

Destructor.

Implements Processus.

Definition at line 35 of file ADCMeasurement.cpp.

References Processus::addDataStream(), application(), Options::dataStorage(), Processus::element(), Object::info(), m_ai0, m_ai1, m_ao0, m_baseline, m_device, m_diA, m_diB, m_duration, m_evtNumber, m_maxRamp, m_minRamp, m_ramp, m_runNumber, m_startTime, m_stepRamp, m_timestamp, m_tree, Object::name(), Application::options(), Options::runNumber(), StatusCode::SUCCESS, and Object::title().

Referenced by ~ADCMeasurement().

35  {
36  m_minRamp = 0.;
37  m_maxRamp = 1.2;
38  m_stepRamp = 20;
39  m_baseline = 1400;
40  m_ramp = m_minRamp;
41  time(&m_startTime);
42  m_device = dynamic_cast <NI6008*> (element());
43  if (application()->options()->dataStorage()){
44  m_tree = new TTree(name().c_str(), title().c_str());
45  m_tree->Branch("Run",&m_runNumber,"Run/I");
46  m_tree->Branch("Event",&m_evtNumber,"Event/I");
47  m_tree->Branch("Time",&m_timestamp,"Time/I");
48  m_tree->Branch("Duration",&m_duration,"Duration/I");
49  m_tree->Branch("ai0",&m_ai0,"ai0/F");
50  m_tree->Branch("ai1",&m_ai1,"ai1/F");
51  m_tree->Branch("ao0",&m_ao0,"ao0/F");
52  // m_tree->Branch("ao1",&m_ao1,"ao1/F");
53  m_tree->Branch("di_0",&m_diA,"diA/I");
54  m_tree->Branch("di_1",&m_diB,"diB/I");
55  }
56  info("Preparing dataStreams.");
57  addDataStream("Duration","Duration");
58  addDataStream("ai0", "Channel 0");
59  addDataStream("ai1", "Channel 1");
60  addDataStream("ao0", "Ramp Ampl");
61  // addDataStream("ao1", "ADC Chan Ctrl");
62  addDataStream("diA","ADC A");
63  addDataStream("diB","ADC B");
64  addDataStream("ratioA","ratio amplitude A");
65  addDataStream("ratioB","ratio amplitude B");
67  return StatusCode::SUCCESS;
68 }
void info(std::string mymsg)
Definition: Object.h:38
std::string title()
Definition: Object.h:31
void addDataStream(std::string name, std::string title)
Definition: Processus.h:153
unsigned long runNumber()
Definition: Options.h:107
Application * application()
Definition: Tools.cpp:42
bool dataStorage()
Definition: Options.h:252
Options * options()
Definition: Application.h:86
NI6008 * m_device
std::string name() const
Definition: Object.h:28
Element * element()
Definition: Processus.h:231
Definition: NI6008.h:26

◆ numberOfDevices()

unsigned int ADCMeasurement::numberOfDevices ( )
inline

Definition at line 43 of file ADCMeasurement.h.

References m_device, and NI6008::numberOfDevices().

43  {
44  return m_device->numberOfDevices();
45  }
NI6008 * m_device
unsigned int numberOfDevices()
Definition: NI6008.h:133

◆ setFrequency()

StatusCode ADCMeasurement::setFrequency ( unsigned int  frequency)
inline

Definition at line 34 of file ADCMeasurement.h.

References frequency(), m_frequency, and StatusCode::SUCCESS.

Referenced by BOOST_PYTHON_MODULE().

34  {
36  return StatusCode::SUCCESS;
37  }
unsigned int frequency()
unsigned int m_frequency

Member Data Documentation

◆ m_ai0

Float_t ADCMeasurement::m_ai0
private

Definition at line 62 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_ai1

Float_t ADCMeasurement::m_ai1
private

Definition at line 63 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_ao0

Float_t ADCMeasurement::m_ao0
private

Definition at line 64 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_ao1

Float_t ADCMeasurement::m_ao1
private

Definition at line 65 of file ADCMeasurement.h.

◆ m_baseline

Int_t ADCMeasurement::m_baseline
private

Definition at line 72 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_device

NI6008* ADCMeasurement::m_device
private

Definition at line 54 of file ADCMeasurement.h.

Referenced by execute(), initialize(), and numberOfDevices().

◆ m_diA

Int_t ADCMeasurement::m_diA
private

Definition at line 66 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_diB

Int_t ADCMeasurement::m_diB
private

Definition at line 67 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_duration

Int_t ADCMeasurement::m_duration
private

Definition at line 60 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_evtNumber

Int_t ADCMeasurement::m_evtNumber
private

Definition at line 58 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_frequency

unsigned int ADCMeasurement::m_frequency
private

Definition at line 55 of file ADCMeasurement.h.

Referenced by execute(), frequency(), and setFrequency().

◆ m_maxRamp

Float_t ADCMeasurement::m_maxRamp
private

Definition at line 69 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_minRamp

Float_t ADCMeasurement::m_minRamp
private

Definition at line 68 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_ramp

Float_t ADCMeasurement::m_ramp
private

Definition at line 71 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_rnd

TRandom* ADCMeasurement::m_rnd
private

Definition at line 50 of file ADCMeasurement.h.

◆ m_runNumber

Int_t ADCMeasurement::m_runNumber
private

Definition at line 57 of file ADCMeasurement.h.

Referenced by initialize().

◆ m_startTime

time_t ADCMeasurement::m_startTime
private

Definition at line 61 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_stepRamp

Int_t ADCMeasurement::m_stepRamp
private

Definition at line 70 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_timestamp

Int_t ADCMeasurement::m_timestamp
private

Definition at line 59 of file ADCMeasurement.h.

Referenced by execute(), and initialize().

◆ m_tree

TTree* ADCMeasurement::m_tree
private

Definition at line 56 of file ADCMeasurement.h.

Referenced by execute(), and initialize().


The documentation for this class was generated from the following files: