Rivet  3.1.2
DISRapidityGap.hh
1 // -*- C++ -*-
2 #ifndef RIVET_DISRapidityGap_HH
3 #define RIVET_DISRapidityGap_HH
4 
5 #include "Rivet/Projections/DISKinematics.hh"
6 #include "Rivet/Projections/DISFinalState.hh"
7 #include "Rivet/Particle.hh"
8 #include "Rivet/Event.hh"
9 
10 namespace Rivet {
11 
12 
15  class DISRapidityGap : public Projection {
16 
17  public:
18 
20  enum Frame { HCM, LAB, XCM };
21 
22  DISRapidityGap() {
23  setName("DISRapidityGap");
24  declare(DISKinematics(), "DISKIN");
25  declare(DISFinalState(DISFinalState::BoostFrame::HCM), "DISFS");
26  }
27 
28  DEFAULT_RIVET_PROJ_CLONE(DISRapidityGap);
29 
30  const double M2X() const {return _M2X;}
31  const double M2Y() const {return _M2Y;}
32  const double t() const {return _t;}
33  const double gap() const {return _gap;}
34  const double gapUpp() const {return _gapUpp;}
35  const double gapLow() const {return _gapLow;}
36  const double EpPzX(Frame f) const {
37  if (f == LAB) return _ePpzX_LAB;
38  else if (f == XCM) return _ePpzX_XCM;
39  else return _ePpzX_HCM;
40  }
41  const double EmPzX(Frame f) const {
42  if (f == LAB) return _eMpzX_LAB;
43  else if (f == XCM) return _eMpzX_XCM;
44  else return _eMpzX_HCM;
45  }
46  const FourMomentum pX(Frame f) const {
47  if (f == LAB) return _momX_LAB;
48  else if (f == XCM) return _momX_XCM;
49  else return _momX_HCM;
50  }
51  const FourMomentum pY(Frame f) const {
52  if (f == LAB) return _momY_LAB;
53  else if (f == XCM) return _momY_XCM;
54  else return _momY_HCM;
55  }
56  const Particles& systemX(Frame f) const {
57  if (f == LAB) return _pX_LAB;
58  else if (f == XCM) return _pX_XCM;
59  else return _pX_HCM;
60  }
61  const Particles& systemY(Frame f) const {
62  if (f == LAB) return _pY_LAB;
63  else if (f == XCM) return _pY_XCM;
64  else return _pY_HCM;
65  }
66 
67  protected:
68 
69  virtual CmpState compare(const Projection& p) const;
70 
71  virtual void project(const Event& e);
72 
73  void clearAll();
74 
75  void findgap(const Particles& particles, const DISKinematics& diskin);
76 
77  private:
78 
79  double _M2X, _M2Y, _t;
80  double _gap, _gapUpp, _gapLow;
81  double _ePpzX_LAB, _eMpzX_LAB;
82  double _ePpzX_HCM, _eMpzX_HCM;
83  double _ePpzX_XCM, _eMpzX_XCM;
84  FourMomentum _momX_HCM, _momY_HCM;
85  FourMomentum _momX_LAB, _momY_LAB;
86  FourMomentum _momX_XCM, _momY_XCM;
87  Particles _pX_HCM, _pY_HCM, _pX_LAB, _pY_LAB, _pX_XCM, _pY_XCM;
88 
89  };
90 
91 }
92 
93 
94 #endif
void setName(const std::string &name)
Used by derived classes to set their name.
Definition: Projection.hh:142
Definition: MC_Cent_pPb.hh:10
virtual void project(const Event &e)
virtual CmpState compare(const Projection &p) const
Get the DIS kinematic variables and relevant boosts for an event.
Definition: DISKinematics.hh:15
Final state particles boosted to the hadronic center of mass system.
Definition: DISFinalState.hh:14
Representation of a HepMC event, and enabler of Projection caching.
Definition: Event.hh:22
Frame
Type of DIS boost to apply.
Definition: DISRapidityGap.hh:20
Get the incoming and outgoing hadron in a diffractive ep event.
Definition: DISRapidityGap.hh:15
const PROJ & declare(const PROJ &proj, const std::string &name)
Register a contained projection (user-facing version)
Definition: ProjectionApplier.hh:170
Base class for all Rivet projections.
Definition: Projection.hh:29
Specialized version of the FourVector with momentum/energy functionality.
Definition: Vector4.hh:301