1#ifndef __JAANET__JHEAD__
2#define __JAANET__JHEAD__
94 inline std::string
getTag(
const std::string& tag)
100 if (pos != string::npos) {
102 for (string::size_type i = pos + 1; i != tag.size(); ++i) {
103 if (!isdigit(tag[i])) {
108 return tag.substr(0, pos);
122 inline std::string
getTag(
const std::string& tag,
const int counter)
124 std::ostringstream os;
168 return !(*this).less(
object) && !(object).
less(*
this);
181 istringstream i0(
this ->
buffer);
182 istringstream i1(
object.
buffer);
187 copy(istream_iterator<string>(i0), istream_iterator<string>(), back_inserter(v0));
188 copy(istream_iterator<string>(i1), istream_iterator<string>(), back_inserter(v1));
202 return std::getline(in,
object.
buffer);
214 return out <<
object.buffer;
242 return this->
program ==
object.program && this->
filename ==
object.filename;
256 in >>
object.program >>
object.filename;
258 if (!in || is_integer(
object.
filename)) {
259 object.filename =
object.program;
260 object.program =
"?";
275 return out <<
object.program <<
' ' <<
object.filename;
331 static const std::string
statical() {
return "statical"; }
332 static const std::string
dynamical() {
return "dynamical"; }
372 const double cosTmin,
373 const double cosTmax) :
375 cosT(cosTmin, cosTmax)
415 return (
E .equals(
object.
E) &&
488 return program <
object.program;
501 return program ==
object.program;
552 return alpha <
object.alpha;
669 return volume <
object.volume;
707 const double z = 0.0)
712 volume *= factor * factor * factor;
761 return (
x ==
object.
x &&
926 return type <
object.type;
937 return type ==
object.type;
968 return (
z ==
object.
z);
996 return (
z ==
object.
z);
1161 return (this->
t1 ==
object.
t1 && this->
t2 ==
object.
t2);
1190 return type <
object.type;
1254 copy(header, *
this);
1272 return static_cast<const JHead&
>(*this);
1283 return static_cast<JHead&
>(*this);
1294 static_cast<JHead&
>(*this) = header;
1321 return (this->
pull(pd) != this->end());
1336 static const T value;
1338 return (
object.
less(value) || value.less(
object));
1398 if (p != this->end()) {
1412#define IF_MATCH(A, B, C, D) \
1413 if (match(B,C,D)) { A.push(D); } \
1414 else { A.erase(D); }
1416 JHead buffer(*
this);
1488#define RETURN_IF_DIFFERENT(A, B) \
1489 if (less(A,B)) { return true; } \
1490 if (less(B,A)) { return false; }
1522#undef RETURN_IF_DIFFERENT
1534 if (
match(header)) {
1564 const JHead& second)
1566 return first.
match(second);
1578 const JHead& second)
1580 return first.
less(second);
1623 static JHead header;
1667 std::istream&
read(std::istream& in);
1676 std::ostream&
write(std::ostream& out)
const;
1685 std::ostream&
print(std::ostream& out)
const;
1699 static inline bool less(
const T& first,
1702 return first.less(second);
1714 static inline bool match(
const T& first,
1717 return first.match(second);
1733 if (first.size() == second.size()) {
1735 for (
size_t i = 0; i != first.size(); ++i) {
1736 if (
less(first[i], second[i])) {
1745 return first.size() < second.size();
1762 for (
size_t i = 0; i != first.size() && i != second.size(); ++i) {
1763 if (!
match(first[i], second[i])) {
1768 return first.size() == second.size();
1782 const JHead& second,
1787 match(first.*pd, second.*pd));
1834 return header.
read(in);
1847 return header.
write(out);
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
std::ostream & operator<<(std::ostream &out, const JAANET::JHead &header)
Write header to output.
#define RETURN_IF_DIFFERENT(A, B)
std::istream & operator>>(std::istream &in, JAANET::JHead &header)
Read header from input.
#define IF_MATCH(A, B, C, D)
Auxiliary class to define a range between two values.
JAANET::spectrum spectrum
std::vector< JAANET::simul > simul
JAANET::seabottom seabottom
std::istream & read(std::istream &in)
Read header from input.
JHead(const Head &header)
Copy constructor.
JHead & add(const JHead &header)
Addition of headers.
virtual ~JHead()
Virtual destructor.
JAANET::start_run start_run
JAANET::coord_origin coord_origin
friend bool operator<(const JHead &first, const JHead &second)
Less than operator.
static bool is_valid(const T &object)
Check validity of given data member in JHead.
JAANET::livetime livetime
std::ostream & write(std::ostream &out) const
Write header to output.
JHead()
Default constructor.
static bool match(const JHead &first, const JHead &second, T JHead::*pd)
Test match of given data member of headers.
void push(T JHead::*pd)
Push given data member to Head.
void createUUID()
Create UUID if not already set.
static bool less(const T &first, const T &second)
Comparison.
const JHead & getHeader() const
Get header.
bool less(const JHead &header) const
Comparison of headers.
const_iterator pull(T JHead::*pd) const
Pull given data member from Head.
static bool less(const std::vector< T > &first, const std::vector< T > &second)
Comparison of containers.
static bool match(const T &first, const T &second)
Test match.
static void setEquationParameters(const JLANG::JEquationParameters &equation)
Set equation parameters.
JHead & getHeader()
Get header.
JAANET::genhencut genhencut
std::vector< JAANET::flux > flux
void push()
Push all data members to Head.
std::vector< JAANET::detector > detector
JAANET::cut_seamuon cut_seamuon
JAANET::fixedcan fixedcan
JAANET::XSecFile XSecFile
JHead getMatch(const JHead &header) const
Get matching fields.
std::ostream & print(std::ostream &out) const
Print header to output.
void setHeader(const JHead &header)
Set header.
friend bool operator==(const JHead &first, const JHead &second)
Equal operator.
iterator pull(T JHead::*pd)
Pull given data member from Head.
JAANET::calibration calibration
static const size_t getMaximumNumberOfMatches()
Get maximum number of matching header fields.
JAANET::end_event end_event
JAANET::time_interval time_interval
bool is_valid(T JHead::*pd) const
Check validity of given data member in JHead.
size_t getNumberOfMatches(const JHead &header) const
Get number of matching fields.
static bool match(const std::vector< T > &first, const std::vector< T > &second)
Test is containers match.
std::vector< JAANET::physics > physics
void erase(T JHead::*pd)
Reset and remove given data member from Head.
JAANET::cut_primary cut_primary
static JLANG::JEquationParameters & getEquationParameters()
Get equation parameters corresponding to Monte Carlo ASCII format, i.e:
bool match(const JHead &header) const
Test match of headers.
JAANET::muon_desc_file muon_desc_file
Simple data structure to support I/O of equations (see class JLANG::JEquation).
Extensions to Evt data format.
bool operator==(const Head &first, const Head &second)
Equal operator.
static const char AANET_TAG_SEPARATOR
Separator for tag extension of multiple tags in Head ("_<counter>").
void copy(const Head &from, JHead &to)
Copy header from from to to.
bool operator<(const Head &first, const Head &second)
Less than operator.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
const TDataMember * getDataMember(const JRootClass &parent, const JRootClass &member)
Get ROOT data member for given parent and member class.
The Head class reflects the header of Monte-Carlo event files, which consists of keys (also referred ...
double livetime_s
Live time [s].
DAQ & add(const DAQ &object)
Addition.
DAQ()
Default constructor.
bool less(const DAQ &object) const
Comparison.
bool match(const DAQ &object) const
Test match.
Type definition of range.
JRange_t(double x, double y)
Constructor.
JRange_t()
Default constructor.
bool less(const K40 &object) const
Comparison.
K40 & add(const K40 &object)
Addition.
double livetime_s
Live time [s].
K40()
Default constructor.
bool match(const K40 &object) const
Test match.
General purpose string class.
bool match(const String &object) const
Test match.
std::string buffer
General purpose name.
friend std::istream & operator>>(std::istream &in, String &object)
Read string from input stream.
friend std::ostream & operator<<(std::ostream &out, const String &object)
Write string to output stream.
bool less(const String &object) const
Comparison.
String()
Default constructor.
Neutrino cross section file.
ClassDefNV(calibration, 1)
static const std::string dynamical()
static const std::string statical()
The cylinder used for photon tracking.
bool match(const can &object) const
Test match.
can()
Default constructor.
coord_origin()
Default constructor.
coord_origin(const double x, const double y, const double z)
Constructor.
bool match(const coord_origin &object) const
Test match.
ClassDefNV(coord_origin, 1)
Phase space of incoming particle.
Phase space of incident neutrino.
Phase space of primary particle.
ClassDefNV(cut_primary, 1)
Phase space of atmospheric muon generation.
ClassDefNV(cut_seamuon, 1)
General purpose class of phase space generation.
cut(const double Emin, const double Emax, const double cosTmin, const double cosTmax)
Constructor.
JRange_t cosT
Cosine zenith angle range
bool less(const cut &object) const
Comparison.
cut()
Default constructor.
cut(const JRange_t &_E, const JRange_t &_cosT)
Constructor.
bool match(const cut &object) const
Test match.
JRange_t E
Energy range [GeV].
depth()
Default constructor.
bool match(const depth &object) const
Test match.
detector()
Default constructor.
friend std::istream & operator>>(std::istream &in, detector &object)
Read detector from input stream.
friend std::ostream & operator<<(std::ostream &out, const detector &object)
Write detector to output stream.
bool match(const detector &object) const
Test match.
end_event()
Default constructor.
The fixed cylinder used for photon tracking.
bool match(const fixedcan &object) const
Test match.
double ycenter
y-center [m]
double xcenter
x-center [m]
fixedcan()
Default constructor.
bool less(const flux &object) const
Comparison.
flux()
Default constructor.
std::string file_2
File name.
std::string file_1
File name.
bool match(const flux &object) const
Test match.
Description of Monte Carlo event generation applications.
bool less(const generator &object) const
Comparison.
std::string time
processing time
std::string date
processing date
bool match(const generator &object) const
Test match.
std::string program
program name
generator()
Default constructor.
std::string version
program version
Phase space for incident neutrino.
genhencut()
Default constructor.
double Emin
Minimal energy [GeV].
double numberOfEvents
Number of events.
genvol()
Default constructor.
genvol & add(const genvol &object)
Addition.
genvol & mul(const double factor, const double z=0.0)
Scale.
bool less(const genvol &object) const
Comparison.
double volume
Volume [m^3].
bool match(const genvol &object) const
Test match.
Normalisation of MUPAGE events.
bool less(const livetime &object) const
Comparison.
livetime()
Default constructor.
double numberOfSeconds
Live time [s].
double errorOfSeconds
Uncertainty on live time [s].
livetime & mul(const double factor)
Scale.
livetime & add(const livetime &object)
Addition.
bool match(const livetime &object) const
Test match.
ClassDefNV(muon_desc_file, 1)
Normlisation of CORSIKA events.
double numberOfPrimaries
Number of primaries.
double primaryFlux
Primary flux.
norma & add(const norma &object)
Addition.
norma()
Default constructor.
bool match(const norma &object) const
Test match.
bool match(const primary &object) const
Test match.
bool less(const primary &object) const
Comparison.
primary()
Default constructor.
bool match(const seabottom &object) const
Test match.
seabottom()
Default constructor.
Generator for simulation.
Neutrino energy spectrum.
spectrum()
Default constructor.
bool less(const spectrum &object) const
Comparison.
bool match(const spectrum &object) const
Test match.
double alpha
Energy spectrum: .
start_run()
Default constructor.
Time duration of event generation.
tgen()
Default constructor.
bool match(const tgen &object) const
Test match.
double numberOfSeconds
Time in seconds.
UTC time interval for event generation.
time_interval()
Default constructor.
bool match(const time_interval &object) const
Test match.
ClassDefNV(time_interval, 1)
double t1
Start time in seconds.
double t2
Stop time in seconds.
static const JUUID & rndm()
Generate random UUID.
The Vec class is a straightforward 3-d vector, which also works in pyroot.