12 #include "THaRunBase.h"
13 #include "THaRunParameters.h"
28 const
char* spectro,
Double_t particle_mass,
30 THaPhysicsModule(name,description), fM(particle_mass),
31 fMA(target_mass), fSpectroName(spectro), fSpectro(NULL), fBeam(NULL)
40 const char* spectro,
const char* beam,
42 : THaPhysicsModule(name,description), fM(-1.0), fMA(target_mass),
43 fSpectroName(spectro), fBeamName(beam), fSpectro(NULL), fBeam(NULL)
64 THaPhysicsModule::Clear(opt);
78 if( mode == kDefine && fIsSetup )
return kOK;
79 fIsSetup = ( mode == kDefine );
82 {
"Q2",
"4-momentum transfer squared (GeV^2)",
"fQ2" },
83 {
"omega",
"Energy transfer (GeV)",
"fOmega" },
84 {
"W2",
"Invariant mass (GeV^2) for Mp ",
"fW2" },
85 {
"W",
"Sqrt(Invariant mass) for Mp ",
"fW" },
86 {
"x_bj",
"Bjorken x",
"fXbj" },
87 {
"scat_ang_rad",
"Scattering angle (rad)",
"fScatAngle" },
88 {
"scat_ang_deg",
"Scattering angle (deg)",
"fScatAngle_deg" },
89 {
"epsilon",
"Virtual photon polarization factor",
"fEpsilon" },
90 {
"q3m",
"Magnitude of 3-momentum transfer",
"fQ3mag" },
91 {
"th_q",
"Theta of 3-momentum vector (rad)",
"fThetaQ" },
92 {
"ph_q",
"Phi of 3-momentum vector (rad)",
"fPhiQ" },
93 {
"nu",
"Energy transfer (GeV)",
"fOmega" },
94 {
"q_x",
"x-cmp of Photon vector in the lab",
"fQ.X()" },
95 {
"q_y",
"y-cmp of Photon vector in the lab",
"fQ.Y()" },
96 {
"q_z",
"z-cmp of Photon vector in the lab",
"fQ.Z()" },
99 return DefineVarsFromList( vars, mode );
112 fStatus = kInitError;
118 fBeam =
dynamic_cast<THaBeamModule*
>
121 fStatus = kInitError;
125 fM =
fBeam->GetBeamInfo()->GetM();
129 if( THaPhysicsModule::Init( run_time ) != kOK )
133 Error( Here(
"Init"),
"Particle mass not defined. Module "
134 "initialization failed" );
135 fStatus = kInitError;
144 if( !IsOK() || !gHaRun )
return -1;
146 THaTrackInfo* trkifo =
fSpectro->GetTrackInfo();
147 if( !trkifo || !trkifo->IsOK() )
return 1;
154 fSpectro->TransportToLab(trkifo->GetP(), xptar, trkifo->GetPhi(), pvect);
160 Double_t p_in = gHaRun->GetParameters()->GetBeamP();
199 cout <<
"In THcPrimaryKine::ReadDatabase()" << endl;
204 prefix[0] = tolower(
GetName()[0]);
209 {
"gtargmass_amu", &
fMA_amu, kDouble, 0, 1},
225 PrintInitError(
"SetMass()");
234 PrintInitError(
"SetTargetMass()");
243 PrintInitError(
"SetSpectrometer()");
252 PrintInitError(
"SetBeam()");
std::string GetName(const std::string &scope_name)
THcPrimaryKine(const char *name, const char *description, const char *spectro="", Double_t particle_mass=0.0, Double_t target_mass=0.0)
virtual EStatus Init(const TDatime &run_time)
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
const char * Data() const
virtual ~THcPrimaryKine()
void SetSpectrometer(const char *name)
virtual void Clear(Option_t *opt="")
virtual Int_t Process(const THaEvData &)
void Error(const char *location, const char *msgfmt,...)
Double_t Angle(const TVector3 &v) const
void SetXYZT(Double_t x, Double_t y, Double_t z, Double_t t)
char * Form(const char *fmt,...)
virtual Int_t DefineVariables(EMode mode=kDefine)
Double_t fOopCentralOffset
THcHallCSpectrometer * fSpectro
Int_t LoadParmValues(const DBRequest *list, const char *prefix="")
Retrieve parameter values from the parameter cache.
void SetTargetMass(Double_t m)
void SetXYZM(Double_t x, Double_t y, Double_t z, Double_t m)
constexpr Double_t RadToDeg()
ClassImp(THcPrimaryKine) THcPrimaryKine
virtual Int_t ReadDatabase(const TDatime &date)
void SetBeam(const char *name)
R__EXTERN class THcParmList * gHcParms
void SetVectM(const TVector3 &spatial, Double_t mass)
Class for the Calculate kinematics of scattering of the primary (beam) particle. These are usually th...
Double_t Sqrt(Double_t x)
A standard Hall C spectrometer apparatus.