Hall C ROOT/C++ Analyzer (hcana)
Loading...
Searching...
No Matches
THcSecondaryKine.h
Go to the documentation of this file.
1#ifndef ROOT_THcSecondaryKine
2#define ROOT_THcSecondaryKine
3
5//
6// THcSecondaryKine
7//
9
10#include "THaPhysicsModule.h"
12#include "TLorentzVector.h"
13#include "TString.h"
14
15class THcPrimaryKine;
18
20
21public:
22 THcSecondaryKine( const char* name, const char* description,
23 const char* secondary_spectro = "",
24 const char* primary_kine = "",
25 Double_t secondary_mass = 0.0 /* GeV */ );
26 virtual ~THcSecondaryKine();
27
28 virtual void Clear( Option_t* opt="" );
29
30 Double_t GetTheta_xq() const { return fTheta_xq; }
31 Double_t GetPhi_xq() const { return fPhi_xq; }
32 Double_t GetTheta_bq() const { return fTheta_bq; }
33 Double_t GetPhi_bq() const { return fPhi_bq; }
34 Double_t GetXangle() const { return fXangle; }
35 Double_t GetPmiss() const { return fPmiss; }
36 Double_t GetPmiss_x() const { return fPmiss_x; }
37 Double_t GetPmiss_y() const { return fPmiss_y; }
38 Double_t GetPmiss_z() const { return fPmiss_z; }
39 Double_t GetEmiss() const { return fEmiss; }
40 Double_t GetMrecoil() const { return fMrecoil; }
41 Double_t GetMMpi() const { return fMMpi; }
42 Double_t GetMMK() const { return fMMK; }
43 Double_t GetMMp() const { return fMMp; }
44 Double_t GetErecoil() const { return fErecoil; }
45 Double_t GetPrecoil_x() const { return fB.X(); }
46 Double_t GetPrecoil_y() const { return fB.Y(); }
47 Double_t GetPrecoil_z() const { return fB.Z(); }
48 Double_t GetTX() const { return fTX; }
49 Double_t GetTB() const { return fTB; }
50 Double_t GetPX_cm() const { return fPX_cm; }
52 Double_t GetPhi_x_cm() const { return fPhi_x_cm; }
54 Double_t GetPhi_b_cm() const { return fPhi_b_cm; }
55 Double_t GetTX_cm() const { return fTX_cm; }
56 Double_t GetTB_cm() const { return fTB_cm; }
57 Double_t GetTtot_cm() const { return fTtot_cm; }
58 Double_t GetMandelS() const { return fMandelS; }
59 Double_t GetMandelT() const { return fMandelT; }
60 Double_t GetMandelU() const { return fMandelU; }
61
62 Double_t GetMX() const { return fMX; }
63
64 const TLorentzVector* GetPX() const { return &fX; }
65 const TLorentzVector* GetPB() const { return &fB; }
66
67 virtual EStatus Init( const TDatime& run_time );
68 virtual Int_t Process( const THaEvData& );
69
70 void SetSpectrometer( const char* name );
71 void SetPrimary( const char* name );
72 void SetMX( Double_t m );
73
74 THcPrimaryKine* GetPrimary() const { return fPrimary; }
75
76 protected:
77
78 // Event data
79 Double_t fTheta_xq; // Polar angle of detected particle with q (rad)
80 Double_t fPhi_xq; // Azimuth of detected particle with scattering plane (rad)
81 Double_t fTheta_bq; // Polar angle of recoil system with q (rad)
82 Double_t fPhi_bq; // Azimuth of recoil system with scattering plane (rad)
83 Double_t fXangle; // Angle of detected particle with scattered electron (rad)
84 Double_t fPmiss; // Missing momentum magnitude (GeV), nuclear physics definition (-pB)
85 Double_t fPmiss_x; // x-component of p_miss wrt q (GeV)
86 Double_t fPmiss_y; // y-component of p_miss wrt q (GeV)
87 Double_t fPmiss_z; // z-component of p_miss, along q (GeV)
88 Double_t fEmiss_nuc; // Missing energy (GeV), nuclear physics definition omega-Tx-Tb
89 Double_t fEmiss; // Missing energy (GeV), correct definition omega+Mt-Ex
90 Double_t fMrecoil; // Invariant mass of recoil system (GeV)
91 Double_t fMMpi; // Missing mass under asssumption hadron is a pion
92 Double_t fMMK; // Missing mass under asssumption hadron is a kaon
93 Double_t fMMp; // Missing mass under asssumption hadron is a proton
94 Double_t fErecoil; // Total energy of recoil system (GeV)
95 Double_t fTX; // Kinetic energy of detected particle (GeV)
96 Double_t fTB; // Kinetic energy of recoil system (GeV)
97 Double_t fPX_cm; // Magnitude of X momentum in CM system (GeV)
98 Double_t fTheta_x_cm; // Polar angle of X in CM system wrt q (rad)
99 Double_t fPhi_x_cm; // Azimuth of X in CM system wrt q (rad)
100 Double_t fTheta_b_cm; // Polar angle of recoil systm in CM wrt q (rad)
101 Double_t fPhi_b_cm; // Azimuth of recoil system in CM wrt q (rad)
102 Double_t fTX_cm; // Kinetic energy of X in CM (GeV)
103 Double_t fTB_cm; // Kinetic energy of B in CM (GeV)
104 Double_t fTtot_cm; // Total CM kinetic energy
105 Double_t fMandelS; // Mandelstam s for secondary vertex (GeV^2)
106 Double_t fMandelT; // Mandelstam t for secondary vertex (GeV^2)
107 Double_t fMandelU; // Mandelstam u for secondary vertex (GeV^2)
108
109 TLorentzVector fX; // Detected secondary particle 4-momentum (GeV)
110 TLorentzVector fB; // Recoil system 4-momentum (GeV)
111
112 // Parameters
113 Double_t fMX; // Mass of secondary particle (GeV)
114 Double_t fOopCentralOffset; //Offset of central out-of-plane angle (rad)
115
116 Double_t fMass_pi;// Charged pion mass (GeV)
117 Double_t fMass_K; // Charged kaon mass (GeV)
118 Double_t fMass_p; // Charged proton mass (GeV)
119
120 TString fSpectroName; // Name of spectrometer for secondary particle
121 THcHallCSpectrometer* fSpectro; // Pointer to spectrometer object
122 TString fPrimaryName; // Name of module for primary interaction kinematics
123 THcPrimaryKine* fPrimary; // Pointer to primary kinematics module
124
125 virtual Int_t DefineVariables( EMode mode = kDefine );
126 virtual Int_t ReadDatabase( const TDatime& date );
127
128 ClassDef(THcSecondaryKine,0) //Secondary particle kinematics module
129};
130
131#endif
int Int_t
double Double_t
const char Option_t
#define ClassDef(name, id)
TLorentzVector FourVect
A standard Hall C spectrometer apparatus.
Class for the Calculate kinematics of scattering of the primary (beam) particle. These are usually th...
Class for the Calculate kinematics of scattering of the secondary (hadron) particle.
const TLorentzVector * GetPX() const
THcPrimaryKine * fPrimary
Double_t GetPmiss_z() const
Double_t GetTheta_x_cm() const
Double_t GetTheta_b_cm() const
Double_t GetEmiss() const
Double_t GetTheta_bq() const
virtual void Clear(Option_t *opt="")
Double_t GetErecoil() const
Double_t GetPrecoil_x() const
Double_t GetMandelT() const
virtual Int_t DefineVariables(EMode mode=kDefine)
Double_t GetTB() const
Double_t GetTheta_xq() const
TLorentzVector fB
Double_t GetPmiss_y() const
Double_t GetTX_cm() const
Double_t GetXangle() const
Double_t GetMMpi() const
Double_t GetPhi_bq() const
Double_t GetMandelU() const
const TLorentzVector * GetPB() const
Double_t GetMX() const
Double_t GetMrecoil() const
Double_t GetPmiss() const
TLorentzVector fX
Double_t GetTX() const
Double_t GetMandelS() const
Double_t GetPhi_xq() const
virtual Int_t Process(const THaEvData &)
Double_t GetMMK() const
THcSecondaryKine(const char *name, const char *description, const char *secondary_spectro="", const char *primary_kine="", Double_t secondary_mass=0.0)
Double_t GetPhi_b_cm() const
Double_t GetPrecoil_z() const
Double_t GetTtot_cm() const
Double_t GetPX_cm() const
THcHallCSpectrometer * fSpectro
virtual Int_t ReadDatabase(const TDatime &date)
void SetPrimary(const char *name)
Double_t GetPmiss_x() const
Double_t GetTB_cm() const
Double_t GetPhi_x_cm() const
void SetMX(Double_t m)
Double_t GetPrecoil_y() const
THcPrimaryKine * GetPrimary() const
Double_t GetMMp() const
void SetSpectrometer(const char *name)
Double_t Y() const
Double_t X() const
Double_t Z() const