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

#include <inc/A3PE_BitFlip.h>

Inheritance diagram for A3PE_BitFlip:
Processus Object Attrib

Classes

class  A3PE_BitFlip
 

Public Types

typedef unsigned long U32
 
typedef unsigned short U16
 
typedef unsigned char U8
 
- 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
}
 

Public Member Functions

 A3PE_BitFlip ()
 Standard constructor. More...
 
virtual ~A3PE_BitFlip ()
 Destructor. More...
 
virtual StatusCode initialize ()
 
virtual StatusCode execute ()
 
virtual StatusCode finalize ()
 
StatusCode setFile (std::string filename)
 
std::string file ()
 
A3PEa3pe ()
 
- 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

A3PE_BitFlipclone ()
 
StatusCode randomValues ()
 

Private Attributes

Proto40MHz_v1m_board
 
A3PEm_pga
 
RAMm_toAX
 
RAMm_fromAX
 
std::string m_filename
 
unsigned int m_length
 
unsigned int m_latency
 
unsigned int m_latencyMin
 
unsigned int m_latencyMax
 
int m_offset
 
U8m_data
 
U8m_dataProcessed
 
TH1D * m_hLatency
 
TH1D * m_hErrorsLatency
 
TH1D * m_hErrorsWord
 

Additional Inherited Members

- Protected Attributes inherited from Processus
Elementm_element
 
- Protected Attributes inherited from Attrib
std::string m_attribString [10]
 

Detailed Description

Author
Date
2012-07-12

Definition at line 17 of file A3PE_BitFlip.h.

Member Typedef Documentation

◆ U16

typedef unsigned short A3PE_BitFlip::U16

Definition at line 20 of file A3PE_BitFlip.h.

◆ U32

typedef unsigned long A3PE_BitFlip::U32

Definition at line 19 of file A3PE_BitFlip.h.

◆ U8

typedef unsigned char A3PE_BitFlip::U8

Definition at line 21 of file A3PE_BitFlip.h.

Constructor & Destructor Documentation

◆ A3PE_BitFlip()

Standard constructor.

Definition at line 26 of file A3PE_BitFlip.cpp.

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

Referenced by clone().

26  :
27  m_filename(std::string("")),
28  m_offset(-6),
29  m_latencyMin(1000),
30  m_latencyMax(100000),
31  m_hLatency (0),
33  m_hErrorsWord(0)
34 {
35  setName ( "A3PE_BitFlip" );
36  setType ( "Proto40MHz_v1" );
37  setTitle( "Proto40MHz_v1 A3PE_BitFlip test" );
38 }
void setName(std::string name)
Definition: Object.h:51
std::string m_filename
Definition: A3PE_BitFlip.h:54
TH1D * m_hLatency
Definition: A3PE_BitFlip.h:67
void setType(std::string type)
Definition: Object.h:52
void setTitle(std::string title)
Definition: Object.h:54
unsigned int m_latencyMin
Definition: A3PE_BitFlip.h:59
TH1D * m_hErrorsWord
Definition: A3PE_BitFlip.h:67
unsigned int m_latencyMax
Definition: A3PE_BitFlip.h:60
TH1D * m_hErrorsLatency
Definition: A3PE_BitFlip.h:67

◆ ~A3PE_BitFlip()

A3PE_BitFlip::~A3PE_BitFlip ( )
virtual

Destructor.

Definition at line 42 of file A3PE_BitFlip.cpp.

42 {}

Member Function Documentation

◆ a3pe()

A3PE* A3PE_BitFlip::a3pe ( )
inline

Definition at line 39 of file A3PE_BitFlip.h.

References m_pga.

39 {return m_pga;}
A3PE * m_pga
Definition: A3PE_BitFlip.h:51

◆ clone()

A3PE_BitFlip* A3PE_BitFlip::clone ( )
inlineprotectedvirtual

processus termination virtual function

Implements Processus.

Definition at line 42 of file A3PE_BitFlip.h.

References A3PE_BitFlip(), and randomValues().

42  {
43  return new A3PE_BitFlip (*this);
44  }
A3PE_BitFlip()
Standard constructor.

◆ execute()

StatusCode A3PE_BitFlip::execute ( )
virtual

processus execution virtual function

Implements Processus.

Definition at line 109 of file A3PE_BitFlip.cpp.

References Object::debug(), Object::error(), StatusCode::FAILURE, m_data, m_dataProcessed, m_filename, m_fromAX, m_hErrorsLatency, m_hErrorsWord, m_hLatency, m_latency, m_latencyMax, m_latencyMin, m_length, m_offset, m_pga, randomValues(), IOobject::read(), A3PE::setAddFromAXRam(), A3PE::setAXRamUsb(), A3PE::setLatencyAX(), A3PE::startSequenceAX(), StatusCode::SUCCESS, and Object::warning().

Referenced by BOOST_PYTHON_MODULE().

109  {
110  debug("A3PE_BitFlip" , "execute");
111  unsigned long latency;
112 
113  if (0==m_latency){
114  latency=m_latencyMin+((float)(rand())/RAND_MAX*((float)(m_latencyMax-m_latencyMin)));
115  m_pga->setLatencyAX(latency);
116  }
117  else latency=m_latency;
118 
119  if (m_filename==std::string("")){
120  randomValues();
121  }
122 
123  m_hLatency->Fill((float)(latency));
125 
126  m_pga->setAXRamUsb(true);
128  m_fromAX->read();
129 
130  bool error=false;
131 
132  char line[100];
133  bool errLatencySeen=false;
134  for (unsigned int d=0; d<m_length; ++d){
135  unsigned int position=(d+latency+m_offset)%512;
136  if ((m_dataProcessed[4*d]!=m_data[4*position])||
137  (m_dataProcessed[4*d+1]!=m_data[4*position+1])||
138  (m_dataProcessed[4*d+2]!=m_data[4*position+2])||
139  (m_dataProcessed[4*d+3]!=m_data[4*position+3]))
140  {
141  if (!errLatencySeen) {
142  m_hErrorsLatency->Fill((float)(latency));
143  errLatencySeen=true;
144  }
145  m_hErrorsWord->Fill((float)(d));
146  sprintf(line,"%3d -> %1d %1d %1d %1d / %1d %1d %1d %1d",
147  d,
149  m_data[4*position],m_data[1+4*position],m_data[2+4*position],m_data[3+4*position]);
150  warning(line);
151  error = true;
152  }
153  }
154  if (error) return StatusCode::FAILURE;
155  return StatusCode::SUCCESS;
156 }
std::string m_filename
Definition: A3PE_BitFlip.h:54
TH1D * m_hLatency
Definition: A3PE_BitFlip.h:67
U8 * m_dataProcessed
Definition: A3PE_BitFlip.h:65
StatusCode startSequenceAX()
Definition: A3PE.cpp:949
virtual StatusCode read()
Definition: IOobject.h:73
StatusCode randomValues()
void error(std::string mymsg)
Definition: Object.h:40
void debug(std::string mymsg)
Definition: Object.h:37
unsigned int m_length
Definition: A3PE_BitFlip.h:56
StatusCode setLatencyAX(unsigned int)
Definition: A3PE.cpp:327
StatusCode setAddFromAXRam(int)
Definition: A3PE.cpp:190
A3PE * m_pga
Definition: A3PE_BitFlip.h:51
unsigned int m_latencyMin
Definition: A3PE_BitFlip.h:59
unsigned int m_latency
Definition: A3PE_BitFlip.h:57
TH1D * m_hErrorsWord
Definition: A3PE_BitFlip.h:67
unsigned int m_latencyMax
Definition: A3PE_BitFlip.h:60
void warning(std::string mymsg)
Definition: Object.h:39
StatusCode setAXRamUsb(bool)
Definition: A3PE.cpp:225
TH1D * m_hErrorsLatency
Definition: A3PE_BitFlip.h:67
RAM * m_fromAX
Definition: A3PE_BitFlip.h:53

◆ file()

std::string A3PE_BitFlip::file ( )
inline

Definition at line 35 of file A3PE_BitFlip.h.

References m_filename.

Referenced by BOOST_PYTHON_MODULE().

35  {
36  return m_filename;
37  }
std::string m_filename
Definition: A3PE_BitFlip.h:54

◆ finalize()

StatusCode A3PE_BitFlip::finalize ( )
virtual

processus termination virtual function

Implements Processus.

Definition at line 161 of file A3PE_BitFlip.cpp.

References m_latency, m_pga, A3PE::setLatencyAX(), and StatusCode::SUCCESS.

Referenced by BOOST_PYTHON_MODULE().

161  {
162  if (0==m_latency) m_pga->setLatencyAX(0);
163  return StatusCode::SUCCESS;
164 }
StatusCode setLatencyAX(unsigned int)
Definition: A3PE.cpp:327
A3PE * m_pga
Definition: A3PE_BitFlip.h:51
unsigned int m_latency
Definition: A3PE_BitFlip.h:57

◆ initialize()

StatusCode A3PE_BitFlip::initialize ( )
virtual

processus initialisation virtual function

Implements Processus.

Definition at line 49 of file A3PE_BitFlip.cpp.

References Proto40MHz_v1::a3pe(), Processus::addHisto1d(), IOdata::dataU8(), Object::debug(), Processus::element(), A3PE::fromAXRam(), Object::info(), A3PE::internalAXSequence(), IOobject::io(), itos(), A3PE::latencyAX(), A3PE::lengthAX(), A3PE::loadToAX(), m_board, m_data, m_dataProcessed, m_filename, m_fromAX, m_hErrorsLatency, m_hErrorsWord, m_hLatency, m_latency, m_latencyMax, m_latencyMin, m_length, m_offset, m_pga, m_toAX, Object::name(), StatusCode::SUCCESS, A3PE::toAXRam(), Object::type(), and Object::warning().

Referenced by BOOST_PYTHON_MODULE().

49  {
50  debug("A3PE_BitFlip" , "initialize");
51 
52  info("" );
53  info("____________________________");
54  info("A3PE bit flip test");
55  info(" =>" + element()->path() + " " +
56  element()->name() + " " + element()->type() );
57 
58  m_board=dynamic_cast<Proto40MHz_v1*>( element() );
59 
60  if (!m_board){
61  warning("A3PE_BitFlip","No Proto40MHz_v1 board found. Interrupt." );
62  return false;
63  }
64 
65  m_pga=m_board->a3pe();
67  m_toAX = m_pga->toAXRam();
68 
69  m_data =m_toAX->io()->dataU8();
71 
74 
75  if (m_pga->internalAXSequence()){
76  m_offset=-2;}
77  else {
78  m_offset=-5;
79  }
80 
81  if (m_filename!=std::string("")){
83  info("Static RAM mode ["+m_filename+"].");
84  }
85  else
86  info("Dynamic Random RAM mode.");
87  if (0==m_latency) info("Latency = random");
88  else info("Latency ="+itos(m_latency));
89  info("Length ="+itos(m_length));
90  info("Offset ="+itos(m_offset));
91 
92  warning("In internal loop the offset should be -3 with a Latency of 4 at least");
93  warning("In external loop the offset should be -6 with a Latency of 5 at least");
94  warning("The offset for this run is "+itos(m_offset));
95 
96  m_hLatency=new TH1D("Latency","Latency", 100, m_latencyMin, m_latencyMax );
97  m_hErrorsLatency =new TH1D("ErrorsLatency","Errors (Latency)", 100, m_latencyMin, m_latencyMax);
98  m_hErrorsWord =new TH1D("ErrorsWord","Errors (Word)", 100, 0, m_length);
102 
103  return StatusCode::SUCCESS;
104 }
void info(std::string mymsg)
Definition: Object.h:38
std::string itos(int)
Definition: Tools.cpp:46
unsigned int latencyAX()
Definition: A3PE.cpp:348
RAM * fromAXRam()
Definition: A3PE.h:552
std::string m_filename
Definition: A3PE_BitFlip.h:54
TH1D * m_hLatency
Definition: A3PE_BitFlip.h:67
void loadToAX(std::string)
Definition: A3PE.cpp:858
Proto40MHz_v1 * m_board
Definition: A3PE_BitFlip.h:50
A3PE * a3pe()
Definition: Proto40MHz_v1.h:74
U8 * m_dataProcessed
Definition: A3PE_BitFlip.h:65
void debug(std::string mymsg)
Definition: Object.h:37
unsigned int m_length
Definition: A3PE_BitFlip.h:56
unsigned int lengthAX()
Definition: A3PE.cpp:338
U8 * dataU8()
Definition: IOdata.h:214
A3PE * m_pga
Definition: A3PE_BitFlip.h:51
RAM * toAXRam()
Definition: A3PE.h:548
unsigned int m_latencyMin
Definition: A3PE_BitFlip.h:59
std::string name() const
Definition: Object.h:28
unsigned int m_latency
Definition: A3PE_BitFlip.h:57
void addHisto1d(TH1D *h)
Definition: Processus.h:160
Element * element()
Definition: Processus.h:231
TH1D * m_hErrorsWord
Definition: A3PE_BitFlip.h:67
unsigned int m_latencyMax
Definition: A3PE_BitFlip.h:60
std::string type()
Definition: Object.h:29
void warning(std::string mymsg)
Definition: Object.h:39
TH1D * m_hErrorsLatency
Definition: A3PE_BitFlip.h:67
bool internalAXSequence()
Definition: A3PE.cpp:285
IOdata * io()
Definition: IOobject.h:66
RAM * m_fromAX
Definition: A3PE_BitFlip.h:53

◆ randomValues()

StatusCode A3PE_BitFlip::randomValues ( )
protected

Definition at line 169 of file A3PE_BitFlip.cpp.

References RAM::depth(), m_data, m_pga, m_toAX, A3PE::setAddToAXRam(), A3PE::setAXRamUsb(), StatusCode::SUCCESS, and IOobject::write().

Referenced by clone(), and execute().

169  {
170  m_pga->setAXRamUsb(true);
171  m_pga->setAddToAXRam(0);
172  int depth=m_toAX->depth();
173 
174  for (int i=0; i<depth ; ++i){
175  m_data[4*i ]=(unsigned int) ( (float)rand()/RAND_MAX * 255. );
176  m_data[4*i+1]=(unsigned int) ( (float)rand()/RAND_MAX * 255. );
177  m_data[4*i+2]=(unsigned int) ( (float)rand()/RAND_MAX * 255. );
178  m_data[4*i+3]=(unsigned int) ( (float)rand()/RAND_MAX * 255. );
179  }
180 
181  m_toAX->write();
182  return StatusCode::SUCCESS;
183 }
virtual StatusCode write()
Definition: IOobject.h:80
StatusCode setAddToAXRam(int)
Definition: A3PE.cpp:179
int depth()
Definition: RAM.h:32
A3PE * m_pga
Definition: A3PE_BitFlip.h:51
StatusCode setAXRamUsb(bool)
Definition: A3PE.cpp:225

◆ setFile()

StatusCode A3PE_BitFlip::setFile ( std::string  filename)
inline

Definition at line 30 of file A3PE_BitFlip.h.

References m_filename, and StatusCode::SUCCESS.

Referenced by BOOST_PYTHON_MODULE().

30  {
31  m_filename=filename;
32  return StatusCode::SUCCESS;
33  };
std::string m_filename
Definition: A3PE_BitFlip.h:54

Member Data Documentation

◆ m_board

Proto40MHz_v1* A3PE_BitFlip::m_board
private

Definition at line 50 of file A3PE_BitFlip.h.

Referenced by initialize().

◆ m_data

U8* A3PE_BitFlip::m_data
private

Definition at line 64 of file A3PE_BitFlip.h.

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

◆ m_dataProcessed

U8* A3PE_BitFlip::m_dataProcessed
private

Definition at line 65 of file A3PE_BitFlip.h.

Referenced by execute(), and initialize().

◆ m_filename

std::string A3PE_BitFlip::m_filename
private

Definition at line 54 of file A3PE_BitFlip.h.

Referenced by execute(), file(), initialize(), and setFile().

◆ m_fromAX

RAM* A3PE_BitFlip::m_fromAX
private

Definition at line 53 of file A3PE_BitFlip.h.

Referenced by execute(), and initialize().

◆ m_hErrorsLatency

TH1D * A3PE_BitFlip::m_hErrorsLatency
private

Definition at line 67 of file A3PE_BitFlip.h.

Referenced by execute(), and initialize().

◆ m_hErrorsWord

TH1D * A3PE_BitFlip::m_hErrorsWord
private

Definition at line 67 of file A3PE_BitFlip.h.

Referenced by execute(), and initialize().

◆ m_hLatency

TH1D* A3PE_BitFlip::m_hLatency
private

Definition at line 67 of file A3PE_BitFlip.h.

Referenced by execute(), and initialize().

◆ m_latency

unsigned int A3PE_BitFlip::m_latency
private

Definition at line 57 of file A3PE_BitFlip.h.

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

◆ m_latencyMax

unsigned int A3PE_BitFlip::m_latencyMax
private

Definition at line 60 of file A3PE_BitFlip.h.

Referenced by execute(), and initialize().

◆ m_latencyMin

unsigned int A3PE_BitFlip::m_latencyMin
private

Definition at line 59 of file A3PE_BitFlip.h.

Referenced by execute(), and initialize().

◆ m_length

unsigned int A3PE_BitFlip::m_length
private

Definition at line 56 of file A3PE_BitFlip.h.

Referenced by execute(), and initialize().

◆ m_offset

int A3PE_BitFlip::m_offset
private

Definition at line 62 of file A3PE_BitFlip.h.

Referenced by execute(), and initialize().

◆ m_pga

A3PE* A3PE_BitFlip::m_pga
private

Definition at line 51 of file A3PE_BitFlip.h.

Referenced by a3pe(), execute(), finalize(), initialize(), and randomValues().

◆ m_toAX

RAM* A3PE_BitFlip::m_toAX
private

Definition at line 52 of file A3PE_BitFlip.h.

Referenced by initialize(), and randomValues().


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