Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-07-01 07:05:42

0001 /**
0002  \file
0003  Declaration of class erhic::EventGmcTrans.
0004  
0005  \author    Thomas Burton
0006  \date      2012-09-20
0007  \copyright 2012 Brookhaven National Lab
0008  */
0009 
0010 #ifndef INCLUDE_EICSMEAR_ERHIC_EVENTGMCTRANS_H_
0011 #define INCLUDE_EICSMEAR_ERHIC_EVENTGMCTRANS_H_
0012 
0013 #include <string>
0014 
0015 #include <TLorentzVector.h>
0016 
0017 #include "eicsmear/erhic/EventMC.h"
0018 
0019 namespace erhic {
0020 /**
0021  Describes an event from the gmc_trans Monte Carlo.
0022  */
0023 class EventGmcTrans : public EventMC {
0024  public:
0025   /**
0026    Constructor.
0027 
0028    Optionally initialise from a string. See Parse() for the string format.
0029    */
0030   explicit EventGmcTrans(const std::string& = "");
0031 
0032   /**
0033    Destructor.
0034    */
0035   virtual ~EventGmcTrans() { }
0036 
0037   /**
0038    Set the event properties from a string.
0039    The string format should be as follows:
0040    \verbatim
0041    quark, x, Q2, nu, y, W2, z, hadronPt, leptonTheta, leptonPhi, phiSpin,
0042    phiHadron, f1, g1, h1, D1, f1Tperp, f1Tperp1, f1Tperp12 H1perp, H1perp1,
0043    H1perp12, AUT_Siv, AUT_WtSiv, AUT_Siv_allq, AUT_WtSiv_allq,
0044    AUT_Siv_piDiff, AUT_WtSiv_piDiff, AUT_Col, AUT_WtCol, AUT_Col_allq,
0045    AUT_WtCol_allq, AUT_Tw3_Col, AUT_WtTw3_Col, X_UU, X_SIV, X_COL
0046    \endverbatim
0047    Returns true if the string is processed successfully, false if not.
0048    */
0049   virtual bool Parse(const std::string&);
0050 
0051   /**
0052    Azimuthal angle of spin vector in gamma*-proton centre of mass frame.
0053    */
0054   Double_t GetPhiSpin() const { return mPhiSpin; }
0055 
0056   /**
0057    Azimuthal angle of hadron in gamma*-proton centre of mass frame.
0058    */
0059   Double_t GetPhiHadron() const { return mPhiHadron; }
0060 
0061   /**
0062    \remark Not called z() to avoid hiding Event::z().
0063    */
0064   Double_t GetHadronZ() const { return mZ; }
0065 
0066   Double_t GetHadronPt() const { return mHadronPt; }
0067 
0068   Double_t GetF1() const { return mF1; }
0069 
0070   Double_t GetG1() const { return mG1; }
0071 
0072   Double_t GetH1() const { return mH1; }
0073 
0074   Double_t GetD1() const { return mD1; }
0075 
0076   Double_t GetF1TPerp() const { return mF1TPerp; }
0077 
0078   Double_t GetF1TPerp1() const { return mF1TPerp1; }
0079 
0080   Double_t GetH1Perp() const { return mH1Perp; }
0081 
0082   Double_t GetH1Perp1() const { return mH1Perp1; }
0083 
0084   Double_t GetH1Perp12() const { return mH1Perp12; }
0085 
0086   Double_t GetSivers() const { return mAutSivAllQ; }
0087 
0088   Double_t GetSiversWeight() const { return mAutWtSivAllQ; }
0089 
0090   Double_t GetSiversStruckQuark() const { return mAutSiv; }
0091 
0092   Double_t GetSiversStruckQuarkWeight() const { return mAutWtSiv; }
0093 
0094   Double_t GetSiversPiDifference() const { return mAutSivPiDiff; }
0095 
0096   Double_t GetSiversPiDifferenceWeight() const { return mAutWtSivPiDiff; }
0097 
0098   Double_t GetCollins() const { return mAutColAllQ; }
0099 
0100   Double_t GetCollinsWeight() const { return mAutWtColAllQ; }
0101 
0102   Double_t GetCollinsStruckQuark() const { return mAutCol; }
0103 
0104   Double_t GetCollinsStructQuarkWeight() const { return mAutWtCol; }
0105 
0106   Double_t GetCollinsTwist3() const { return mAutTw3Col; }
0107 
0108   Double_t GetCollinsTwist3Weight() const { return mAutWtTw3Col; }
0109 
0110   Double_t GetCrossSectionUnpolarised() const { return mXUnpolarised; }
0111 
0112   Double_t GetCrossSectionSivers() const { return mXSivers; }
0113 
0114   Double_t GetCrossSectionCollins() const { return mXCollins; }
0115 
0116   /**
0117    Returns the hadron beam spin vector in the current frame.
0118    If the spin vector in the rest frame of the hadron (of mass m)
0119    is n and the 4-momentum of the hadron in the current frame
0120    is p = (E,P), then the hadron spin 4-vector in the current frame
0121    is (Bjorken & Drell, 1965):
0122    \verbatim
0123    s = (s0, S)
0124    \endverbatim
0125    where
0126    \verbatim
0127    s0 = n.P / m
0128    S  = n + (E/m - 1)(P.n) P / |P|^2
0129    \endverbatim
0130    */
0131   TLorentzVector GetHadronPolarisation() const { return TLorentzVector(); }
0132 
0133   /**
0134    Azimuthal angle of the produced hadron around the spin direction
0135    in the proton rest frame, as defined by the HERMES experiment.
0136    phi_s = [(qxk.S)/|qxk.S|]arccos[(qxk.qxS)/(|qxk||qxS|)],
0137    0 <= arccos <= pi.
0138    Gives result in range [0,2pi].
0139    */
0140   virtual double GetHermesPhiS() const { return 0.; }
0141 
0142  protected:
0143   Int_t mStruckQuark;  ///< Flavour of struck quark
0144   Double32_t mQSquared;  ///< Negative squared four-momentum of
0145                          ///< the exchanged boson
0146   Double32_t mBjorkenX;  ///< Longitudinal momentum fraction in the
0147                          ///< infinite momentum frame
0148   Double32_t mInelasticity;  // or mY?
0149   Double32_t mWSquared;  ///< Invariant mass of the hadronic final state
0150   Double32_t mNu;  ///< Energy of the exchanged boson in the hadron rest frame
0151   Double32_t mS;  ///< Square of the centre of mass energy
0152   Double32_t mZ;  ///< z of the produced hadron
0153   Double32_t mHadronPt;  ///< pT of the produced hadron
0154   Double32_t mLeptonTheta;  ///< Polar angle of the scattered lepton
0155   Double32_t mLeptonPhi;  ///< Azimuthal angle of the scattered lepton
0156   Double32_t mPhiSpin;  ///< Azimuthal angle of spin vector in gamma*-proton
0157                         ///< centre-of-mass frame.
0158   Double32_t mPhiHadron;
0159   Double32_t mF1;
0160   Double32_t mG1;
0161   Double32_t mH1;
0162   Double32_t mD1;
0163   Double32_t mF1TPerp;
0164   Double32_t mF1TPerp1;
0165   Double32_t mF1TPerp12;
0166   Double32_t mH1Perp;
0167   Double32_t mH1Perp1;
0168   Double32_t mH1Perp12;
0169   Double32_t mAutSiv;
0170   Double32_t mAutWtSiv;
0171   Double32_t mAutSivAllQ;
0172   Double32_t mAutWtSivAllQ;
0173   Double32_t mAutSivPiDiff;
0174   Double32_t mAutWtSivPiDiff;
0175   Double32_t mAutCol;
0176   Double32_t mAutWtCol;
0177   Double32_t mAutTw3Col;
0178   Double32_t mAutWtTw3Col;
0179   Double32_t mAutColAllQ;
0180   Double32_t mAutWtColAllQ;
0181   Double32_t mXUnpolarised;
0182   Double32_t mXSivers;
0183   Double32_t mXCollins;  ///< Cross sections
0184 
0185   ClassDef(erhic::EventGmcTrans, 1)
0186 };
0187 
0188 }  // namespace erhic
0189 
0190 #endif  // INCLUDE_EICSMEAR_ERHIC_EVENTGMCTRANS_H_