enum PDCProc_t {kGenBox,
kGenMuonLMR,
+ kGenParamJpsi,
+ kGenPionKaon,
kGenCorrHF,
kPythia6,
kPythiaPerugia0,
- kPythiaPerugia0Jpsi2e,
- kPythiaPerugia0BtoJpsi2e,
+ kPythiaPerugia0Jpsi2mu,
+ kPythiaPerugia0BtoJpsi2mu,
kHijing,
kHijing2500,
- kHijing2500Cocktail};
+ kHijing2500Cocktail,
+ kCocktailSignals};
const Char_t* pprRunName[] = {"kGenBox",
"kGenMuonLMR",
+ "kGenParamJpsi",
+ "kGenPionKaon",
"kGenCorrHF",
"kPythia6",
"kPythiaPerugia0",
- "kPythiaPerugia0Jpsi2e",
- "kPythiaPerugia0BtoJpsi2e",
+ "kPythiaPerugia0Jpsi2mu",
+ "kPythiaPerugia0BtoJpsi2mu",
"kHijing",
"kHijing2500",
- "kHijing2500Cocktail"};
+ "kHijing2500Cocktail",
+ "kCocktailSignals"};
enum Mag_t { kNoField, k5kG, kFieldMax };
void LoadLibs();
// ----------------------- Generator, field, beam energy,... ------------------------------------------------------------
-static PDCProc_t proc = kGenBox;
-static PDCProc_t signal = kGenBox; // only in case kHijing2500Cocktail is the proc
+static PDCProc_t proc = kGenParamJpsi;
+static PDCProc_t signal = kGenParamJpsi; // only in case kHijing2500Cocktail is the proc
static Mag_t mag = k5kG;
-static Float_t energy = 14000.; // energy in CMS
+static Float_t energy = 5500.; // energy in CMS
static Float_t bMin = 0.;
static Float_t bMax = = 5.; // 0-5 fm corresponds to around 0-10% (see https://twiki.cern.ch/twiki/bin/viewauth/ALICE/CentStudies#Tables_with_centrality_bins_for)
static Double_t JpsiPol = 0; // Jpsi polarisation
AliRunLoader* rl=0x0;
- cout<<"Config.C: Creating Run Loader ..."<<endl;
+ printf("Config.C: Creating Run Loader ...");
rl = AliRunLoader::Open("galice.root", AliConfig::GetDefaultEventFolderName(), "recreate");
if (rl == 0x0) {
gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
// Generator
AliGenerator* gener = 0x0;
- if (proc == kPythia6) gener = MbPythia();
- else if (proc == kPythiaPerugia0) gener = MbPythiaTunePerugia0();
- else if (proc == kHijing) gener = Hijing();
- else if (proc == kHijing2500) gener = Hijing2500();
- else if (proc == kHijing2500Cocktail) gener = Hijing2500Cocktail();
- else if (proc == kGenBox) gener = GenBox();
- else if (proc == kGenMuonLMR) gener = GenMuonLMR();
- else if (proc == kGenCorrHF) gener = GenCorrHF();
+ if (proc == kPythia6) gener = MbPythia();
+ else if (proc == kPythiaPerugia0) gener = MbPythiaTunePerugia0();
+ else if (proc == kHijing) gener = Hijing();
+ else if (proc == kHijing2500) gener = Hijing2500();
+ else if (proc == kHijing2500Cocktail) gener = Hijing2500Cocktail();
+ else if (proc == kGenBox) gener = GenBox();
+ else if (proc == kGenMuonLMR) gener = GenMuonLMR();
+ else if (proc == kGenParamJpsi) gener = GenParamJpsi();
+ else if (proc == kGenCorrHF) gener = GenCorrHF();
+ else if (proc == kGenPionKaon) gener = GenParamPionKaon();
+ else if (proc == kPythiaPerugia0BtoJpsi2mu) gener = MbPythiaTunePerugia0BtoJpsi2mu();
+ else if (proc == kCocktailSignals) gener = CocktailSignals();
// Size of the interaction diamond
Float_t sigmaz = 5.4 / TMath::Sqrt(2.); // [cm]
printf("\n \n Diamond size x-y: %10.3e z: %10.3e\n \n", sigmaxy, sigmaz);
-// gener->SetSigma(sigmaxy, sigmaxy, sigmaz); // Sigma in (X,Y,Z) (cm) on IP position
-// gener->SetVertexSmear(kPerEvent);
+ gener->SetOrigin(0,0,0);
+ gener->SetSigma(sigmaxy, sigmaxy, sigmaz); // Sigma in (X,Y,Z) (cm) on IP position
+ gener->SetVertexSmear(kPerEvent);
gener->Init();
printf("\n \n Comment: %s \n \n", comment.Data());
Int_t iFMD = 0;
Int_t iFRAME = 0;
Int_t iITS = 0;
- Int_t iMAG = 0;
+ Int_t iMAG = 1;
Int_t iPHOS = 0;
Int_t iPMD = 0;
Int_t iHMPID = 0;
if (iDIPO) AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3");
if (iHALL) AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall");
if (iSHIL) AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3");
- if (iITS) AliITS *ITS = new AliITSv11("ITS","ITS v11");
+ if (iITS) gROOT->ProcessLine(".x $ALICE_ROOT/ITS/UPGRADE/testITSU/CreateITSU.C");
if (iTPC) AliTPC *TPC = new AliTPCv2("TPC", "Default");
if (iTOF) AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF");
if (iHMPID) AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID");
}
if (iPIPE) {
// AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe");
- AliPIPE *PIPE = new AliPIPEv4("PIPE", "Beam Pipe", 1.98, 0.08); // cylindre with new adaptator pipe
+ AliPIPE *PIPE = new AliPIPEv4("PIPE", "Beam Pipe");
}
if (iZDC) {
AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC");
}
if (iMFT) {
AliMFT *MFT = new AliMFT("MFT", "normal MFT");
- MFT->SetNSlices(1);
- MFT->SetChargeDispersion(20.e-4);
- MFT->SetNStepForChargeDispersion(4);
}
TIter next(gAlice->Modules());
AliGenerator* GenBox() {
- AliGenBox *gener = new AliGenBox(2);
- gener->SetMomentumRange(10.0, 10.1);
+ AliGenBox *gener = new AliGenBox(10);
+ gener->SetMomentumRange(4, 50);
gener->SetPhiRange(0., 360.);
- gener->SetThetaRange(171.0,178.0);
- gener->SetPart(kMuonMinus); // Muons
- gener->SetOrigin(0., 0., 0.); // vertex position
+ gener->SetThetaRange(170.0,178.0);
+ Bool_t isMuPlus = gRandom->Integer(2);
+ if (isMuPlus) gener->SetPart(kMuonPlus); // Muons
+ else gener->SetPart(kMuonMinus); // Muons
return gener;
AliGenMUONLMR *gener = new AliGenMUONLMR();
gener->SetMomentumRange(0,999);
gener->SetPtRange(0,100.);
- gener->SetPhiRange(0., 360.);
- gener->SetThetaRange(0., 180.);
- gener->SetChildThetaRange(170.0,179.0);
gener->SetYRange(-4.5, -2.0);
- gener->SetOrigin(0.0, 0.0, 0.0); // vertex position
- gener->SetSigma(0.0, 0.0, 0.0); // vertex position smearing
- gener->SetVertexSmear(kPerEvent);
+ gener->SetChildThetaRange(171.0,178.0);
+ gener->SetChildMomentumRange(4.0, 999.);
enum {kEta2Body, kEtaDalitz, kRho2Body, kOmega2Body, kOmegaDalitz, kPhi2Body, kEtaPrimeDalitz, kPionLMR, kKaonLMR};
- gener->GenerateSingleProcess(kPhi2Body, 500);
+ gener->GenerateSingleProcess(kOmega2Body, 10);
gener->SetCutOnChild(1);
return gener;
//====================================================================================================================================================
+AliGenerator* GenParamJpsi() {
+
+ AliGenParam *gener = new AliGenParam(5, AliGenMUONlib::kJpsi);
+ gener->SetMomentumRange(0,999);
+ gener->SetPtRange(0,100.);
+ gener->SetYRange(-4.0, -2.5);
+ gener->SetPhiRange(0., 360.);
+ gener->SetChildThetaRange(171.0,177.0);
+ gener->SetChildMomentumRange(4.0, 999.);
+ gener->SetForceDecay(kDiMuon);
+ gener->SetTrackingFlag(1);
+ gener->SetCutOnChild(1);
+
+ return gener;
+
+}
+
+//====================================================================================================================================================
+
+AliGenerator* GenParamPionKaon() {
+
+ AliGenParamPionsKaons *gener = new AliGenParamPionsKaons(100,"$ALICE_ROOT/MFT/PionKaonKinematics.root");
+ gener->SetPtRange(0, 5.);
+ gener->SetPhiRange(0., 360.);
+ gener->SetYRange(-10., 0.);
+ // gener->SetCutOnChild(1);
+
+ return gener;
+
+}
+
+//====================================================================================================================================================
+
AliGenerator* GenCorrHF() {
- AliGenCorrHF *gener = new AliGenCorrHF(1, 4, 14); // for charm, 1 pair per event
- // AliGenCorrHF *gener = new AliGenCorrHF(1, 5, 14); // for beauty, 1 pair per event
+ AliGenCorrHF *gener = new AliGenCorrHF(1, 4, 6); // for charm, 1 pair per event
+ // AliGenCorrHF *gener = new AliGenCorrHF(1, 5, 6); // for beauty, 1 pair per event
gener->SetMomentumRange(0,9999);
gener->SetCutOnChild(1); // 1/0 means cuts on children enable/disable
- gener->SetChildThetaRange(170.0,179.0);
- gener->SetOrigin(0,0,0); //vertex position
+ gener->SetChildThetaRange(171.0,178.0);
+ gener->SetChildMomentumRange(4.0, 999.);
gener->SetForceDecay(kSemiMuonic);
gener->SetTrackingFlag(1);
gener->Init();
//====================================================================================================================================================
-AliGenerator* MbPythiaTunePerugia0Jpsi2e() {
+AliGenerator* MbPythiaTunePerugia0Jpsi2mu() {
- comment = comment.Append("Jpsi forced to dielectrons");
+ comment = comment.Append("Jpsi forced to dimuons");
AliGenParam *jpsi=0x0;
- if(JpsiHarderPt) jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 8.8", "Jpsi"); // 8.8 TeV
+ if (JpsiHarderPt) jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 8.8", "Jpsi"); // 8.8 TeV
else jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 7", "Jpsi"); // 7 TeV
jpsi->SetPtRange(0.,999.);
jpsi->SetYRange(-1.0, 1.0);
jpsi->SetPhiRange(0.,360.);
- jpsi->SetForceDecay(kDiElectron);
+ jpsi->SetForceDecay(kDiMuon);
return jpsi;
}
//====================================================================================================================================================
-AliGenerator* MbPythiaTunePerugia0BtoJpsi2e() {
+AliGenerator* MbPythiaTunePerugia0BtoJpsi2mu() {
- comment = comment.Append(" pp: Pythia (Perugia0) BtoJpsi (1 bbbar per event, 1 b-hadron in |y|<2, 1 J/psi in |y|<2");
+ comment = comment.Append(" pp: Pythia (Perugia0) BtoJpsi (1 bbbar per event, 1 b-hadron, 1 J/psi");
// Pythia
AliGenPythia* pythia = new AliGenPythia(-1);
pythia->SetMomentumRange(0, 999999.);
- pythia->SetThetaRange(0., 180.);
- pythia->SetYRange(-2.,2.);
+ pythia->SetYRange(-4.5, -2.0);
pythia->SetPtRange(0,1000.);
pythia->SetProcess(kPyBeautyppMNRwmi);
pythia->SetEnergyCMS(energy);
// decays
pythia->SetCutOnChild(1);
pythia->SetPdgCodeParticleforAcceptanceCut(443);
- pythia->SetChildYRange(-2,2);
+ pythia->SetChildYRange(-4.5, -2.0);
pythia->SetChildPtRange(0,10000.);
//
// decays
- pythia->SetForceDecay(kBJpsiDiElectron);
+ pythia->SetForceDecay(kBJpsiDiMuon);
return pythia;
+
}
//====================================================================================================================================================
gener->SetMomentumRange(0,999);
gener->SetPhiRange(0,360);
gener->SetThetaRange(171, 179);
- gener->SetOrigin(0,0,0); // vertex position
- gener->SetSigma(0,0,0); // Sigma in (X,Y,Z) (cm) on IP position
gGener = gener;
return gener;
//====================================================================================================================================================
+AliGenerator* CocktailSignals() {
+
+ comment = comment.Append("Cocktail of various signals");
+
+ AliGenCocktail *cocktail = new AliGenCocktail();
+
+ // 1) Dummy generation of positive pions, to keep memory of the production vertex
+ AliGenBox *dummyPionPos = new AliGenBox(20);
+ dummyPionPos->SetYRange(-0.5, 0.5);
+ dummyPionPos->SetPtRange(1., 10.);
+ dummyPionPos->SetPart(211);
+ cocktail->AddGenerator(dummyPionPos,"dummyPionPos",1);
+
+ // 2) Dummy generation of negative pions, to keep memory of the production vertex
+ AliGenBox *dummyPionNeg = new AliGenBox(20);
+ dummyPionNeg->SetYRange(-0.5, 0.5);
+ dummyPionNeg->SetPtRange(1., 10.);
+ dummyPionNeg->SetPart(-211);
+ cocktail->AddGenerator(dummyPionNeg,"dummyPionNeg",1);
+
+ // 3) Generator for the custom signal
+ AliGenerator* signalGen = 0x0;
+ if (signal == kPythia6) signalGen = MbPythia();
+ else if (signal == kPythiaPerugia0) signalGen = MbPythiaTunePerugia0();
+ else if (signal == kHijing) signalGen = Hijing();
+ else if (signal == kHijing2500) signalGen = Hijing2500();
+ else if (signal == kGenBox) signalGen = GenBox();
+ else if (signal == kGenMuonLMR) signalGen = GenMuonLMR();
+ else if (signal == kGenParamJpsi) signalGen = GenParamJpsi();
+ else if (signal == kGenCorrHF) signalGen = GenCorrHF();
+ else if (signal == kGenPionKaon) signalGen = GenParamPionKaon();
+ else if (signal == kPythiaPerugia0BtoJpsi2mu) signalGen = MbPythiaTunePerugia0BtoJpsi2mu();
+ cocktail->AddGenerator(signalGen, "signal", 1);
+
+ cocktail->SetTrackingFlag(1);
+
+ return cocktail;
+
+}
+
+//====================================================================================================================================================
+
+AliGenerator* QEDGeneratorPbPb() {
+
+ AliGenEpEmv1 *generQED = new AliGenEpEmv1();
+ generQED->SetEnergyCMS(energy);
+ generQED->SetProjectile("A", 208, 82);
+ generQED->SetTarget ("A", 208, 82);
+ generQED->SetYRange(-8.5, 0.);
+ generQED->SetPtRange(0.4e-3, 1.0); // Set pt limits (GeV) for e+-
+ generQED->SetDebug(0); // Set debug level (0 = silent)
+
+}
+
+//====================================================================================================================================================
+
void LoadLibs() {
#if defined(__CINT__)
}
gSystem->Load("libgeant321");
-
+
+ gSystem->Load("libITSUpgradeBase");
+ gSystem->Load("libITSUpgradeSim");
+
#endif
}