Я работаю над проектом, состоящим из множества .cxx
файлов.Теперь я хочу отредактировать класс, добавив некоторые переменные и функции (которые прокомментированы ниже)
#ifndef TN_LORENTZCHARGEVECTOR_
#define TN_LORENTZCHARGEVECTOR_
#include<iostream>
#include <TLorentzVector.h>
#include "common/Helpers.h"
class LorentzChargeVector : public TLorentzVector
{
public:
inline LorentzChargeVector()
: TLorentzVector(),
_charge(0) {}
inline LorentzChargeVector(const TLorentzVector &vec,
float charge)
: TLorentzVector(vec),
_charge(charge) {}
inline LorentzChargeVector(const LorentzChargeVector &v)
: TLorentzVector(v),
_charge(v.Charge()) {}
inline float Charge() const { return _charge; }
inline void SetCharge(float charge) { _charge = charge; }
/*
inline float Trkd0() {std::cout << "fnction" << _trkd0 << std::endl;return _trkd0;}
inline void SetTrkd0(float trkd0) {std::cout << '\t' << trkd0 << std::endl; _trkd0 = trkd0;std::cout << '\t' << _trkd0 << std::endl;}
inline float Trkd0sig() {return _trkd0sig;}
inline void SetTrkd0sig(float trkd0sig) {_trkd0sig = trkd0sig;}
inline float Trkz0() {return _trkz0;}
inline void SetTrkz0(float trkz0) {_trkz0 = trkz0;}
inline float Trkz0sintheta() {return _trkz0sintheta;}
inline void SetTrkz0sintheta(float trkz0sintheta) {_trkz0sintheta = trkz0sintheta;}
*/
inline LorentzChargeVector &operator=(const LorentzChargeVector &q)
{
TLorentzVector::operator=(q);
_charge = q.Charge();
return *this;
}
inline LorentzChargeVector operator+(const LorentzChargeVector &q) const
{
return LorentzChargeVector(TLorentzVector::operator+(q), _charge + q.Charge());
}
inline LorentzChargeVector &operator+=(const LorentzChargeVector &q)
{
TLorentzVector::operator+=(q);
_charge += q.Charge();
return *this;
}
inline LorentzChargeVector operator-(const LorentzChargeVector &q) const
{
return LorentzChargeVector(TLorentzVector::operator-(q), _charge - q.Charge());
}
inline LorentzChargeVector &operator-=(const LorentzChargeVector &q)
{
TLorentzVector::operator-=(q);
_charge -= q.Charge();
return *this;
}
inline LorentzChargeVector operator-() const
{
return LorentzChargeVector(TLorentzVector::operator-(), -_charge);
}
inline Bool_t operator==(const LorentzChargeVector &q) const
{
return (Vect() == q.Vect() && T() == q.T() && Charge() == q.Charge());
}
inline Bool_t operator!=(const LorentzChargeVector &q) const
{
return (Vect() != q.Vect() || T() != q.T() || Charge() != q.Charge());
}
// Print
inline void Print(Option_t *option="") const override
{
UNUSED(option)
Printf("(x,y,z,t)=(%f,%f,%f,%f) (P,eta,phi,E)=(%f,%f,%f,%f) charge=%f",
X(), Y(), Z(), E(),
P(), Eta(), Phi(), E(), _charge);
}
private:
float _charge;
// float _trkd0;
// float _trkd0sig;
// float _trkz0;
// float _trkz0sintheta;
ClassDefOverride(LorentzChargeVector, 1);
};
#endif // TN_LORENTZCHARGEVECTOR_
Мои проблемы здесь связаны с функциями, которые возвращают значения.Функции, которые устанавливают значение (SetTrkd0
ecc.), Работают нормально.Вместо этого функции, которые возвращают значение (Trkd0
, Trkd0sig
ecc.), Дают мне произвольное значение.
Я думаю, что ошибка связана с конструкторами , которыене редактируется для новых переменных.