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; }
131 return sqrt(sigErr2TotSave/max(1.0,
double(NSave)))*
FMSQ2MB;
142 return sqrt(sigErr2NDSave/max(1.0,
double(NSave)))*
FMSQ2MB;
153 return sqrt(sigErr2INELSave/max(1.0,
double(NSave)))*
FMSQ2MB;
164 return sqrt(sigErr2ELSave/max(1.0,
double(NSave)))*
FMSQ2MB;
176 return sqrt(sigErr2DiffTSave/max(1.0,
double(NSave)))*
FMSQ2MB;
188 return sqrt(sigErr2DiffPSave/max(1.0,
double(NSave)))*
FMSQ2MB;
200 return sqrt(sigErr2DDiffSave/max(1.0,
double(NSave)))*
FMSQ2MB;
205 return slopeSave/(sigmaTotSave*
pow2(
HBARC));
210 return sqrt((slopeErrSave/
pow2(slopeSave) +
211 sigErr2TotSave/
pow2(sigmaTotSave))/max(1.0,
double(NSave)))*
220 void addAttempt(
double T,
double bin,
double phiin,
221 double bweight,
double xSecScale);
224 void reweight(
double w) {
229 void select(
Info & in) {
241 void glauberStatistics();
244 static void runAvg(
double & sig,
double & sigErr2,
double N,
246 double delta = w - sig;
248 sigErr2 += (delta*(w - sig) - sigErr2)/N;
252 int idProjSave = 0, idTargSave = 0;
256 double phiSave = 0.0;
259 long NSave = 0, NAccSave = 0;
262 double sigmaTotSave = {}, sigmaNDSave = {},
263 sigmaELSave = {}, sigmaINELSave = {},
264 sigmaDiffPSave = {}, sigmaDiffTSave = {}, sigmaDDiffSave = {},
266 double sigErr2TotSave = {}, sigErr2NDSave = {},
267 sigErr2ELSave = {}, sigErr2INELSave = {},
268 sigErr2DiffPSave = {}, sigErr2DiffTSave = {}, sigErr2DDiffSave = {},
270 double avNDbSave = {};
271 double weightSave = {}, weightSumSave = {}, xSecScaleSave = {};
275 vector<int> nCollSave{}, nProjSave{}, nTargSave{};
279 map<int,double> sumPrimW{}, sumPrimW2{};
280 map<int,int> NPrim{};
281 map<int,string> NamePrim{};
298 subCollisionsPtrSave = subCollisionsPtrIn; }
324 virtual void init(
int idProjIn,
int idTargIn) {
325 idProjSave = idProjIn;
326 idTargSave = idTargIn;
331 virtual shared_ptr<ImpactParameterGenerator> impactParameterGenerator()
332 const {
return nullptr; }
336 virtual shared_ptr<NucleusModel> projectileModel()
const {
return nullptr; }
337 virtual bool hasTargetModel()
const {
return false; }
338 virtual shared_ptr<NucleusModel> targetModel()
const {
return nullptr; }
343 virtual shared_ptr<SubCollisionModel> subCollisionModel() {
return nullptr; }
347 virtual double eventOrdering(
const Event &,
const Info &) {
return -1; }
352 virtual bool fixIsoSpin(
EventInfo &) {
return false; }
366 virtual bool forceHadronLevel(
Pythia &) {
return false; }
373 findRecoilers(
const Event &,
bool ,
int ,
int ,
374 const Vec4 & ,
const Vec4 & )
const {
375 return vector<int>();
double glauberTot() const
The total cross section from the Glauber calculation.
Definition: HIInfo.h:124
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:173
virtual void init(int idProjIn, int idTargIn)
Initialize this user hook.
Definition: HIInfo.h:324
bool canAddNucleonExcitation() const
Definition: HIInfo.h:360
virtual bool canFindRecoilers() const
Definition: HIInfo.h:371
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:355
int nCollND() const
The number of non-diffractive sub-collisions in the event.
Definition: HIInfo.h:60
double glauberDiffTErr() const
Definition: HIInfo.h:175
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:209
double glauberND() const
The non-diffractive cross section from the Glauber calculation.
Definition: HIInfo.h:135
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:152
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:321
double glauberDiffP() const
Definition: HIInfo.h:181
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:342
virtual bool hasImpactParameterGenerator() const
A user-supplied impact parameter generator.
Definition: HIInfo.h:330
constexpr double HBARC
Define conversion hbar * c = 0.2 GeV * fm = 1 and related.
Definition: PythiaStdlib.h:145
const SubCollisionSet * subCollisionsPtr()
Access to subcollision to be extracted by the user.
Definition: HIInfo.h:292
double glauberDiffT() const
Definition: HIInfo.h:169
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:157
int nCollEl() const
The number of elastic sub-collisions in the event.
Definition: HIInfo.h:77
double glauberDDiffErr() const
Definition: HIInfo.h:199
double glauberBSlope() const
The elastic slope parameter.
Definition: HIInfo.h:204
double glauberDiffPErr() const
Definition: HIInfo.h:187
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:146
virtual bool hasProjectileModel() const
A user-supplied NucleusModel for the projectile and target.
Definition: HIInfo.h:335
void failedExcitation(const SubCollision &subColl)
Register a failed nucleon excitation.
Definition: HIInfo.h:115
HIUserHooks()
The default constructor is empty.
Definition: HIInfo.h:318
double glauberNDErr() const
Definition: HIInfo.h:141
Class for storing Events and Info objects.
Definition: HIBasics.h:25
int idProjSave
Definition: HIInfo.h:382
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:169
virtual bool canFixIsoSpin() const
Definition: HIInfo.h:351
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:193
double glauberELErr() const
Definition: HIInfo.h:163
double avNDb() const
Definition: HIInfo.h:48
virtual bool canForceHadronLevel() const
A user supplied wrapper around the Pythia::forceHadronLevel()
Definition: HIInfo.h:365
virtual bool hasEventOrdering() const
A user-supplied ordering of events in (inverse) hardness.
Definition: HIInfo.h:346
int nDiffProj() const
The number of diffractively wounded projectile nucleons in the event.
Definition: HIInfo.h:86
double glauberTotErr() const
Definition: HIInfo.h:130
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