Hall C ROOT/C++ Analyzer (hcana)
THcPrimaryKine.h
Go to the documentation of this file.
1 #ifndef ROOT_THcPrimaryKine
2 #define ROOT_THcPrimaryKine
3 
5 //
6 // THaPrimaryKine
7 //
9 
10 #include "THaPhysicsModule.h"
11 #include "TLorentzVector.h"
12 #include "TString.h"
13 
15 class THaBeamModule;
16 typedef TLorentzVector FourVect;
17 
18 class THcPrimaryKine : public THaPhysicsModule {
19 
20 public:
21  THcPrimaryKine( const char* name, const char* description,
22  const char* spectro = "",
23  Double_t particle_mass = 0.0, /* GeV */
24  Double_t target_mass = 0.0 /* GeV */ );
25  THcPrimaryKine( const char* name, const char* description,
26  const char* spectro, const char* beam,
27  Double_t target_mass = 0.0 /* GeV */ );
28  virtual ~THcPrimaryKine();
29 
30  virtual void Clear( Option_t* opt="" );
31 
32  Double_t GetQ2() const { return fQ2; }
33  Double_t GetOmega() const { return fOmega; }
34  Double_t GetNu() const { return fOmega; }
35  Double_t GetW2() const { return fW2; }
36  Double_t GetXbj() const { return fXbj; }
37  Double_t GetScatAngle() const { return fScatAngle; }
38  Double_t GetEpsilon() const { return fEpsilon; }
39  Double_t GetQ3mag() const { return fQ3mag; }
40  Double_t GetThetaQ() const { return fThetaQ; }
41  Double_t GetPhiQ() const { return fPhiQ; }
42  Double_t GetMass() const { return fM; }
43  Double_t GetTargetMass() const { return fMA; }
44 
45  const FourVect* GetP0() const { return &fP0; }
46  const FourVect* GetP1() const { return &fP1; }
47  const FourVect* GetA() const { return &fA; }
48  const FourVect* GetA1() const { return &fA1; }
49  const FourVect* GetQ() const { return &fQ; }
50 
51  virtual EStatus Init( const TDatime& run_time );
52  virtual Int_t Process( const THaEvData& );
53  virtual Int_t ReadDatabase(const TDatime& date);
54  void SetMass( Double_t m );
55  void SetTargetMass( Double_t m );
56  void SetSpectrometer( const char* name );
57  void SetBeam( const char* name );
58 
59 protected:
60 
61  Double_t fQ2; // 4-momentum transfer squared (GeV^2)
62  Double_t fOmega; // Energy transfer (GeV)
63  Double_t fW2; // s = Invariant mass using Mp (GeV^2)
64  Double_t fW; // sqrt(s) (GeV)
65  Double_t fXbj; // x Bjorken
66  Double_t fScatAngle; // Scattering angle (rad)
67  Double_t fScatAngle_deg; // Scattering angle (deg)
68  Double_t fEpsilon; // Virtual photon polarization factor
69  Double_t fQ3mag; // Magnitude of 3-momentum transfer
70  Double_t fThetaQ; // Theta of 3-momentum vector (rad)
71  Double_t fPhiQ; // Phi of 3-momentum transfer (rad)
72  FourVect fP0; // Beam 4-momentum
73  FourVect fP1; // Scattered electron 4-momentum
74  FourVect fA; // Target 4-momentum
75  FourVect fA1; // Recoil system 4-momentum
76  FourVect fQ; // Momentum transfer 4-vector
77  FourVect fMp; // Mp 4-momentum
78  FourVect fMp1; // Recoil Mp 4-momentum
79 
80  Double_t fM; // Mass of incident particle (GeV/c^2)
81  Double_t fMA; // Target mass (GeV/c^2)
82  Double_t fMA_amu; // Target mass (amu)
83  Double_t fOopCentralOffset; // Out plane offset of spectrometer
84 
85  virtual Int_t DefineVariables( EMode mode = kDefine );
86 
87  TString fSpectroName; // Name of spectrometer to consider
88  TString fBeamName; // Name of beam position apparatus
89  THcHallCSpectrometer* fSpectro; // Pointer to spectrometer object
90  THaBeamModule* fBeam; // Pointer to beam position apparatus
91 
92  ClassDef(THcPrimaryKine,0) //Single arm kinematics module
93 };
94 
95 #endif
void SetMass(Double_t m)
const FourVect * GetP0() const
Double_t GetOmega() const
Double_t GetMass() const
Double_t fScatAngle
const char Option_t
Double_t GetW2() const
Double_t fScatAngle_deg
THcPrimaryKine(const char *name, const char *description, const char *spectro="", Double_t particle_mass=0.0, Double_t target_mass=0.0)
int Int_t
virtual EStatus Init(const TDatime &run_time)
virtual ~THcPrimaryKine()
#define ClassDef(name, id)
const FourVect * GetA() const
void SetSpectrometer(const char *name)
virtual void Clear(Option_t *opt="")
Double_t GetEpsilon() const
Double_t GetQ3mag() const
virtual Int_t Process(const THaEvData &)
Double_t GetXbj() const
TLorentzVector FourVect
Double_t fEpsilon
virtual Int_t DefineVariables(EMode mode=kDefine)
Double_t fOopCentralOffset
THcHallCSpectrometer * fSpectro
double Double_t
void SetTargetMass(Double_t m)
Double_t GetQ2() const
Double_t GetPhiQ() const
TString fSpectroName
const FourVect * GetA1() const
Double_t GetTargetMass() const
Double_t GetThetaQ() const
Double_t GetNu() const
virtual Int_t ReadDatabase(const TDatime &date)
THaBeamModule * fBeam
void SetBeam(const char *name)
Class for the Calculate kinematics of scattering of the primary (beam) particle. These are usually th...
const FourVect * GetQ() const
const FourVect * GetP1() const
Double_t GetScatAngle() const
Double_t fThetaQ
char name[80]
Double_t fMA_amu
A standard Hall C spectrometer apparatus.