1#ifndef __JASTRONOMY__JNUISANCE__
2#define __JASTRONOMY__JNUISANCE__
51 static constexpr double FACTOR = 1.0;
66 virtual std::istream&
read(std::istream& in) = 0;
75 virtual std::ostream&
write(std::ostream& out)
const = 0;
83 virtual double get()
const = 0;
95 return nuisance.
read(in);
108 return nuisance.
write(out);
117 public JClonable<JNuisance, JNuisanceFixed>
125 virtual std::istream&
read(std::istream& in)
override
137 virtual std::ostream&
write(std::ostream& out)
const override
148 double get()
const override
159 public JClonable<JNuisance, JNuisanceGauss>
167 virtual std::istream&
read(std::istream& in)
override
169 return in >> this->
sigma;
179 virtual std::ostream&
write(std::ostream& out)
const override
181 return out << this->
sigma;
190 double get()
const override
192 return gRandom->Gaus(FACTOR,
sigma);
204 public JClonable<JNuisance, JNuisanceTF1>
212 virtual std::istream&
read(std::istream& in)
override
216 if (buffer.ReadLine(in)) {
218 f1.reset(
new TF1(
"f1", buffer));
220 if (!
f1->IsValid()) {
235 virtual std::ostream&
write(std::ostream& out)
const override
238 return out <<
f1->GetExpFormula();
249 double get()
const override
251 return f1->GetRandom(gRandom);
255 std::shared_ptr<TF1>
f1;
263 public JClonable<JNuisance, JNuisanceTH1>
282 virtual std::istream&
read(std::istream&
in)
override
299 virtual std::ostream&
write(std::ostream& out)
const override
311 double get()
const override
313 return h1->GetRandom(gRandom);
328 if (
in == NULL || !
in->IsOpen()) {
339 mutable TFile*
in = NULL;
340 mutable TH1D*
h1 = NULL;
354 public std::map<std::string, nuisance_type>
381 const_iterator p = this->find(key);
383 if (p != this->end()) {
385 object.reset(p->second->clone());
387 object->setTitle(key);
430 out <<
object->getTitle() <<
' ' << *
object.get();
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Exception for opening of file.
Exception for parsing value.
Auxiliary class for title.
Exception for accessing a value in a collection that is outside of its range.
std::ostream & operator<<(std::ostream &out, const morphology_type &object)
Write morphology to output stream.
std::shared_ptr< JNuisance > nuisance_type
Type definition of generic nuisance.
static const JNuisanceHelper nuisance_helper
Helper object for nuisance I/O.
std::istream & operator>>(std::istream &in, morphology_type &object)
Read morphology from input stream.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Implementation of fixed nuisance.
double get() const override
Get value.
virtual std::istream & read(std::istream &in) override
Read nuisance from input stream.
virtual std::ostream & write(std::ostream &out) const override
Write nuisance to output stream.
Implementation of Gaussian nuisance.
virtual std::istream & read(std::istream &in) override
Read nuisance from input stream.
double get() const override
Get value.
virtual std::ostream & write(std::ostream &out) const override
Write nuisance to output stream.
Helper data structure for nuisance I/O.
JNuisanceHelper()
Default constructor.
std::istream & operator()(std::istream &in, nuisance_type &object) const
Parse nuisance from input stream.
Implementation of nuisance based on a formula.
double get() const override
Get value.
std::shared_ptr< TF1 > f1
virtual std::ostream & write(std::ostream &out) const override
Write nuisance to output stream.
virtual std::istream & read(std::istream &in) override
Read nuisance from input stream.
Implementation of nuisance based on histogram.
virtual std::istream & read(std::istream &in) override
Read nuisance from input stream.
virtual ~JNuisanceTH1()
Virtual destructor.
virtual std::ostream & write(std::ostream &out) const override
Write nuisance to output stream.
void load()
Load histogram from file.
double get() const override
Get value.
Interface for nuisance parameter.
friend std::istream & operator>>(std::istream &in, JNuisance &nuisance)
Read nuisance from input stream.
virtual double get() const =0
Get value.
virtual std::istream & read(std::istream &in)=0
Read nuisance from input stream.
virtual ~JNuisance()
Virtual destructor.
virtual std::ostream & write(std::ostream &out) const =0
Write nuisance to output stream.
friend std::ostream & operator<<(std::ostream &out, const JNuisance &nuisance)
Write nuisance to output stream.
static constexpr double FACTOR
Central value.
Template class for object cloning.