13 #ifndef Pythia8_HIInfo_H 14 #define Pythia8_HIInfo_H 16 #include "Pythia8/Pythia.h" 17 #include "Pythia8/HIBasics.h" 18 #include "Pythia8/HISubCollisionModel.h" 38 double b()
const {
return bSave; }
41 double phi()
const {
return phiSave; }
44 double T() {
return TSave; }
48 double avNDb()
const {
return avNDbSave; }
60 int nCollND()
const {
return nCollSave[1]; }
71 int nCollDD()
const {
return nCollSave[4]; }
74 int nCollCD()
const {
return nCollSave[5]; }
77 int nCollEl()
const {
return nCollSave[6]; }
89 int nElProj()
const {
return nProjSave[3]; }
104 double weight()
const {
return weightSave; }
128 return sqrt(sigErr2TotSave/max(1.0,
double(NSave)))*
FMSQ2MB;
139 return sqrt(sigErr2NDSave/max(1.0,
double(NSave)))*
FMSQ2MB;
150 return sqrt(sigErr2INELSave/max(1.0,
double(NSave)))*
FMSQ2MB;
161 return sqrt(sigErr2ELSave/max(1.0,
double(NSave)))*
FMSQ2MB;
173 return sqrt(sigErr2DiffTSave/max(1.0,
double(NSave)))*
FMSQ2MB;
185 return sqrt(sigErr2DiffPSave/max(1.0,
double(NSave)))*
FMSQ2MB;
197 return sqrt(sigErr2DDiffSave/max(1.0,
double(NSave)))*
FMSQ2MB;
202 return slopeSave/(sigmaTotSave*
pow2(
HBARC));
207 return sqrt((slopeErrSave/
pow2(slopeSave) +
208 sigErr2TotSave/
pow2(sigmaTotSave))/max(1.0,
double(NSave)))*
217 void addAttempt(
double T,
double bin,
double phiin,
218 double bweight,
double xSecScale);
221 void reweight(
double w) {
226 void select(
Info & in) {
238 void glauberStatistics();
241 static void runAvg(
double & sig,
double & sigErr2,
double N,
243 double delta = w - sig;
245 sigErr2 += (delta*(w - sig) - sigErr2)/N;
249 int idProjSave = 0, idTargSave = 0;
253 double phiSave = 0.0;
256 long NSave = 0, NAccSave = 0;
259 double sigmaTotSave = {}, sigmaNDSave = {},
260 sigmaELSave = {}, sigmaINELSave = {},
261 sigmaDiffPSave = {}, sigmaDiffTSave = {}, sigmaDDiffSave = {},
263 double sigErr2TotSave = {}, sigErr2NDSave = {},
264 sigErr2ELSave = {}, sigErr2INELSave = {},
265 sigErr2DiffPSave = {}, sigErr2DiffTSave = {}, sigErr2DDiffSave = {},
267 double avNDbSave = {};
268 double weightSave = {}, weightSumSave = {}, xSecScaleSave = {};
272 vector<int> nCollSave{}, nProjSave{}, nTargSave{};
276 map<int,double> sumPrimW{}, sumPrimW2{};
277 map<int,int> NPrim{};
278 map<int,string> NamePrim{};
295 subCollisionsPtrSave = subCollisionsPtrIn; }
321 virtual void init(
int idProjIn,
int idTargIn) {
322 idProjSave = idProjIn;
323 idTargSave = idTargIn;
328 virtual shared_ptr<ImpactParameterGenerator> impactParameterGenerator()
329 const {
return nullptr; }
333 virtual shared_ptr<NucleusModel> projectileModel()
const {
return nullptr; }
334 virtual bool hasTargetModel()
const {
return false; }
335 virtual shared_ptr<NucleusModel> targetModel()
const {
return nullptr; }
340 virtual shared_ptr<SubCollisionModel> subCollisionModel() {
return nullptr; }
344 virtual double eventOrdering(
const Event &,
const Info &) {
return -1; }
349 virtual bool fixIsoSpin(
EventInfo &) {
return false; }
363 virtual bool forceHadronLevel(
Pythia &) {
return false; }
370 findRecoilers(
const Event &,
bool ,
int ,
int ,
371 const Vec4 & ,
const Vec4 & )
const {
372 return vector<int>();
double glauberTot() const
The total cross section from the Glauber calculation.
Definition: HIInfo.h:121
int nCollSDP() const
Definition: HIInfo.h:64
constexpr double pow2(const double &x)
Powers of small integers - for balance speed/code clarity.
Definition: PythiaStdlib.h:182
virtual void init(int idProjIn, int idTargIn)
Initialize this user hook.
Definition: HIInfo.h:321
bool canAddNucleonExcitation() const
Definition: HIInfo.h:357
virtual bool canFindRecoilers() const
Definition: HIInfo.h:368
long nAttempts() const
The number of attempted impact parameter points.
Definition: HIInfo.h:51
double weight() const
The weight for this collision.
Definition: HIInfo.h:104
int nElProj() const
The number of elastically scattered target nucleons in the event.
Definition: HIInfo.h:89
bool failed
Whether the subcollision failed, i.e. has a failed excitation.
Definition: HISubCollisionModel.h:80
int nFail() const
The number of failed nucleon excitations in the current event.
Definition: HIInfo.h:110
virtual bool canShiftEvent() const
A user-supplied method for shifting the event in impact parameter space.
Definition: HIInfo.h:352
int nCollND() const
The number of non-diffractive sub-collisions in the event.
Definition: HIInfo.h:60
double glauberDiffTErr() const
Definition: HIInfo.h:172
The Event class holds all info on the generated event.
Definition: Event.h:408
double glauberBSlopeErr() const
The error on the elastic slope parameter.
Definition: HIInfo.h:206
double glauberND() const
The non-diffractive cross section from the Glauber calculation.
Definition: HIInfo.h:132
double b() const
The impact-parameter distance in the current event.
Definition: HIInfo.h:38
int nCollCD() const
The number of central diffractive sub-collisions in the event.
Definition: HIInfo.h:74
int nElTarg() const
The number of elastically scattered target nucleons in the event.
Definition: HIInfo.h:101
double glauberINELErr() const
Definition: HIInfo.h:149
int nPartTarg() const
The total number of interacting target nucleons in the event.
Definition: HIInfo.h:92
double T()
The summed elastic amplitude.
Definition: HIInfo.h:44
virtual ~HIUserHooks()
Virtual destructor.
Definition: HIInfo.h:318
double glauberDiffP() const
Definition: HIInfo.h:178
The SubCollisionSet gives a set of subcollisions between two nuclei.
Definition: HISubCollisionModel.h:88
double weightSum() const
The sum of weights of the produced events.
Definition: HIInfo.h:107
virtual bool hasSubCollisionModel()
Definition: HIInfo.h:339
virtual bool hasImpactParameterGenerator() const
A user-supplied impact parameter generator.
Definition: HIInfo.h:327
constexpr double HBARC
Define conversion hbar * c = 0.2 GeV * fm = 1 and related.
Definition: PythiaStdlib.h:154
const SubCollisionSet * subCollisionsPtr()
Access to subcollision to be extracted by the user.
Definition: HIInfo.h:289
double glauberDiffT() const
Definition: HIInfo.h:166
int nPartProj() const
The total number of interacting projectile nucleons in the event.
Definition: HIInfo.h:80
HIInfo * hiInfo
Definition: Info.h:113
double glauberEL() const
The elastic cross section from the Glauber calculation.
Definition: HIInfo.h:154
int nCollEl() const
The number of elastic sub-collisions in the event.
Definition: HIInfo.h:77
double glauberDDiffErr() const
Definition: HIInfo.h:196
double glauberBSlope() const
The elastic slope parameter.
Definition: HIInfo.h:201
double glauberDiffPErr() const
Definition: HIInfo.h:184
int nCollDD() const
The number of double diffractive sub-collisions in the event.
Definition: HIInfo.h:71
Definition: HISubCollisionModel.h:30
double glauberINEL() const
The total inelastic cross section from the Glauber calculation.
Definition: HIInfo.h:143
virtual bool hasProjectileModel() const
A user-supplied NucleusModel for the projectile and target.
Definition: HIInfo.h:332
void failedExcitation(const SubCollision &subColl)
Register a failed nucleon excitation.
Definition: HIInfo.h:115
HIUserHooks()
The default constructor is empty.
Definition: HIInfo.h:315
double glauberNDErr() const
Definition: HIInfo.h:138
Class for storing Events and Info objects.
Definition: HIBasics.h:25
int idProjSave
Definition: HIInfo.h:379
int nAbsTarg() const
The number of absorptively wounded target nucleons in the event.
Definition: HIInfo.h:95
int nAbsProj() const
The number of absorptively wounded projectile nucleons in the event.
Definition: HIInfo.h:83
HIInfo()=default
Constructor.
constexpr double FMSQ2MB
Define conversion between fm^2 and mb, in both directions.
Definition: PythiaStdlib.h:178
virtual bool canFixIsoSpin() const
Definition: HIInfo.h:348
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
The Pythia class contains the top-level routines to generate an event.
Definition: Pythia.h:71
int nCollSDT() const
Definition: HIInfo.h:68
int nDiffTarg() const
The number of diffractively wounded target nucleons in the event.
Definition: HIInfo.h:98
double glauberDDiff() const
Definition: HIInfo.h:190
double glauberELErr() const
Definition: HIInfo.h:160
double avNDb() const
Definition: HIInfo.h:48
virtual bool canForceHadronLevel() const
A user supplied wrapper around the Pythia::forceHadronLevel()
Definition: HIInfo.h:362
virtual bool hasEventOrdering() const
A user-supplied ordering of events in (inverse) hardness.
Definition: HIInfo.h:343
int nDiffProj() const
The number of diffractively wounded projectile nucleons in the event.
Definition: HIInfo.h:86
double glauberTotErr() const
Definition: HIInfo.h:127
double phi() const
The impact parameter angle.
Definition: HIInfo.h:41
Definition: HeavyIons.h:31
The default HeavyIon model in Pythia.
Definition: HeavyIons.h:162
long nAccepted() const
The number of produced events.
Definition: HIInfo.h:54
int nCollTot() const
The total number of sub-collisions in the event.
Definition: HIInfo.h:57