1#ifndef __JASTRONOMY__JRESOLUTION__
2#define __JASTRONOMY__JRESOLUTION__
68 virtual std::istream&
read(std::istream& in) = 0;
77 virtual std::ostream&
write(std::ostream& out)
const = 0;
94 public JClonable<JResolution, JResolutionGauss>
102 virtual std::istream&
read(std::istream& in)
override
114 virtual std::ostream&
write(std::ostream& out)
const override
134 const double phi = gRandom->Uniform(-PI, +PI);
154 public JClonable<JResolution, JResolutionTF1>
162 virtual std::istream&
read(std::istream& in)
override
166 if (buffer.ReadLine(in)) {
168 f1.reset(
new TF1(
"f1", buffer));
170 if (!
f1->IsValid()) {
185 virtual std::ostream&
write(std::ostream& out)
const override
188 return out <<
f1->GetExpFormula();
207 const double theta =
getRadians(
f1->GetRandom(gRandom));
208 const double phi = gRandom->Uniform(-PI, +PI);
219 std::shared_ptr<TF1>
f1;
228 public JClonable<JResolution, JResolutionTH1>
247 virtual std::istream&
read(std::istream&
in)
override
264 virtual std::ostream&
write(std::ostream& out)
const override
284 const double theta =
getRadians(
h1->GetRandom(gRandom));
285 const double phi = gRandom->Uniform(-PI, +PI);
307 if (
in == NULL || !
in->IsOpen()) {
318 mutable TFile*
in = NULL;
319 mutable TH1D*
h1 = NULL;
343 const double theta =
getRadians(pow(10.0,
h1->GetRandom(gRandom)));
344 const double phi = gRandom->Uniform(-PI, +PI);
366 public std::map<std::string, resolution_type>
393 const_iterator p = this->find(key);
395 if (p != this->end()) {
397 object.reset(p->second->clone());
399 object->setTitle(key);
442 out <<
object->getTitle() <<
' ';
Interface methods for SLALIB and auxiliary classes and methods for astronomy.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Data structure for angles in three dimensions.
Data structure for direction in three dimensions.
JDirection3D & rotate_back(const JRotation3D &R)
Rotate back.
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.
static const JResolutionHelper resolution_helper
Helper object for resolution I/O.
std::shared_ptr< JResolution > resolution_type
Type definition of generic resolution.
double getRadians(const double angle)
Convert angle to radians.
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 Gaussian detector resolution.
virtual std::istream & read(std::istream &in) override
Read detector resolution from input stream.
JDirection3D get() const override
Get direction.
virtual std::ostream & write(std::ostream &out) const override
Write detector resolution to output stream.
Helper data structure for detector resolution I/O.
JResolutionHelper()
Default constructor.
std::istream & operator()(std::istream &in, resolution_type &object) const
Parse detector resolution from input stream.
Implementation of detector resolution based on histogram filled according log10(alpha).
JDirection3D get() const override
Get direction.
Implementation of detector resolution based on a formula.
virtual std::istream & read(std::istream &in) override
Read detector resolution from input stream.
JDirection3D get() const override
Get direction.
std::shared_ptr< TF1 > f1
virtual std::ostream & write(std::ostream &out) const override
Write detector resolution to output stream.
Implementation of detector resolution based on histogram.
virtual std::istream & read(std::istream &in) override
Read detector resolution from input stream.
virtual ~JResolutionTH1()
Virtual destructor.
void load()
Load histogram from file.
JDirection3D get() const override
Get direction.
virtual std::ostream & write(std::ostream &out) const override
Write detector resolution to output stream.
Interface for detector resolution simulation.
virtual JDirection3D get() const =0
Get direction.
virtual ~JResolution()
Virtual destructor.
virtual std::istream & read(std::istream &in)=0
Read detector resolution from input stream.
virtual std::ostream & write(std::ostream &out) const =0
Write detector resolution to output stream.
Template class for object cloning.