Newer
Older
#ifndef ROOT_THcPrimaryKine
#define ROOT_THcPrimaryKine
//////////////////////////////////////////////////////////////////////////
//
// THaPrimaryKine
//
//////////////////////////////////////////////////////////////////////////
#include "THaPhysicsModule.h"
#include "TLorentzVector.h"
#include "TString.h"
class THcHallCSpectrometer;
15
16
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
class THaBeamModule;
typedef TLorentzVector FourVect;
class THcPrimaryKine : public THaPhysicsModule {
public:
THcPrimaryKine( const char* name, const char* description,
const char* spectro = "",
Double_t particle_mass = 0.0, /* GeV */
Double_t target_mass = 0.0 /* GeV */ );
THcPrimaryKine( const char* name, const char* description,
const char* spectro, const char* beam,
Double_t target_mass = 0.0 /* GeV */ );
virtual ~THcPrimaryKine();
virtual void Clear( Option_t* opt="" );
Double_t GetQ2() const { return fQ2; }
Double_t GetOmega() const { return fOmega; }
Double_t GetNu() const { return fOmega; }
Double_t GetW2() const { return fW2; }
Double_t GetXbj() const { return fXbj; }
Double_t GetScatAngle() const { return fScatAngle; }
Double_t GetEpsilon() const { return fEpsilon; }
Double_t GetQ3mag() const { return fQ3mag; }
Double_t GetThetaQ() const { return fThetaQ; }
Double_t GetPhiQ() const { return fPhiQ; }
Double_t GetMass() const { return fM; }
Double_t GetTargetMass() const { return fMA; }
const FourVect* GetP0() const { return &fP0; }
const FourVect* GetP1() const { return &fP1; }
const FourVect* GetA() const { return &fA; }
const FourVect* GetA1() const { return &fA1; }
const FourVect* GetQ() const { return &fQ; }
virtual EStatus Init( const TDatime& run_time );
virtual Int_t Process( const THaEvData& );
virtual Int_t ReadDatabase(const TDatime& date);
void SetMass( Double_t m );
void SetTargetMass( Double_t m );
void SetSpectrometer( const char* name );
void SetBeam( const char* name );
protected:
Double_t fQ2; // 4-momentum transfer squared (GeV^2)
Double_t fOmega; // Energy transfer (GeV)
Double_t fW2; // s = Invariant mass using Mp (GeV^2)
Double_t fW; // sqrt(s) (GeV)
Double_t fXbj; // x Bjorken
Double_t fScatAngle; // Scattering angle (rad)
Double_t fScatAngle_deg; // Scattering angle (deg)
Double_t fEpsilon; // Virtual photon polarization factor
Double_t fQ3mag; // Magnitude of 3-momentum transfer
Double_t fThetaQ; // Theta of 3-momentum vector (rad)
Double_t fPhiQ; // Phi of 3-momentum transfer (rad)
FourVect fP0; // Beam 4-momentum
FourVect fP1; // Scattered electron 4-momentum
FourVect fA; // Target 4-momentum
FourVect fA1; // Recoil system 4-momentum
FourVect fQ; // Momentum transfer 4-vector
FourVect fMp; // Mp 4-momentum
FourVect fMp1; // Recoil Mp 4-momentum
Double_t fM; // Mass of incident particle (GeV/c^2)
Double_t fMA; // Target mass (GeV/c^2)
Double_t fMA_amu; // Target mass (amu)
Double_t fOopCentralOffset; // Out plane offset of spectrometer
virtual Int_t DefineVariables( EMode mode = kDefine );
TString fSpectroName; // Name of spectrometer to consider
TString fBeamName; // Name of beam position apparatus
THcHallCSpectrometer* fSpectro; // Pointer to spectrometer object
THaBeamModule* fBeam; // Pointer to beam position apparatus
ClassDef(THcPrimaryKine,0) //Single arm kinematics module
};
#endif