Hall C ROOT/C++ Analyzer (hcana)
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"
11 #include "THcHallCSpectrometer.h"
12 #include "TLorentzVector.h"
13 #include "TString.h"
14 
15 class THcPrimaryKine;
17 typedef TLorentzVector FourVect;
18 
19 class THcSecondaryKine : public THaPhysicsModule {
20 
21 public:
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; }
51  Double_t GetTheta_x_cm() const { return fTheta_x_cm; }
52  Double_t GetPhi_x_cm() const { return fPhi_x_cm; }
53  Double_t GetTheta_b_cm() const { return fTheta_b_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
THcHallCSpectrometer * fSpectro
void SetPrimary(const char *name)
Double_t GetPhi_x_cm() const
Double_t GetEmiss() const
Double_t GetPhi_bq() const
Double_t GetMrecoil() const
void SetMX(Double_t m)
Double_t GetMandelS() const
const char Option_t
Double_t GetPmiss_y() const
Double_t Z() const
TLorentzVector FourVect
THcSecondaryKine(const char *name, const char *description, const char *secondary_spectro="", const char *primary_kine="", Double_t secondary_mass=0.0)
Class for the Calculate kinematics of scattering of the secondary (hadron) particle.
Double_t GetPhi_xq() const
THcPrimaryKine * fPrimary
int Int_t
Double_t Y() const
Double_t X() const
Double_t GetPrecoil_y() const
THcPrimaryKine * GetPrimary() const
Double_t GetPhi_b_cm() const
Double_t GetMMK() const
#define ClassDef(name, id)
Double_t GetTheta_xq() const
TLorentzVector fX
Double_t GetPmiss_x() const
void SetSpectrometer(const char *name)
virtual Int_t Process(const THaEvData &)
Double_t GetTB_cm() const
Double_t GetPrecoil_z() const
Double_t GetMX() const
Double_t GetPX_cm() const
Double_t GetTX_cm() const
Double_t GetPrecoil_x() const
Double_t GetTX() const
virtual ~THcSecondaryKine()
const TLorentzVector * GetPB() const
Double_t fOopCentralOffset
TLorentzVector fB
Double_t GetPmiss_z() const
Double_t GetTheta_x_cm() const
Double_t GetErecoil() const
virtual void Clear(Option_t *opt="")
Double_t GetXangle() const
virtual Int_t ReadDatabase(const TDatime &date)
double Double_t
Double_t GetMandelU() const
Double_t GetPmiss() const
Double_t GetTB() const
virtual Int_t DefineVariables(EMode mode=kDefine)
Double_t GetTheta_bq() const
Double_t GetTheta_b_cm() const
virtual EStatus Init(const TDatime &run_time)
Double_t GetMandelT() const
Double_t GetTtot_cm() const
Class for the Calculate kinematics of scattering of the primary (beam) particle. These are usually th...
const TLorentzVector * GetPX() const
char name[80]
Double_t GetMMp() const
Double_t GetMMpi() const
A standard Hall C spectrometer apparatus.