Jpp  15.0.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
JDATABASE::JRunsetups Struct Reference

Auxiliary class for run setup evaluation. More...

#include <JRunsetups.hh>

Inheritance diagram for JDATABASE::JRunsetups:
std::map< int, float >

Public Types

enum  JRuntype_t {
  CALIB = 100, NANOCALIB = 200, TEST = 300, WRONG_TEST = 400,
  PHYS = 1000, OTHER = -1
}
 Main run setup category. More...
 

Public Member Functions

void put (const int run, const std::string setup)
 Put run parameters. More...
 
void put (const JRuns &parameters)
 Put run parameters. More...
 
bool has (const int run) const
 Check if run setup is vailable. More...
 
float get (const int run) const
 Get run setup value. More...
 

Static Public Member Functions

static int getType (const std::string &setup)
 Get run setup type. More...
 

Static Public Attributes

static const char SEPARATOR = '.'
 separator between tokens in setup name More...
 
static const int MAX_NUMBER_OF_SETUPS = 1000
 maximal number of setups for a main category More...
 

Protected Attributes

std::map< int, std::vector
< std::string > > 
data
 

Detailed Description

Auxiliary class for run setup evaluation.

The run number is mapped to a unique floating point value according the setup name.

Definition at line 26 of file JRunsetups.hh.

Member Enumeration Documentation

Main run setup category.

Enumerator
CALIB 

Calibration.

NANOCALIB 

Nano-beacon calibration.

TEST 

Test.

WRONG_TEST 

Wrong test.

PHYS 

Physics.

OTHER 

Other.

Definition at line 37 of file JRunsetups.hh.

37  {
38  CALIB = 100, //!< Calibration
39  NANOCALIB = 200, //!< Nano-beacon calibration
40  TEST = 300, //!< Test
41  WRONG_TEST = 400, //!< Wrong test
42  PHYS = 1000, //!< Physics
43  OTHER = -1 //!< Other
44  };
Nano-beacon calibration.
Definition: JRunsetups.hh:39

Member Function Documentation

static int JDATABASE::JRunsetups::getType ( const std::string &  setup)
inlinestatic

Get run setup type.

Parameters
setuprun setup name
Returns
type

Definition at line 53 of file JRunsetups.hh.

54  {
55  using namespace std;
56  using namespace JPP;
57 
58  static std::map<std::string, int> buffer;
59 
60  if (buffer.empty()) {
61 
62 #define MAKE_ENTRY(A) std::make_pair(getClassname(#A), A)
63 
64  buffer.insert(MAKE_ENTRY(CALIB));
65  buffer.insert(MAKE_ENTRY(NANOCALIB));
66  buffer.insert(MAKE_ENTRY(TEST));
67  buffer.insert(MAKE_ENTRY(WRONG_TEST));
68  buffer.insert(MAKE_ENTRY(PHYS));
69  buffer.insert(MAKE_ENTRY(OTHER));
70 
71 #undef MAKE_ENTRY
72  }
73 
74  string key = setup;
75 
76  string::size_type pos = key.find(SEPARATOR);
77 
78  if (pos != string::npos) {
79  key = key.substr(0,pos);
80  }
81 
82  std::map<std::string, int>::const_iterator i = buffer.find(key);
83 
84  if (i != buffer.end())
85  return i->second;
86  else
87  return OTHER;
88  }
#define MAKE_ENTRY(A)
static const char SEPARATOR
separator between tokens in setup name
Definition: JRunsetups.hh:30
Nano-beacon calibration.
Definition: JRunsetups.hh:39
void JDATABASE::JRunsetups::put ( const int  run,
const std::string  setup 
)
inline

Put run parameters.

Parameters
runrun number
setuprun setup name

Definition at line 97 of file JRunsetups.hh.

99  {
100  using namespace std;
101  using namespace JPP;
102 
103  const int type = getType(setup);
104  vector<string>& buffer = data[type];
105 
106  vector<string>::iterator p = std::find(buffer.begin(), buffer.end(), setup);
107 
108  if (p == buffer.end()) {
109 
110  buffer.push_back(setup);
111 
112  p = buffer.rbegin().base();
113  }
114 
115  const int index = distance(buffer.begin(),p) + 1;
116 
117  if (index >= MAX_NUMBER_OF_SETUPS) {
118  cerr << "Index of " << setup << ' ' << index << " >= " << MAX_NUMBER_OF_SETUPS << endl;
119  }
120 
121  if (type > 0)
122  (*this)[run] = type + (float) index / (float) MAX_NUMBER_OF_SETUPS;
123  else
124  (*this)[run] = type - (float) index / (float) MAX_NUMBER_OF_SETUPS;
125  }
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
static const int MAX_NUMBER_OF_SETUPS
maximal number of setups for a main category
Definition: JRunsetups.hh:31
static int getType(const std::string &setup)
Get run setup type.
Definition: JRunsetups.hh:53
std::map< int, std::vector< std::string > > data
Definition: JRunsetups.hh:168
void JDATABASE::JRunsetups::put ( const JRuns parameters)
inline

Put run parameters.

Parameters
parametersrun parameters

Definition at line 133 of file JRunsetups.hh.

134  {
135  put(parameters.RUN, parameters.RUNSETUPNAME);
136  }
std::string RUNSETUPNAME
Definition: JRuns.hh:27
void put(const int run, const std::string setup)
Put run parameters.
Definition: JRunsetups.hh:97
bool JDATABASE::JRunsetups::has ( const int  run) const
inline

Check if run setup is vailable.

Parameters
runrun number
Returns
true if available; else false

Definition at line 145 of file JRunsetups.hh.

146  {
147  return this->find(run) != this->end();
148  }
float JDATABASE::JRunsetups::get ( const int  run) const
inline

Get run setup value.

Parameters
runrun number
Returns
value

Definition at line 157 of file JRunsetups.hh.

158  {
159  const_iterator p = this->find(run);
160 
161  if (p != this->end())
162  return p->second;
163  else
164  return 0.0;
165  }

Member Data Documentation

const char JDATABASE::JRunsetups::SEPARATOR = '.'
static

separator between tokens in setup name

Definition at line 30 of file JRunsetups.hh.

const int JDATABASE::JRunsetups::MAX_NUMBER_OF_SETUPS = 1000
static

maximal number of setups for a main category

Definition at line 31 of file JRunsetups.hh.

std::map<int, std::vector<std::string> > JDATABASE::JRunsetups::data
mutableprotected

Definition at line 168 of file JRunsetups.hh.


The documentation for this struct was generated from the following file: