kPythiaPerugia0BtoJpsi2mu,
kHijing,
kHijing2500,
- kHijing2500Cocktail};
+ kHijing2500Cocktail,
+ kCocktailSignals};
const Char_t* pprRunName[] = {"kGenBox",
"kGenMuonLMR",
"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 = 5500.; // energy in CMS
static Float_t bMin = 0.;
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");
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);
+ AliPIPE *PIPE = new AliPIPEv4("PIPE", "Beam Pipe");
}
if (iZDC) {
AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC");
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;
gener->SetYRange(-4.5, -2.0);
gener->SetChildThetaRange(171.0,178.0);
gener->SetChildMomentumRange(4.0, 999.);
- gener->SetOrigin(0.0, 0.0, 0.0); // vertex position
- gener->SetSigma(0.0, 0.0, 0.0); // vertex position smearing
enum {kEta2Body, kEtaDalitz, kRho2Body, kOmega2Body, kOmegaDalitz, kPhi2Body, kEtaPrimeDalitz, kPionLMR, kKaonLMR};
gener->GenerateSingleProcess(kOmega2Body, 10);
gener->SetCutOnChild(1);
gener->SetYRange(-4.0, -2.5);
gener->SetPhiRange(0., 360.);
gener->SetChildThetaRange(171.0,177.0);
- gener->SetChildMomentumRange(5.0, 999.);
- gener->SetOrigin(0.0, 0.0, 0.0); // vertex position
- gener->SetSigma(0.0, 0.0, 0.0); // Sigma in (X,Y,Z) (cm) on IP position
+ gener->SetChildMomentumRange(4.0, 999.);
gener->SetForceDecay(kDiMuon);
gener->SetTrackingFlag(1);
gener->SetCutOnChild(1);
gener->SetPtRange(0, 5.);
gener->SetPhiRange(0., 360.);
gener->SetYRange(-10., 0.);
- gener->SetOrigin(0.0, 0.0, 0.0); // vertex position
- gener->SetSigma(0.0, 0.0, 0.0); // vertex position smearing
// gener->SetCutOnChild(1);
return gener;
gener->SetCutOnChild(1); // 1/0 means cuts on children enable/disable
gener->SetChildThetaRange(171.0,178.0);
gener->SetChildMomentumRange(4.0, 999.);
- gener->SetOrigin(0,0,0); //vertex position
gener->SetForceDecay(kSemiMuonic);
gener->SetTrackingFlag(1);
gener->Init();
jpsi->SetPtRange(0.,999.);
jpsi->SetYRange(-1.0, 1.0);
jpsi->SetPhiRange(0.,360.);
- jpsi->SetOrigin(0,0,0);
jpsi->SetForceDecay(kDiMuon);
return jpsi;
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
}