![]() |
|
|||
File indexing completed on 2025-04-19 09:06:48
0001 // -*- C++ -*- 0002 #ifndef RIVET_HepMCHeavyIon_HH 0003 #define RIVET_HepMCHeavyIon_HH 0004 0005 #include "Rivet/Projection.hh" 0006 #include "Rivet/Tools/RivetHepMC.hh" 0007 #include "Rivet/Event.hh" 0008 0009 namespace Rivet { 0010 0011 0012 class HepMCHeavyIon : public Projection { 0013 public: 0014 0015 /// @name Constructors etc. 0016 /// @{ 0017 0018 /// Constructor 0019 HepMCHeavyIon(); 0020 0021 /// Clone on the heap. 0022 RIVET_DEFAULT_PROJ_CLONE(HepMCHeavyIon); 0023 0024 /// @} 0025 0026 /// Import to avoid warnings about overload-hiding 0027 using Projection::operator =; 0028 0029 0030 protected: 0031 0032 /// Perform the projection on the Event 0033 void project(const Event& e); 0034 0035 /// Compare with other projections 0036 //int compare(const Projection& p) const; 0037 // Taken from Thrust.hh 0038 CmpState compare(const Projection&) const { 0039 return CmpState::EQ; 0040 } 0041 0042 public: 0043 0044 /// Check that there were at all any heavy ion info in HepMC 0045 bool ok() const { return _hi != nullptr; } 0046 0047 /// @brief the number of hard nucleon-nucleon collisions. 0048 /// 0049 /// Model-dependent. Usually the number of nucleon-nucleon 0050 /// collisions containing a special signal process. A negative 0051 /// value means that the information is not available. 0052 int Ncoll_hard() const; 0053 0054 /// @brief the number of participating nucleons in the projectile. 0055 /// 0056 /// The number of nucleons in the projectile participating in an 0057 /// inelastic collision (see Ncoll). A negative value means that 0058 /// the information is not available. 0059 int Npart_proj() const; 0060 0061 /// @brief the number of participating nucleons in the target. 0062 /// 0063 /// The number of nucleons in the target participating in an 0064 /// inelastic collision (see Ncoll). A negative value means that 0065 /// the information is not available. 0066 int Npart_targ() const; 0067 0068 /// @brief the number of inelastic nucleon-nucleon collisions. 0069 /// 0070 /// Note that a one participating nucleon can be involved in many 0071 /// inelastic collisions, and that inelastic also includes 0072 /// diffractive excitation. A negative value means that the 0073 /// information is not available. 0074 /// 0075 int Ncoll() const; 0076 /// @brief Collisions with a diffractively excited target nucleon. 0077 /// 0078 /// The number of single diffractive nucleon-nucleon collisions 0079 /// where the target nucleon is excited. A negative value means 0080 /// that the information is not available. 0081 int N_Nwounded_collisions() const; 0082 0083 /// @brief Collisions with a diffractively excited projectile nucleon. 0084 /// 0085 /// The number of single diffractive nucleon-nucleon collisions 0086 /// where the projectile nucleon is excited. A negative value 0087 /// means that the information is not available. 0088 int Nwounded_N_collisions() const; 0089 0090 /// @brief Non-diffractive or doubly diffractive collisions. 0091 /// 0092 /// The number of nucleon-nucleon collisions where both projectile 0093 /// and target nucleons are wounded. A negative value means that 0094 /// the information is not available. 0095 int Nwounded_Nwounded_collisions() const; 0096 0097 /// @brief The impact parameter. 0098 /// 0099 /// The impact parameter given in units of femtometer. A negative 0100 /// value means that the information is not available. 0101 double impact_parameter() const; 0102 0103 /// @brief The event plane angle. 0104 /// 0105 /// The angle wrt. the x-axix of the impact parameter vector 0106 /// (pointing frm the target to the projectile). A positive number 0107 /// between 0 and two pi. A negative value means that the 0108 /// information is not available. 0109 double event_plane_angle() const; 0110 /// @brief The assumed inelastic nucleon-nucleon cross section 0111 /// 0112 /// in units of millibarn. As used in a Glauber calculation to 0113 /// simulate the distribution in Ncoll. A negative value means 0114 /// that the information is not available. 0115 double sigma_inel_NN() const; 0116 0117 /// @brief The centrality. 0118 /// 0119 /// The generated centrality in percentiles, where 0 is the 0120 /// maximally central and 100 is the minimally central. A negative 0121 /// value means that the information is not available. 0122 double centrality() const; 0123 0124 /// @brief A user defined centrality estimator. 0125 /// 0126 /// This variable may contain anything a generator feels is 0127 /// reasonable for estimating centrality. The value should be 0128 /// non-negative, and a low value corresponds to a low 0129 /// centrality. A negative value indicatess that the information 0130 /// is not available. 0131 double user_cent_estimate() const; 0132 0133 /// @brief The number of spectator neutrons in the projectile 0134 /// 0135 /// ie. those that thave not participated in any inelastic 0136 /// nucleon-nucleon collision. A negative value indicatess that 0137 /// the information is not available. 0138 int Nspec_proj_n() const; 0139 0140 /// @brief The number of spectator neutrons in the target 0141 /// 0142 /// ie. those that thave not participated in any inelastic 0143 /// nucleon-nucleon collision. A negative value indicatess that 0144 /// the information is not available. 0145 int Nspec_targ_n() const; 0146 0147 /// @brief The number of spectator protons in the projectile 0148 /// 0149 /// ie. those that thave not participated in any inelastic 0150 /// nucleon-nucleon collision. A negative value indicatess that 0151 /// the information is not available. 0152 int Nspec_proj_p() const; 0153 0154 /// @brief The number of spectator protons in the target 0155 /// 0156 /// ie. those that thave not participated in any inelastic 0157 /// nucleon-nucleon collision. A negative value indicatess that 0158 /// the information is not available. 0159 int Nspec_targ_p() const; 0160 0161 /// @brief Participant plane angles 0162 /// 0163 /// calculated to different orders. The key of the map specifies 0164 /// the order, and the value gives to the angle wrt. the 0165 /// event plane. 0166 map<int,double> participant_plane_angles() const; 0167 0168 /// @brief Eccentricities 0169 /// 0170 /// Calculated to different orders. The key of the map specifies 0171 /// the order, and the value gives the corresponding eccentricity. 0172 map<int,double> eccentricities() const; 0173 0174 0175 protected: 0176 0177 /// A pointer to the actual heavy-ion object 0178 ConstGenHeavyIonPtr _hi; 0179 0180 }; 0181 } 0182 0183 0184 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |