Jpp master_rocky-44-g75b7c4f75
the software that should make you happy
Loading...
Searching...
No Matches
JFIT::JEnergyCorrection Class Reference

Auxiliary class for correction of energy determined by JEnergy.cc. More...

#include <JEnergyCorrection.hh>

Inheritance diagram for JFIT::JEnergyCorrection:
JLANG::JSharedPointer< JClass_t, JMemory_t > JLANG::JSharedCounter JLANG::JStorage< JClass_t, JNew > JLANG::JPointer< JClass_t > JLANG::JNew< JClass_t > JLANG::JAbstractPointer< JClass_t > JLANG::JEquals< JAbstractPointer< JClass_t > >

Public Types

typedef JPointer< JClass_t > pointer_type
 
typedef JStorage< JClass_t, JMemory_t > storage_type
 
typedef JNew< JClass_t > memory_type
 

Public Member Functions

 JEnergyCorrection ()
 Default constructor.
 
 JEnergyCorrection (const std::string &formula)
 Constructor.
 
 JEnergyCorrection (const TFormula *fcn)
 Constructor.
 
TString getFormula () const
 Get formula.
 
void setFormula (const std::string &formula)
 Set formula.
 
double operator() (const double E) const
 Get corrected energy.
 
void load (const char *file_name)
 Load formula from file.
 
void store (const char *file_name)
 Store formula to file.
 
const JSharedPointergetSharedPointer () const
 Get shared pointer.
 
JSharedPointergetSharedPointer ()
 Get shared pointer.
 
void setSharedPointer (const JSharedPointer &object)
 Set shared pointer.
 
virtual void reset () override
 Reset pointer.
 
void reset (const JPointer< T > &pointer)
 Reset pointer.
 
void reset (JClass_t *p)
 Reset pointer.
 
template<class T >
void set (const JPointer< T > &pointer)
 Set pointer.
 
void initialise ()
 Initialise counter.
 
void attach (const JSharedCounter &object)
 Attach this counter to given shared counter object.
 
bool detach ()
 Detach.
 
const int getCount ()
 Get count.
 
void recreate ()
 Recreate object in memory.
 
void create ()
 Create object in memory.
 
void create (const unsigned int size)
 Create array of objects in memory.
 
virtual JClass_t * get () const override
 Get pointer.
 
JClass_t *const & getReference () const
 Get rereference to internal pointer.
 
JClass_t *& getReference ()
 Get rereference to internal pointer.
 
virtual bool equals (const JAbstractPointer &object) const
 Equals.
 
bool is_valid () const
 Check validity of pointer.
 
JClass_t * operator-> () const
 Smart pointer operator.
 
 operator JClass_t * () const
 Type conversion operator.
 

Static Public Member Functions

static const char * getName ()
 Get name of energy correction formula.
 
static void release (JClass_t *p)
 Release memory.
 

Protected Member Functions

void set (const JSharedPointer &object)
 Set pointer.
 
virtual void set (JClass_t *p) override
 Set pointer.
 
void release ()
 Release memory.
 

Protected Attributes

int * counter
 
JClass_t * __p
 pointer to object
 

Friends

std::istream & operator>> (std::istream &in, JEnergyCorrection &object)
 Read energy correction from input.
 
std::ostream & operator<< (std::ostream &out, const JEnergyCorrection &object)
 Write energy correction to output.
 

Detailed Description

Auxiliary class for correction of energy determined by JEnergy.cc.

Note that the correction is applied to 10log(E) with E in GeV.

Definition at line 39 of file JEnergyCorrection.hh.

Member Typedef Documentation

◆ pointer_type

template<class JClass_t , template< class > class JMemory_t = JNew>
JPointer<JClass_t> JLANG::JSharedPointer< JClass_t, JMemory_t >::pointer_type
inherited

Definition at line 34 of file JSharedPointer.hh.

◆ storage_type

template<class JClass_t , template< class > class JMemory_t = JNew>
JStorage<JClass_t, JMemory_t> JLANG::JSharedPointer< JClass_t, JMemory_t >::storage_type
inherited

Definition at line 35 of file JSharedPointer.hh.

◆ memory_type

JNew<JClass_t> JLANG::JStorage< JClass_t, JNew >::memory_type
inherited

Definition at line 33 of file JStorage.hh.

Constructor & Destructor Documentation

◆ JEnergyCorrection() [1/3]

JFIT::JEnergyCorrection::JEnergyCorrection ( )
inline

Default constructor.

No correction is applied to the energy.

Definition at line 47 of file JEnergyCorrection.hh.

48 {}

◆ JEnergyCorrection() [2/3]

JFIT::JEnergyCorrection::JEnergyCorrection ( const std::string & formula)
inline

Constructor.

Parameters
formulaformula

Definition at line 56 of file JEnergyCorrection.hh.

57 {
58 setFormula(formula);
59 }
void setFormula(const std::string &formula)
Set formula.

◆ JEnergyCorrection() [3/3]

JFIT::JEnergyCorrection::JEnergyCorrection ( const TFormula * fcn)
inline

Constructor.

Parameters
fcnpointer to ROOT formula

Definition at line 67 of file JEnergyCorrection.hh.

67 :
68 JSharedPointer<const TFormula>(fcn)
69 {}

Member Function Documentation

◆ getFormula()

TString JFIT::JEnergyCorrection::getFormula ( ) const
inline

Get formula.

Returns
formula

Definition at line 77 of file JEnergyCorrection.hh.

78 {
79 if (is_valid())
80 return get()->GetExpFormula();
81 else
82 return TString();
83 }
bool is_valid() const
Check validity of pointer.
virtual JClass_t * get() const override
Get pointer.
Definition JPointer.hh:64

◆ setFormula()

void JFIT::JEnergyCorrection::setFormula ( const std::string & formula)
inline

Set formula.

The input can be:

  • TFormula compatible expression;
  • name of ROOT file (extension .root);
  • name of ASCII file (extension .txt);
Parameters
formulaformula

Definition at line 96 of file JEnergyCorrection.hh.

97 {
98 if (formula != "") {
99
100 TString buffer(formula.c_str());
101
102 if (buffer.EndsWith(".root") ||
103 buffer.EndsWith(".txt")) {
104
105 load(buffer);
106
107 } else {
108
109 reset(new TFormula(JEnergyCorrection::getName(), buffer));
110 }
111 }
112 }
void load(const char *file_name)
Load formula from file.
static const char * getName()
Get name of energy correction formula.
virtual void reset() override
Reset pointer.

◆ operator()()

double JFIT::JEnergyCorrection::operator() ( const double E) const
inline

Get corrected energy.

Parameters
Eenergy [GeV]
Returns
corrected energy [GeV]

Definition at line 121 of file JEnergyCorrection.hh.

122 {
123 if (is_valid()) {
124
125 const double y = get()->Eval(log10(E));
126
127 return pow(10.0, y);
128 }
129
130 return E;
131 }
T pow(const T &x, const double y)
Power .
Definition JMath.hh:97

◆ getName()

static const char * JFIT::JEnergyCorrection::getName ( )
inlinestatic

Get name of energy correction formula.

Returns
name of formula

Definition at line 139 of file JEnergyCorrection.hh.

140 {
141 return "energy_correction";
142 }

◆ load()

void JFIT::JEnergyCorrection::load ( const char * file_name)
inline

Load formula from file.

Supported file formats:

  • ROOT file (extension .root) containing TFormula object with name JEnergyCorrection::getName();
  • ASCII file (extension .txt) containing TFormula compatible expression;

Note that the method JEEP::getFullFilename() is used to search for a possible location of a file with the given name in the LD_LIBRARY_PATH environment variable.

Parameters
file_namefile name

Definition at line 157 of file JEnergyCorrection.hh.

158 {
159 using namespace std;
160 using namespace JLANG;
161 using namespace JEEP;
162
163 TString buffer(getFullFilename(LD_LIBRARY_PATH, file_name).c_str());
164
165 if (buffer.EndsWith(".root")) {
166
167 TFile in(buffer, "READ");
168
169 if (in.IsOpen()) {
170
171 in.GetObject(JEnergyCorrection::getName(), getReference());
172
173 in.Close();
174
175 } else {
176
177 THROW(JFileOpenException, "Error opening file " << buffer);
178 }
179
180 } else if (buffer.EndsWith(".txt")) {
181
182 ifstream in(buffer);
183
184 if (in) {
185
186 buffer.ReadFile(in);
187
188 // remove control characters
189
190 for (Ssiz_t i = 0; i != buffer.Length(); ++i) {
191 if (iscntrl(buffer[i])) {
192 buffer[i] = ' ';
193 }
194 }
195
196 in.close();
197
198 reset(new TFormula(JEnergyCorrection::getName(), buffer));
199
200 } else {
201
202 THROW(JFileOpenException, "Error opening file " << buffer);
203 }
204
205 } else {
206
207 THROW(JProtocolException, "Protocol not defined.");
208 }
209 }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Exception for opening of file.
JClass_t *const & getReference() const
Get rereference to internal pointer.
Definition JPointer.hh:119
Protocol exception.
General puprpose classes and methods.
std::string getFullFilename(const std::string &variable, const std::string &file_name)
Get full file name (see JEEP::getPath).
Auxiliary classes and methods for language specific functionality.

◆ store()

void JFIT::JEnergyCorrection::store ( const char * file_name)
inline

Store formula to file.

Supported file formats:

  • ROOT file (extension .root) containing TFormula object with name JEnergyCorrection::getName;
  • ASCII file (extension .txt) containing TFormula compatible expression;
Parameters
file_namefile name

Definition at line 221 of file JEnergyCorrection.hh.

222 {
223 using namespace std;
224 using namespace JLANG;
225 using namespace JEEP;
226
227 if (is_valid()) {
228
229 const TString buffer(file_name);
230
231 if (buffer.EndsWith(".root")) {
232
233 TFile out(file_name, "RECREATE");
234
235 out.WriteObject(get(), JEnergyCorrection::getName());
236
237 out.Write();
238 out.Close();
239
240 } else if (buffer.EndsWith(".txt")) {
241
242 ofstream out(file_name);
243
244 out << *this;
245
246 out.close();
247
248 } else {
249
250 THROW(JProtocolException, "Protocol not defined.");
251 }
252 }
253 }

◆ getSharedPointer() [1/2]

template<class JClass_t , template< class > class JMemory_t = JNew>
const JSharedPointer & JLANG::JSharedPointer< JClass_t, JMemory_t >::getSharedPointer ( ) const
inlineinherited

Get shared pointer.

Returns
this shared pointer

Definition at line 95 of file JSharedPointer.hh.

96 {
97 return static_cast<const JSharedPointer&>(*this);
98 }
JSharedPointer()
Default constructor.

◆ getSharedPointer() [2/2]

template<class JClass_t , template< class > class JMemory_t = JNew>
JSharedPointer & JLANG::JSharedPointer< JClass_t, JMemory_t >::getSharedPointer ( )
inlineinherited

Get shared pointer.

Returns
this shared pointer

Definition at line 106 of file JSharedPointer.hh.

107 {
108 return static_cast<JSharedPointer&>(*this);
109 }

◆ setSharedPointer()

template<class JClass_t , template< class > class JMemory_t = JNew>
void JLANG::JSharedPointer< JClass_t, JMemory_t >::setSharedPointer ( const JSharedPointer< JClass_t, JMemory_t > & object)
inlineinherited

Set shared pointer.

Parameters
objectshared pointer

Definition at line 117 of file JSharedPointer.hh.

118 {
119 if (this->get() != object.get()) {
120
121 this->reset();
122
123 if (object.is_valid()) {
124 this->set(object);
125 }
126 }
127 }
void set(const JSharedPointer &object)
Set pointer.

◆ reset() [1/3]

template<class JClass_t , template< class > class JMemory_t = JNew>
virtual void JLANG::JSharedPointer< JClass_t, JMemory_t >::reset ( )
inlineoverridevirtualinherited

Reset pointer.

The reference counter is decremented by one and the object pointed to previously is deleted when its reference counter is zero.

Reimplemented from JLANG::JStorage< JClass_t, JNew >.

Definition at line 171 of file JSharedPointer.hh.

172 {
173 if (this->detach()) {
175 }
176
178 }
virtual void reset() override
Reset pointer.
Definition JPointer.hh:84
virtual void reset() override
Reset pointer.
Definition JStorage.hh:42

◆ reset() [2/3]

void JLANG::JPointer< JClass_t >::reset ( const JPointer< T > & pointer)
inlineinherited

Reset pointer.

Parameters
pointerpointer to object

Definition at line 35 of file JPointer.hh.

109 {
110 this->reset(pointer.get());
111 }

◆ reset() [3/3]

template<class JClass_t >
void JLANG::JAbstractPointer< JClass_t >::reset ( JClass_t * p)
inlineinherited

Reset pointer.

Parameters
ppointer to object

Definition at line 94 of file JAbstractPointer.hh.

95 {
96 if (this->get() != p) {
97
98 this->reset();
99
100 if (p != NULL) {
101 this->set(p);
102 }
103 }
104 }
virtual void set(JClass_t *p)=0
Set pointer.
virtual JClass_t * get() const =0
Get pointer.
virtual void reset()=0
Reset pointer.

◆ set() [1/3]

template<class JClass_t , template< class > class JMemory_t = JNew>
void JLANG::JSharedPointer< JClass_t, JMemory_t >::set ( const JSharedPointer< JClass_t, JMemory_t > & object)
inlineprotectedinherited

Set pointer.

The reference counter of the shared object pointed to is incremented by one.

Parameters
objectshared pointer

Definition at line 188 of file JSharedPointer.hh.

189 {
190 pointer_type::set(object.get());
191
192 this->attach(object);
193 }
virtual void set(JClass_t *p) override
Set pointer.
Definition JPointer.hh:75
void attach(const JSharedCounter &object)
Attach this counter to given shared counter object.

◆ set() [2/3]

template<class JClass_t , template< class > class JMemory_t = JNew>
virtual void JLANG::JSharedPointer< JClass_t, JMemory_t >::set ( JClass_t * p)
inlineoverrideprotectedvirtualinherited

Set pointer.

The reference counter of the shared object pointed to is initialised to one.

Parameters
ppointer to derived class object

Reimplemented from JLANG::JPointer< JClass_t >.

Definition at line 202 of file JSharedPointer.hh.

203 {
205
206 this->initialise();
207 }
void initialise()
Initialise counter.

◆ set() [3/3]

template<class JClass_t >
template<class T >
void JLANG::JPointer< JClass_t >::set ( const JPointer< T > & pointer)
inlineinherited

Set pointer.

Parameters
pointerpointer to object

Definition at line 96 of file JPointer.hh.

97 {
98 this->set(pointer.get());
99 }

◆ initialise()

void JLANG::JSharedCounter::initialise ( )
inlineinherited

Initialise counter.

Definition at line 33 of file JSharedCounter.hh.

34 {
35 detach();
36
37 counter = new int(1);
38 }

◆ attach()

void JLANG::JSharedCounter::attach ( const JSharedCounter & object)
inlineinherited

Attach this counter to given shared counter object.

Parameters
objectshared counter

Definition at line 46 of file JSharedCounter.hh.

47 {
48 detach();
49
50 counter = object.counter;
51
52 if (counter != NULL) {
53 ++(*counter);
54 }
55 }

◆ detach()

bool JLANG::JSharedCounter::detach ( )
inlineinherited

Detach.

Returns
true if counter at zero; else false

Definition at line 63 of file JSharedCounter.hh.

64 {
65 if (counter != NULL) {
66
67 if (--(*counter) == 0) {
68
69 delete counter;
70
71 counter = NULL;
72
73 return true;
74 }
75
76 counter = NULL;
77 }
78
79 return false;
80 }

◆ getCount()

const int JLANG::JSharedCounter::getCount ( )
inlineinherited

Get count.

Returns
count

Definition at line 88 of file JSharedCounter.hh.

89 {
90 return (counter != NULL ? *counter : 0);
91 }

◆ recreate()

void JLANG::JStorage< JClass_t, JNew >::recreate ( )
inlineinherited

Recreate object in memory.

A new object is created if no memory is allocated yet, else the previously created object is maintained.

Definition at line 57 of file JStorage.hh.

58 {
59 if (!this->is_valid()) {
60 this->set(memory_type::create());
61 }
62 }
static JClass_t * create()
Create object in memory.
Definition JMemory.hh:30

◆ create() [1/2]

void JLANG::JStorage< JClass_t, JNew >::create ( )
inlineinherited

Create object in memory.

The memory allocated by a previously created object will be released.

Definition at line 69 of file JStorage.hh.

70 {
72 }

◆ create() [2/2]

void JLANG::JStorage< JClass_t, JNew >::create ( const unsigned int size)
inlineinherited

Create array of objects in memory.

The memory allocated by previously created objects will be released.

Parameters
sizenumber of elements

Definition at line 81 of file JStorage.hh.

82 {
83 this->reset(memory_type::create(size));
84 }

◆ release() [1/2]

void JLANG::JStorage< JClass_t, JNew >::release ( )
inlineprotectedinherited

Release memory.

Definition at line 91 of file JStorage.hh.

92 {
93 memory_type::release(this->get());
94 }
static void release(JClass_t *p)
Release memory.
Definition JMemory.hh:41

◆ release() [2/2]

template<class JClass_t >
static void JLANG::JNew< JClass_t >::release ( JClass_t * p)
inlinestaticinherited

Release memory.

Parameters
ppointer to data

Definition at line 41 of file JMemory.hh.

42 {
43 delete p;
44 }

◆ get()

template<class JClass_t >
virtual JClass_t * JLANG::JPointer< JClass_t >::get ( ) const
inlineoverridevirtualinherited

◆ getReference() [1/2]

template<class JClass_t >
JClass_t *const & JLANG::JPointer< JClass_t >::getReference ( ) const
inlineinherited

Get rereference to internal pointer.

Returns
reference to internal pointer

Definition at line 119 of file JPointer.hh.

120 {
121 return __p;
122 }

◆ getReference() [2/2]

template<class JClass_t >
JClass_t *& JLANG::JPointer< JClass_t >::getReference ( )
inlineinherited

Get rereference to internal pointer.

Returns
reference to internal pointer

Definition at line 130 of file JPointer.hh.

131 {
132 return __p;
133 }

◆ equals()

template<class JClass_t >
virtual bool JLANG::JAbstractPointer< JClass_t >::equals ( const JAbstractPointer< JClass_t > & object) const
inlinevirtualinherited

Equals.

The equality is evaluated by comparison of the internal pointers.

Parameters
objectabstract pointer
Returns
true if equals; else false

Definition at line 50 of file JAbstractPointer.hh.

51 {
52 return this->get() == object.get();
53 }

◆ is_valid()

template<class JClass_t >
bool JLANG::JAbstractPointer< JClass_t >::is_valid ( ) const
inlineinherited

Check validity of pointer.

Returns
true if pointer not null; else false

Definition at line 83 of file JAbstractPointer.hh.

84 {
85 return this->get() != NULL;
86 }

◆ operator->()

template<class JClass_t >
JClass_t * JLANG::JAbstractPointer< JClass_t >::operator-> ( ) const
inlineinherited

Smart pointer operator.

Returns
pointer to object

Definition at line 112 of file JAbstractPointer.hh.

113 {
114 if (!is_valid())
115 THROW(JNullPointerException, "JAbstractPointer::operator->()");
116 else
117 return this->get();
118 }

◆ operator JClass_t *()

template<class JClass_t >
JLANG::JAbstractPointer< JClass_t >::operator JClass_t * ( ) const
inlineinherited

Type conversion operator.

Returns
pointer to object

Definition at line 126 of file JAbstractPointer.hh.

127 {
128 return this->get();
129 }

Friends And Related Symbol Documentation

◆ operator>>

std::istream & operator>> ( std::istream & in,
JEnergyCorrection & object )
friend

Read energy correction from input.

In case a file name is specified, the method load() is used to read the energy correction from the corresponding file.

Parameters
ininput stream
objectenergy correction
Returns
input stream

Definition at line 266 of file JEnergyCorrection.hh.

267 {
268 std::string buffer;
269
270 getline(in, buffer);
271
272 object.setFormula(buffer);
273
274 return in;
275 }
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line.
Definition JString.hh:478

◆ operator<<

std::ostream & operator<< ( std::ostream & out,
const JEnergyCorrection & object )
friend

Write energy correction to output.

Parameters
outoutput stream
objectenergy correction
Returns
output stream

Definition at line 285 of file JEnergyCorrection.hh.

286 {
287 return out << object.getFormula();
288 }

Member Data Documentation

◆ counter

int* JLANG::JSharedCounter::counter
protectedinherited

Definition at line 94 of file JSharedCounter.hh.

◆ __p

template<class JClass_t >
JClass_t* JLANG::JPointer< JClass_t >::__p
protectedinherited

pointer to object

Definition at line 136 of file JPointer.hh.


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