Newer
Older
#ifndef ROOT_THcSecondaryKine
#define ROOT_THcSecondaryKine
//////////////////////////////////////////////////////////////////////////
//
// THcSecondaryKine
//
//////////////////////////////////////////////////////////////////////////
#include "THaPhysicsModule.h"
#include "THcHallCSpectrometer.h"
#include "TLorentzVector.h"
#include "TString.h"
class THcPrimaryKine;
class THcHallCSpectrometer;
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
typedef TLorentzVector FourVect;
class THcSecondaryKine : public THaPhysicsModule {
public:
THcSecondaryKine( const char* name, const char* description,
const char* secondary_spectro = "",
const char* primary_kine = "",
Double_t secondary_mass = 0.0 /* GeV */ );
virtual ~THcSecondaryKine();
virtual void Clear( Option_t* opt="" );
Double_t GetTheta_xq() const { return fTheta_xq; }
Double_t GetPhi_xq() const { return fPhi_xq; }
Double_t GetTheta_bq() const { return fTheta_bq; }
Double_t GetPhi_bq() const { return fPhi_bq; }
Double_t GetXangle() const { return fXangle; }
Double_t GetPmiss() const { return fPmiss; }
Double_t GetPmiss_x() const { return fPmiss_x; }
Double_t GetPmiss_y() const { return fPmiss_y; }
Double_t GetPmiss_z() const { return fPmiss_z; }
Double_t GetEmiss() const { return fEmiss; }
Double_t GetMrecoil() const { return fMrecoil; }
Double_t GetErecoil() const { return fErecoil; }
Double_t GetPrecoil_x() const { return fB.X(); }
Double_t GetPrecoil_y() const { return fB.Y(); }
Double_t GetPrecoil_z() const { return fB.Z(); }
Double_t GetTX() const { return fTX; }
Double_t GetTB() const { return fTB; }
Double_t GetPX_cm() const { return fPX_cm; }
Double_t GetTheta_x_cm() const { return fTheta_x_cm; }
Double_t GetPhi_x_cm() const { return fPhi_x_cm; }
Double_t GetTheta_b_cm() const { return fTheta_b_cm; }
Double_t GetPhi_b_cm() const { return fPhi_b_cm; }
Double_t GetTX_cm() const { return fTX_cm; }
Double_t GetTB_cm() const { return fTB_cm; }
Double_t GetTtot_cm() const { return fTtot_cm; }
Double_t GetMandelS() const { return fMandelS; }
Double_t GetMandelT() const { return fMandelT; }
Double_t GetMandelU() const { return fMandelU; }
Double_t GetMX() const { return fMX; }
const TLorentzVector* GetPX() const { return &fX; }
const TLorentzVector* GetPB() const { return &fB; }
virtual EStatus Init( const TDatime& run_time );
virtual Int_t Process( const THaEvData& );
void SetSpectrometer( const char* name );
void SetPrimary( const char* name );
void SetMX( Double_t m );
THcPrimaryKine* GetPrimary() const { return fPrimary; }
protected:
// Event data
Double_t fTheta_xq; // Polar angle of detected particle with q (rad)
Double_t fPhi_xq; // Azimuth of detected particle with scattering plane (rad)
Double_t fTheta_bq; // Polar angle of recoil system with q (rad)
Double_t fPhi_bq; // Azimuth of recoil system with scattering plane (rad)
Double_t fXangle; // Angle of detected particle with scattered electron (rad)
Double_t fPmiss; // Missing momentum magnitude (GeV), nuclear physics definition (-pB)
Double_t fPmiss_x; // x-component of p_miss wrt q (GeV)
Double_t fPmiss_y; // y-component of p_miss wrt q (GeV)
Double_t fPmiss_z; // z-component of p_miss, along q (GeV)
Double_t fEmiss_nuc; // Missing energy (GeV), nuclear physics definition omega-Tx-Tb
Double_t fEmiss; // Missing energy (GeV), correct definition omega+Mt-Ex
Double_t fMrecoil; // Invariant mass of recoil system (GeV)
Double_t fErecoil; // Total energy of recoil system (GeV)
Double_t fTX; // Kinetic energy of detected particle (GeV)
Double_t fTB; // Kinetic energy of recoil system (GeV)
Double_t fPX_cm; // Magnitude of X momentum in CM system (GeV)
Double_t fTheta_x_cm; // Polar angle of X in CM system wrt q (rad)
Double_t fPhi_x_cm; // Azimuth of X in CM system wrt q (rad)
Double_t fTheta_b_cm; // Polar angle of recoil systm in CM wrt q (rad)
Double_t fPhi_b_cm; // Azimuth of recoil system in CM wrt q (rad)
Double_t fTX_cm; // Kinetic energy of X in CM (GeV)
Double_t fTB_cm; // Kinetic energy of B in CM (GeV)
Double_t fTtot_cm; // Total CM kinetic energy
Double_t fMandelS; // Mandelstam s for secondary vertex (GeV^2)
Double_t fMandelT; // Mandelstam t for secondary vertex (GeV^2)
Double_t fMandelU; // Mandelstam u for secondary vertex (GeV^2)
TLorentzVector fX; // Detected secondary particle 4-momentum (GeV)
TLorentzVector fB; // Recoil system 4-momentum (GeV)
// Parameters
Double_t fMX; // Mass of secondary particle (GeV)
Double_t fOopCentralOffset; //Offset of central out-of-plane angle (rad)
TString fSpectroName; // Name of spectrometer for secondary particle
THcHallCSpectrometer* fSpectro; // Pointer to spectrometer object
TString fPrimaryName; // Name of module for primary interaction kinematics
THcPrimaryKine* fPrimary; // Pointer to primary kinematics module
virtual Int_t DefineVariables( EMode mode = kDefine );
virtual Int_t ReadDatabase( const TDatime& date );
ClassDef(THcSecondaryKine,0) //Secondary particle kinematics module
};
#endif