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; }
53 double avNDb()
const {
return avNDbSave; }
65 int nCollND()
const {
return nCollSave[1]; }
76 int nCollDD()
const {
return nCollSave[4]; }
79 int nCollCD()
const {
return nCollSave[5]; }
82 int nCollEl()
const {
return nCollSave[6]; }
94 int nElProj()
const {
return nProjSave[3]; }
109 double weight()
const {
return weightSave; }
136 return sqrt(sigErr2TotSave/max(1.0,
double(NSave)))*
FMSQ2MB;
147 return sqrt(sigErr2NDSave/max(1.0,
double(NSave)))*
FMSQ2MB;
158 return sqrt(sigErr2INELSave/max(1.0,
double(NSave)))*
FMSQ2MB;
169 return sqrt(sigErr2ELSave/max(1.0,
double(NSave)))*
FMSQ2MB;
181 return sqrt(sigErr2DiffTSave/max(1.0,
double(NSave)))*
FMSQ2MB;
193 return sqrt(sigErr2DiffPSave/max(1.0,
double(NSave)))*
FMSQ2MB;
205 return sqrt(sigErr2DDiffSave/max(1.0,
double(NSave)))*
FMSQ2MB;
210 return slopeSave/(sigmaTotSave*
pow2(
HBARC));
215 return sqrt((slopeErrSave/
pow2(slopeSave) +
216 sigErr2TotSave/
pow2(sigmaTotSave))/max(1.0,
double(NSave)))*
223 return mediumXSecsSave;
231 void addAttempt(
double T,
double bin,
double phiin,
232 double bweight,
double xSecScale);
235 void reweight(
double w) {
240 void select(
Info & in) {
252 void glauberStatistics();
255 static void runAvg(
double & sig,
double & sigErr2,
double N,
257 double delta = w - sig;
259 sigErr2 += (delta*(w - sig) - sigErr2)/N;
263 int idProjSave = 0, idTargSave = 0;
267 double phiSave = 0.0;
270 long NSave = 0, NAccSave = 0;
273 double sigmaTotSave = {}, sigmaNDSave = {},
274 sigmaELSave = {}, sigmaINELSave = {},
275 sigmaDiffPSave = {}, sigmaDiffTSave = {}, sigmaDDiffSave = {},
277 double sigErr2TotSave = {}, sigErr2NDSave = {},
278 sigErr2ELSave = {}, sigErr2INELSave = {},
279 sigErr2DiffPSave = {}, sigErr2DiffTSave = {}, sigErr2DDiffSave = {},
281 double avNDbSave = {};
282 double weightSave = {}, weightSumSave = {}, xSecScaleSave = {};
286 vector<int> nCollSave{}, nProjSave{}, nTargSave{};
290 map<int,double> sumPrimW{}, sumPrimW2{};
291 map<int,int> NPrim{};
292 map<int,string> NamePrim{};
302 vector<double> mediumXSecsSave = {};
313 subCollisionsPtrSave = subCollisionsPtrIn; }
339 virtual void init(
int idProjIn,
int idTargIn) {
340 idProjSave = idProjIn;
341 idTargSave = idTargIn;
346 virtual shared_ptr<ImpactParameterGenerator> impactParameterGenerator()
347 const {
return nullptr; }
351 virtual shared_ptr<NucleusModel> projectileModel()
const {
return nullptr; }
352 virtual bool hasTargetModel()
const {
return false; }
353 virtual shared_ptr<NucleusModel> targetModel()
const {
return nullptr; }
358 virtual shared_ptr<SubCollisionModel> subCollisionModel() {
return nullptr; }
362 virtual double eventOrdering(
const Event &,
const Info &) {
return -1; }
367 virtual bool fixIsoSpin(
EventInfo &) {
return false; }
381 virtual bool forceHadronLevel(
Pythia &) {
return false; }
388 findRecoilers(
const Event &,
bool ,
int ,
int ,
389 const Vec4 & ,
const Vec4 & )
const {
390 return vector<int>();
double glauberTot() const
The total cross section from the Glauber calculation.
Definition: HIInfo.h:129
int nCollSDP() const
Definition: HIInfo.h:69
constexpr double pow2(const double &x)
Powers of small integers - for balance speed/code clarity.
Definition: PythiaStdlib.h:175
virtual void init(int idProjIn, int idTargIn)
Initialize this user hook.
Definition: HIInfo.h:339
bool canAddNucleonExcitation() const
Definition: HIInfo.h:375
virtual bool canFindRecoilers() const
Definition: HIInfo.h:386
long nAttempts() const
The number of attempted impact parameter points.
Definition: HIInfo.h:56
double weight() const
The weight for this collision.
Definition: HIInfo.h:109
int nElProj() const
The number of elastically scattered target nucleons in the event.
Definition: HIInfo.h:94
bool failed
Whether the subcollision failed, i.e. has a failed excitation.
Definition: HISubCollisionModel.h:88
int nFail() const
The number of failed nucleon excitations in the current event.
Definition: HIInfo.h:115
virtual bool canShiftEvent() const
A user-supplied method for shifting the event in impact parameter space.
Definition: HIInfo.h:370
int nCollND() const
The number of non-diffractive sub-collisions in the event.
Definition: HIInfo.h:65
double glauberDiffTErr() const
Definition: HIInfo.h:180
The Event class holds all info on the generated event.
Definition: Event.h:408
void glauberReset()
Reset Glauber statistics.
Definition: HIInfo.cc:132
double glauberBSlopeErr() const
The error on the elastic slope parameter.
Definition: HIInfo.h:214
double xSecArea() const
The current sampling area in impact parameter (in millibarn).
Definition: HIInfo.h:47
double glauberND() const
The non-diffractive cross section from the Glauber calculation.
Definition: HIInfo.h:140
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:79
int nElTarg() const
The number of elastically scattered target nucleons in the event.
Definition: HIInfo.h:106
double glauberINELErr() const
Definition: HIInfo.h:157
int nPartTarg() const
The total number of interacting target nucleons in the event.
Definition: HIInfo.h:97
double T()
The summed elastic amplitude.
Definition: HIInfo.h:44
virtual ~HIUserHooks()
Virtual destructor.
Definition: HIInfo.h:336
double glauberDiffP() const
Definition: HIInfo.h:186
The SubCollisionSet gives a set of subcollisions between two nuclei.
Definition: HISubCollisionModel.h:96
double weightSum() const
The sum of weights of the produced events.
Definition: HIInfo.h:112
virtual bool hasSubCollisionModel()
Definition: HIInfo.h:357
virtual bool hasImpactParameterGenerator() const
A user-supplied impact parameter generator.
Definition: HIInfo.h:345
constexpr double HBARC
Define conversion hbar * c = 0.2 GeV * fm = 1 and related.
Definition: PythiaStdlib.h:147
const SubCollisionSet * subCollisionsPtr()
Access to subcollision to be extracted by the user.
Definition: HIInfo.h:307
double glauberDiffT() const
Definition: HIInfo.h:174
int nPartProj() const
The total number of interacting projectile nucleons in the event.
Definition: HIInfo.h:85
HIInfo * hiInfo
Definition: Info.h:116
double glauberEL() const
The elastic cross section from the Glauber calculation.
Definition: HIInfo.h:162
int nCollEl() const
The number of elastic sub-collisions in the event.
Definition: HIInfo.h:82
double glauberDDiffErr() const
Definition: HIInfo.h:204
double glauberBSlope() const
The elastic slope parameter.
Definition: HIInfo.h:209
double glauberDiffPErr() const
Definition: HIInfo.h:192
int nCollDD() const
The number of double diffractive sub-collisions in the event.
Definition: HIInfo.h:76
Definition: HISubCollisionModel.h:30
double glauberINEL() const
The total inelastic cross section from the Glauber calculation.
Definition: HIInfo.h:151
virtual bool hasProjectileModel() const
A user-supplied NucleusModel for the projectile and target.
Definition: HIInfo.h:350
void failedExcitation(const SubCollision &subColl)
Register a failed nucleon excitation.
Definition: HIInfo.h:120
HIUserHooks()
The default constructor is empty.
Definition: HIInfo.h:333
double glauberNDErr() const
Definition: HIInfo.h:146
Class for storing Events and Info objects.
Definition: HIBasics.h:25
int idProjSave
Definition: HIInfo.h:397
int nAbsTarg() const
The number of absorptively wounded target nucleons in the event.
Definition: HIInfo.h:100
const vector< double > & mediumXSecs() const
Definition: HIInfo.h:222
int nAbsProj() const
The number of absorptively wounded projectile nucleons in the event.
Definition: HIInfo.h:88
HIInfo()=default
Constructor.
constexpr double FMSQ2MB
Define conversion between fm^2 and mb, in both directions.
Definition: PythiaStdlib.h:171
virtual bool canFixIsoSpin() const
Definition: HIInfo.h:366
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:72
int nCollSDT() const
Definition: HIInfo.h:73
int nDiffTarg() const
The number of diffractively wounded target nucleons in the event.
Definition: HIInfo.h:103
double glauberDDiff() const
Definition: HIInfo.h:198
double glauberELErr() const
Definition: HIInfo.h:168
double avNDb() const
Definition: HIInfo.h:53
virtual bool canForceHadronLevel() const
A user supplied wrapper around the Pythia::forceHadronLevel()
Definition: HIInfo.h:380
virtual bool hasEventOrdering() const
A user-supplied ordering of events in (inverse) hardness.
Definition: HIInfo.h:361
int nDiffProj() const
The number of diffractively wounded projectile nucleons in the event.
Definition: HIInfo.h:91
double glauberTotErr() const
Definition: HIInfo.h:135
double phi() const
The impact parameter angle.
Definition: HIInfo.h:41
Definition: HeavyIons.h:31
The default HeavyIon model in Pythia.
Definition: HeavyIons.h:169
long nAccepted() const
The number of produced events.
Definition: HIInfo.h:59
int nCollTot() const
The total number of sub-collisions in the event.
Definition: HIInfo.h:62