// For details and for the NORMALIZATION of the yields see: //
// N.Carrer and A.Dainese, //
// "Charm and beauty production at the LHC", //
-// ALICE-INT-2003-019, [arXiv:hep-ph/0311225]. //
+// ALICE-INT-2003-019, [arXiv:hep-ph/0311225]; //
+// PPR Chapter 6.6, CERN/LHCC 2005-030 (2005). //
//*******************************************************************//
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include <TDatime.h>
#include <TSystem.h>
#include <TVirtualMC.h>
-#include <TGeant3.h>
+#include <TGeant3TGeo.h>
#include "STEER/AliRunLoader.h"
#include "STEER/AliRun.h"
#include "STEER/AliConfig.h"
#include "STRUCT/AliPIPEv0.h"
#include "ITS/AliITSvPPRasymmFMD.h"
#include "TPC/AliTPCv2.h"
-#include "TOF/AliTOFv4T0.h"
+#include "TOF/AliTOFv5T0.h"
#include "RICH/AliRICHv1.h"
#include "ZDC/AliZDCv1.h"
#include "TRD/AliTRDv1.h"
//--- Heavy Flavour Production ---
enum ProcessHvFl_t
{
- kCharmPbPb5500, kCharmpPb8800, kCharmpp14000,
+ kCharmPbPb5500, kCharmpPb8800, kCharmpp14000, kCharmpp14000wmi,
kD0PbPb5500, kD0pPb8800, kD0pp14000,
- kDPlusPbPb5500, kDPluspPb8800, kDPluspp14000,
- kBeautyPbPb5500, kBeautypPb8800, kBeautypp14000
+ kDPlusPbPb5500, kDPluspPb8800, kDPluspp14000,
+ kDPlusStrangePbPb5500, kDPlusStrangepPb8800, kDPlusStrangepp14000,
+ kBeautyPbPb5500, kBeautypPb8800, kBeautypp14000, kBeautypp14000wmi
};
//--- Decay Mode ---
enum DecayHvFl_t
{
k2kG, k4kG, k5kG
};
+//--- Trigger config ---
+enum TrigConf_t
+{
+ kDefaultPPTrig, kDefaultPbPbTrig
+};
+const char * TrigConfName[] = {
+ "p-p","Pb-Pb"
+};
//--- Functions ---
AliGenPythia *PythiaHVQ(ProcessHvFl_t proc);
static ProcessHvFl_t procHvFl = kCharmPbPb5500;
static DecayHvFl_t decHvFl = kNature;
static YCut_t ycut = kFull;
-static Mag_t mag = k4kG;
+static Mag_t mag = k5kG;
+static TrigConf_t trig = kDefaultPbPbTrig; // default PbPb trigger configuration
// nEvts = -1 : you get 1 QQbar pair and all the fragmentation and
// decay chain
// nEvts = N>0 : you get N charm / beauty Hadrons
// = kFALSE: only final heavy hadrons and their decays stored
Bool_t stars = kTRUE;
+// To be used only with kCharmppMNRwmi and kBeautyppMNRwmi
+// To get a "reasonable" agreement with MNR results, events have to be
+// generated with the minimum ptHard set to 2.76 GeV.
+// To get a "perfect" agreement with MNR results, events have to be
+// generated in four ptHard bins with the following relative
+// normalizations:
+// CHARM
+// 2.76-3 GeV: 25%
+// 3-4 GeV: 40%
+// 4-8 GeV: 29%
+// >8 GeV: 6%
+// BEAUTY
+// 2.76-4 GeV: 5%
+// 4-6 GeV: 31%
+// 6-8 GeV: 28%
+// >8 GeV: 36%
+Float_t ptHardMin = 2.76;
+Float_t ptHardMax = -1.;
+
// Comment line
static TString comment;
rl->SetNumberOfEventsPerFile(3);
gAlice->SetRunLoader(rl);
+ // Set the trigger configuration
+ gAlice->SetTriggerDescriptor(TrigConfName[trig]);
+ cout<<"Trigger configuration is set to "<<TrigConfName[trig]<<endl;
+
//
//=======================================================================
// ************* STEERING parameters FOR ALICE SIMULATION **************
ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det"); // don't touch this parameter if you're not an ITS developer
ITS->SetThicknessDet1(200.); // detector thickness on layer 1 must be in the range [150,300]
ITS->SetThicknessDet2(200.); // detector thickness on layer 2 must be in the range [150,300]
- ITS->SetThicknessChip1(200.); // chip thickness on layer 1 must be in the range [100,300]
- ITS->SetThicknessChip2(200.); // chip thickness on layer 2 must be in the range [100,300]
+ ITS->SetThicknessChip1(150.); // chip thickness on layer 1 must be in the range [100,300]
+ ITS->SetThicknessChip2(150.); // chip thickness on layer 2 must be in the range [100,300]
ITS->SetRails(1); // 1 --> rails in ; 0 --> rails out
ITS->SetCoolingFluid(1); // 1 --> water ; 0 --> freon
//
- //AliITSvPPRsymm *ITS = new AliITSvPPRsymm("ITS","New ITS PPR detailed version with symmetric services");
- //ITS->SetMinorVersion(2); // don't touch this parameter if you're not an ITS developer
- //ITS->SetReadDet(kFALSE); // don't touch this parameter if you're not an ITS developer
- //ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRsymm2.det"); // don't touch this parameter if you're not an ITS developer
- //ITS->SetThicknessDet1(300.); // detector thickness on layer 1 must be in the range [150,300]
- //ITS->SetThicknessDet2(300.); // detector thickness on layer 2 must be in the range [150,300]
- //ITS->SetThicknessChip1(300.); // chip thickness on layer 1 must be in the range [100,300]
- //ITS->SetThicknessChip2(300.); // chip thickness on layer 2 must be in the range [100,300]
- //ITS->SetRails(1); // 1 --> rails in ; 0 --> rails out
- //ITS->SetCoolingFluid(1); // 1 --> water ; 0 --> freon
- //
- //
// Coarse geometries (warning: no hits are produced with these coarse geometries and they unuseful
// for reconstruction !):
//
if(iTOF) {
//=================== TOF parameters ============================
- AliTOF *TOF = new AliTOFv4T0("TOF","normal TOF");
+ AliTOF *TOF = new AliTOFv5T0("TOF","normal TOF");
}
if(iRICH) {
//=================== TRD parameters ============================
AliTRD *TRD = new AliTRDv1("TRD","TRD slow simulator");
-
- // Select the gas mixture (0: 97% Xe + 3% isobutane, 1: 90% Xe + 10% CO2)
- TRD->SetGasMix(1);
-
- // With hole in front of PHOS
- TRD->SetPHOShole();
- // With hole in front of RICH
- TRD->SetRICHhole();
- // Switch on TR
- AliTRDsim *TRDsim = TRD->CreateTR();
}
if(iFMD) {
gener->SetPtHard(2.1,-1.0);
gener->SetEnergyCMS(14000.);
break;
+ case kCharmpp14000wmi:
+ comment = comment.Append(" Charm in pp at 14 TeV with mult. interactions");
+ gener = new AliGenPythia(-1);
+ gener->SetProcess(kPyCharmppMNRwmi);
+ gener->SetStrucFunc(kCTEQ5L);
+ gener->SetPtHard(ptHardMin,ptHardMax);
+ gener->SetEnergyCMS(14000.);
+ break;
case kD0PbPb5500:
comment = comment.Append(" D0 in Pb-Pb at 5.5 TeV");
gener = new AliGenPythia(nEvts);
gener->SetPtHard(2.1,-1.0);
gener->SetEnergyCMS(14000.);
break;
+ case kDPlusStrangePbPb5500:
+ comment = comment.Append(" DPlusStrange in Pb-Pb at 5.5 TeV");
+ gener = new AliGenPythia(nEvts);
+ gener->SetProcess(kPyDPlusStrangePbPbMNR);
+ gener->SetStrucFunc(kCTEQ4L);
+ gener->SetPtHard(2.1,-1.0);
+ gener->SetEnergyCMS(5500.);
+ gener->SetNuclei(208,208);
+ break;
+ case kDPlusStrangepPb8800:
+ comment = comment.Append(" DPlusStrange in p-Pb at 8.8 TeV");
+ gener = new AliGenPythia(nEvts);
+ gener->SetProcess(kPyDPlusStrangepPbMNR);
+ gener->SetStrucFunc(kCTEQ4L);
+ gener->SetPtHard(2.1,-1.0);
+ gener->SetEnergyCMS(8800.);
+ gener->SetProjectile("P",1,1);
+ gener->SetTarget("Pb",208,82);
+ break;
+ case kDPlusStrangepp14000:
+ comment = comment.Append(" DPlusStrange in pp at 14 TeV");
+ gener = new AliGenPythia(nEvts);
+ gener->SetProcess(kPyDPlusStrangeppMNR);
+ gener->SetStrucFunc(kCTEQ4L);
+ gener->SetPtHard(2.1,-1.0);
+ gener->SetEnergyCMS(14000.);
+ break;
case kBeautyPbPb5500:
comment = comment.Append(" Beauty in Pb-Pb at 5.5 TeV");
gener = new AliGenPythia(nEvts);
gener->SetPtHard(2.75,-1.0);
gener->SetEnergyCMS(14000.);
break;
+ case kBeautypp14000wmi:
+ comment = comment.Append(" Beauty in pp at 14 TeV with mult. interactions");
+ gener = new AliGenPythia(-1);
+ gener->SetProcess(kPyBeautyppMNRwmi);
+ gener->SetStrucFunc(kCTEQ5L);
+ gener->SetPtHard(ptHardMin,ptHardMax);
+ gener->SetEnergyCMS(14000.);
+ break;
}
return gener;