10 #ifndef INCLUDE_EICSMEAR_SMEAR_SMEAR_H_
11 #define INCLUDE_EICSMEAR_SMEAR_SMEAR_H_
21 #include <TLorentzVector.h>
44 kE, kP, kTheta, kPhi, kPz, kPt, kInvalidKinType
49 kAll = 0, kElectromagnetic = 1, kHadronic = 2
54 kNeutral, kCharged, kAllCharges
70 const int id = abs(prt.
Id());
72 if (
id == 11 ||
id == 22) {
73 genre = kElectromagnetic;
85 inline double FixTheta(
double theta) {
86 while (theta < 0. || theta > TMath::Pi()) {
90 if (theta > TMath::Pi()) {
91 theta = TMath::TwoPi() - theta;
101 inline double FixPhi(
double phi) {
102 return TVector2::Phi_0_2pi(phi);
112 z = prt.
GetE();
break;
114 z = prt.
GetP();
break;
120 z = prt.
GetPz();
break;
122 z = prt.
GetPt();
break;
132 inline void SetVariable(ParticleMCS &prt,
double z, KinType kin) {
139 prt.SetTheta(z);
break;
141 prt.SetPhi(z);
break;
155 inline void HandleBogusValues(ParticleMCS &prt, KinType kin) {
157 if (kE == kin && prt.GetE() < 0.) {
159 }
else if (kP == kin && prt.GetP() < 0.) {
161 }
else if (kPt == kin && prt.GetPt() < 0.) {
163 }
else if (kPz == kin && prt.GetPz() < 0.) {
168 inline void HandleBogusValues(ParticleMCS& prt) {
170 if (prt.GetE() < 0.) {
173 if (prt.GetP() < 0.) {
176 if (prt.GetPt() < 0.) {
179 if (prt.GetPz() < 0.) {
184 inline bool IsCoreType(KinType kin) {
185 if (kin == kE || kin == kP || kin == kTheta || kin == kPhi)
return true;
189 int ParseInputFunction(TString &s, KinType &kin1, KinType &kin2);
193 #endif // INCLUDE_EICSMEAR_SMEAR_SMEAR_H_
virtual Double_t GetPhi() const =0
virtual Double_t GetP() const =0
virtual Double_t GetE() const =0
virtual UShort_t GetStatus() const =0
virtual Double_t GetPz() const =0
virtual Double_t GetPt() const =0
virtual Pid Id() const =0
virtual Double_t GetTheta() const =0
Abstract base class for a general particle.