-
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* *
# define pyclus pyclus_
# define pycell pycell_
# define pyshow pyshow_
+# define pyshowq pyshowq_
# define pyrobo pyrobo_
# define pyquen pyquen_
# define pyevnw pyevnw_
+# define pyjoin pyjoin_
+# define qpygin0 qpygin0_
# define type_of_call
#else
# define pyclus PYCLUS
# define pycell PYCELL
+# define pyshow PYSHOW
+# define pyshowq PYSHOWQ
# define pyrobo PYROBO
# define pyquen PYQUEN
# define pyevnw PYEVNW
+# define pyjoin PYJOIN
+# define qpygin0 QPYGIN0
# define type_of_call _stdcall
#endif
+extern "C" void type_of_call pyjoin(Int_t &, Int_t * );
extern "C" void type_of_call pyclus(Int_t & );
extern "C" void type_of_call pycell(Int_t & );
extern "C" void type_of_call pyshow(Int_t &, Int_t &, Double_t &);
+extern "C" void type_of_call pyshowq(Int_t &, Int_t &, Double_t &);
+extern "C" void type_of_call qpygin0();
extern "C" void type_of_call pyrobo(Int_t &, Int_t &, Double_t &, Double_t &, Double_t &, Double_t &, Double_t &);
extern "C" void type_of_call pyquen(Double_t &, Int_t &, Double_t &);
extern "C" void type_of_call pyevnw();
fProcess(kPyMb),
fEcms(0.),
fStrucFunc(kCTEQ5L),
+ fProjectile("p"),
+ fTarget("p"),
fXJet(0.),
fYJet(0.),
fNGmax(30),
fProcess(kPyMb),
fEcms(0.),
fStrucFunc(kCTEQ5L),
+ fProjectile("p"),
+ fTarget("p"),
fXJet(0.),
fYJet(0.),
fNGmax(30),
pythia.Copy(*this);
}
-void AliPythia6::ProcInit(Process_t process, Float_t energy, StrucFunc_t strucfunc)
+void AliPythia6::ProcInit(Process_t process, Float_t energy, StrucFunc_t strucfunc, Int_t /*tune*/)
{
// Initialise the process to generate
if (!AliPythiaRndm::GetPythiaRandom())
SetMSUB(94,1); // double diffraction
SetMSUB(95,1); // low pt production
- AtlasTuning_MC09();
+ AtlasTuningMC09();
break;
case kPyMbWithDirectPhoton:
// With parton showers on we are generating "Z inclusive process"
SetMSTP(61,1); //Initial QCD & QED showers on
SetMSTP(71,1); //Final QCD & QED showers on
-
+ break;
+ case kPyZgamma:
+ //Inclusive production of Z
+ SetMSEL(0);
+ //f fbar -> Z/gamma
+ SetMSUB(1,1);
+ // Initial/final parton shower on (Pythia default)
+ // With parton showers on we are generating "Z inclusive process"
+ SetMSTP(61,1); //Initial QCD & QED showers on
+ SetMSTP(71,1); //Final QCD & QED showers on
+ break;
+ case kPyMBRSingleDiffraction:
+ case kPyMBRDoubleDiffraction:
+ case kPyMBRCentralDiffraction:
break;
+ case kPyJetsPWHG:
+ // N.B.
+ // ====
+ // For the case of jet production the following parameter setting
+ // limits the transverse momentum of secondary scatterings, due
+ // to multiple parton interactions, to be less than that of the
+ // primary interaction (see POWHEG Dijet paper arXiv:1012.3380
+ // [hep-ph] sec. 4.1 and also the PYTHIA Manual).
+ SetMSTP(86,1);
+ // maximum number of errors before pythia aborts (def=10)
+ SetMSTU(22,10);
+ // number of warnings printed on the shell
+ SetMSTU(26,20);
+ break;
+ case kPyCharmPWHG:
+ case kPyBeautyPWHG:
+ case kPyWPWHG:
+ // number of warnings printed on the shell
+ SetMSTU(26,20);
}
//
// Initialize PYTHIA
SetMSTP(41,1); // all resonance decays switched on
- Initialize("CMS","p","p",fEcms);
-
+ if (process == kPyJetsPWHG || process == kPyCharmPWHG || process == kPyBeautyPWHG || process == kPyWPWHG) {
+ Initialize("USER","","",0.);
+ } else {
+ Initialize("CMS",fProjectile,fTarget,fEcms);
+ }
}
Int_t AliPythia6::CheckedLuComp(Int_t kf)
for (i = 1; i < 2001; i++) fDefMDME[i] = GetMDME(i,1);
}
+void AliPythia6::Pyjoin(Int_t& npart, Int_t *ipart)
+{
+// Call Pythia join alogorithm to set up a string between
+// npart partons, given by indices in array ipart[npart]
+//
+ pyjoin(npart, ipart);
+}
+
+void AliPythia6::Pyshowq(Int_t ip1, Int_t ip2, Double_t qmax)
+{
+// Call qPythia showering
+//
+ pyshowq(ip1, ip2, qmax);
+}
+
+void AliPythia6::Qpygin0()
+{
+ //position of the hard scattering in the nuclear overlapping area.
+ //just for qpythia.
+ qpygin0();
+}
+
void AliPythia6::Pyclus(Int_t& njet)
{
// Call Pythia clustering algorithm
Int_t itype = (qPdg[j] == 21) ? 2 : 1;
- Double_t eloss = fQuenchingWeights->GetELossRandomKFast(itype, int0[j], int1[j], eq[j]);
+ // Double_t eloss = fQuenchingWeights->GetELossRandomKFast(itype, int0[j], int1[j], eq[j]);
+ Double_t eloss = fQuenchingWeights->GetELossRandomK(itype, int0[j], int1[j], eq[j]);
if (TMath::Abs(yq[j]) > 2.5 || eq[j] < 10.) {
fZQuench[j] = 0.;
SetPARP(67,1); // Regulates Initial State Radiation
}
-void AliPythia6::AtlasTuning_MC09()
+void AliPythia6::AtlasTuningMC09()
{
//
// Configuration for the ATLAS tuning