AliGenerator* MbCocktail() { comment = comment.Append(" pp at 14 TeV: Pythia low-pt, no heavy quarks + J/Psi from parameterisation"); AliGenCocktail * gener = new AliGenCocktail(); gener->UsePerEventRates(); // Pythia AliGenPythia* pythia = new AliGenPythia(-1); pythia->SetMomentumRange(0, 999999.); pythia->SetThetaRange(0., 180.); pythia->SetYRange(-12.,12.); pythia->SetPtRange(0,1000.); pythia->SetProcess(kPyMb); pythia->SetEnergyCMS(14000.); pythia->SwitchHFOff(); // J/Psi parameterisation AliGenParam* jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF scaled", "Jpsi"); jpsi->SetPtRange(0.,100.); jpsi->SetYRange(-8., 8.); jpsi->SetPhiRange(0., 360.); jpsi->SetForceDecay(kAll); gener->AddGenerator(pythia, "Pythia", 1.); gener->AddGenerator(jpsi, "J/Psi", 8.e-4); return gener; }
AliGenerator* GeneratorCustom() { AliGenCocktail *ctl = GeneratorCocktail("Monash2013_RsnNcl002"); // pythia8 AliGenerator *py8 = GeneratorPythia8(kPythia8Tune_Monash2013); ctl->AddGenerator(py8, "Pythia8 (Monash2013)", 1.); // randomly injected particles const int nParticles = 10; particle_inj particleList[10] = { // {name,pdgcode,maxpt,maxy}, {1,"f2(1270)",225,15.,0.6}, {1,"Lambda(1520)",3124,15.,0.6}, {1,"Lambda_bar(1520)",-3124,15.,0.6}, {1,"f0(980)",9010221,15.,0.6}, {1,"Xi*0(1530)",3324,15.,0.6}, {1,"Xi*0_bar(1530)",-3324,15.,0.6}, {1,"Xi0(1820)",123324,15.,0.6}, {1,"Xi0_bar(1820)",-123324,15.,0.6}, {1,"Xi-(1820)",123314,15.,0.6}, {1,"Xi+(1820)",-123314,15.,0.6} }; AliDecayerPythia *dec = new AliDecayerPythia; AliPDG::AddParticlesToPdgDataBase(); ctl->UseSingleInjectionPerEvent(); for (int idx = 0; idx < nParticles; ++idx) { AliGenerator *inj = GeneratorParam(particleList[idx].n, particleList[idx].pdg, 0., particleList[idx].maxpt,-particleList[idx].maxy, particleList[idx].maxy,dec); ctl->AddGenerator(inj, (TString(particleList[idx].name) + " injector").Data(), 1.); } return ctl; }
/// \ingroup MC/CustomGenerators/DPG /// \brief Performance generator (ATO-245) AliGenerator * GeneratorCustom() { AliGenCocktail *ctl = GeneratorCocktail("Hijing+Generator for performance (tracking,PID) studies"); AliGenerator *hij = GeneratorHijing(); AliGenerator *genJet = PerformanceGenerator(); ctl->AddGenerator(hij, "Hijing", 1.); ctl->AddGenerator(genJet,"Generator for performance (tracking,PID) studies",1); return ctl; }
/// /// Main configuration method /// AliGenerator * GeneratorCustom (TString opt = "kFullDetector") { // Init cocktail AliGenCocktail *ctl = GeneratorCocktail(Form("Dpmjet_%s",processConfig.Data())); // // DPMjet // AliGenerator *dpm = GeneratorPhojet(); ctl->AddGenerator(dpm, "Dpmjet", 1.); // // PYTHIA // // acceptance Int_t acceptance = kCalorimeterAcceptance_FullDetector; if (opt.EqualTo("FullDetector")) acceptance = kCalorimeterAcceptance_FullDetector; if (opt.EqualTo("EMCRun1")) acceptance = kCalorimeterAcceptance_EMCRun1; if (opt.EqualTo("PHSRun1")) acceptance = kCalorimeterAcceptance_PHSRun1; if (opt.EqualTo("EMCRun2")) acceptance = kCalorimeterAcceptance_EMCRun2; if (opt.EqualTo("PHSRun2")) acceptance = kCalorimeterAcceptance_PHSRun2; if (opt.EqualTo("PHSDMC")) acceptance = kCalorimeterAcceptance_PHSDMC; // process AliGenerator *gammajet = 0; // PYTHIA6 if (processConfig.EqualTo("Pythia6Jets")) gammajet = GeneratorPythia6Jets (kPythia6Tune_Perugia2011, acceptance); if (processConfig.EqualTo("Pythia6GammaJet")) gammajet = GeneratorPythia6GammaJet (kPythia6Tune_Perugia2011, acceptance); if (processConfig.EqualTo("Pythia6JetsGammaTrg")) gammajet = GeneratorPythia6JetsGammaTrg (kPythia6Tune_Perugia2011, acceptance); // PYTHIA8 if (processConfig.EqualTo("Pythia8Jets")) gammajet = GeneratorPythia8Jets (kPythia8Tune_Monash2013 , acceptance); if (processConfig.EqualTo("Pythia8GammaJet")) gammajet = GeneratorPythia8GammaJet (kPythia8Tune_Monash2013 , acceptance); if (processConfig.EqualTo("Pythia8JetsGammaTrg")) gammajet = GeneratorPythia8JetsGammaTrg (kPythia8Tune_Monash2013 , acceptance); ctl->AddGenerator(gammajet, processConfig, 1.); return ctl; }
AliGenerator * GeneratorCustom() { AliGenCocktail *ctl = GeneratorCocktail("Perugia2011_Nuclex002"); AliGenerator *pyt = GeneratorPythia6(kPythia6Tune_Perugia2011); ctl->AddGenerator(pyt, "Pythia6", 1.); AliGenerator *nu1a = Generator_Nuclex(0x1F, kFALSE, 10); AliGenerator *nu1b = Generator_Nuclex(0x1F, kTRUE, 10); ctl->AddGenerator(nu1a, "Nuclex1a", 1.); ctl->AddGenerator(nu1b, "Nuclex1b", 1.); return ctl; }
AliGenerator * GeneratorCustom() { AliGenCocktail* cocktail = GeneratorCocktail("Hijing_Starlight"); AliGenerator* starlight = GeneratorStarlight(); cocktail->AddGenerator(starlight, "Starlight", 1.); AliGenerator* hijing = GeneratorHijing(); cocktail->AddGenerator(hijing, "Hijing", 1.); return cocktail; }
// Requires AliRoot from v5-09-02 AliGenerator * GeneratorCustom() { AliGenCocktail *ctl = GeneratorCocktail("Hijing_Nuclex005"); AliGenerator *hij = GeneratorHijing(); ctl->AddGenerator(hij, "Hijing", 1.); AliGenerator *nu1a = Generator_Nuclex(0x70000, kFALSE, 10); AliGenerator *nu1b = Generator_Nuclex(0x70000, kTRUE, 10); ctl->AddGenerator(nu1a, "Nuclex1a", 1.); ctl->AddGenerator(nu1b, "Nuclex1b", 1.); return ctl; }
AliGenerator * GeneratorCustom(TString opt = "") { AliGenCocktail *ctl = GeneratorCocktail("Hijing_HF"); AliGenerator *hij = GeneratorHijing(); ctl->AddGenerator(hij, "Hijing", 1.); // const Char_t *label[2][3] = { "chadr PYTHIA", "chadr PYTHIA", "cele PYTHIA", "bchadr PYTHIA", "bchadr PYTHIA", "bele PYTHIA" }; // Int_t process[2] = {kPythia6HeavyProcess_Charm, kPythia6HeavyProcess_Beauty}; Int_t iprocess = uidConfig % 2; // Int_t decay[3] = {kPythia6HeavyDecay_Hadrons, kPythia6HeavyDecay_HadronsWithV0, kPythia6HeavyDecay_Electron}; TString optList[3] = {"had", "hv0", "ele"}; Int_t idecay = 0; for (Int_t iopt = 0; iopt < 3; iopt++) if (opt.EqualTo(optList[iopt])) idecay = iopt; // AliGenerator *phf = GeneratorPythia6Heavy(process[iprocess], decay[idecay], kPythia6Tune_Perugia2011); // TFormula *formula = new TFormula("Signals","max(1.,80.*(1.-x/20.)*(x<9)+240.*(1.-x/13.)*(x>9.))"); // Float_t pth[4] = {2.76, 20., 50., 1000.}; Int_t ipt; if ((uidConfig / 2) % 10 < 7) ipt = 0; else if ((uidConfig / 2) % 10 < 9) ipt = 1; else ipt = 2; ((AliGenPythia *)phf)->SetPtHard(pth[ipt], pth[ipt + 1]); // ctl->AddGenerator(phf, label[iprocess][idecay], 1., formula); printf(">>>>> added HF generator %s \n", label[iprocess][idecay]); // add pi0 and eta enhancement if (decay[idecay] == kPythia6HeavyDecay_Electron) { TFormula* neutralsF = new TFormula("neutrals", "20.+ 80. * exp(- 0.5 * x * x / 5.12 / 5.12)"); AliGenPHOSlib *plib = new AliGenPHOSlib(); AliGenParam *pi0 = new AliGenParam(1, plib, AliGenPHOSlib::kPi0Flat); pi0->SetPhiRange(0., 360.) ; pi0->SetYRange(-1.2, 1.2) ; pi0->SetPtRange(0., 50.) ; ctl->AddGenerator(pi0, "pi0", 1., neutralsF); AliGenParam *eta = new AliGenParam(1, plib, AliGenPHOSlib::kEtaFlat); eta->SetPhiRange(0., 360.) ; eta->SetYRange(-1.2, 1.2) ; eta->SetPtRange(0., 50.) ; ctl->AddGenerator(eta, "eta", 1., neutralsF); } return ctl; }
AliGenerator * GeneratorCustom() { AliGenCocktail *ctl = GeneratorCocktail("Monash2013_Nuclex001"); // pythia8 AliGenerator *py8 = GeneratorPythia8(kPythia8Tune_Monash2013); ctl->AddGenerator(py8, "Pythia8 (Monash2013)", 1.); // AliGenerator *nu1a = Generator_Nuclex(0x7, kFALSE, 7,6.f,1.f); AliGenerator *nu1b = Generator_Nuclex(0x7, kTRUE, 7,6.f,1.f); ctl->AddGenerator(nu1a, "Nuclex1a", 1.); ctl->AddGenerator(nu1b, "Nuclex1b", 1.); return ctl; }
AliGenerator* JPsi7TeV() /*{ AliGenParam *jpsi7TeV = new AliGenParam(1, AliGenMUONlib::kJpsi,"CDF pp 7"); jpsi7TeV->SetMomentumRange(0,999); jpsi7TeV->SetPtRange(0,20.); jpsi7TeV->SetYRange(-4.2,-2.3); jpsi7TeV->SetPhiRange(0., 360.); jpsi7TeV->SetCutOnChild(1); jpsi7TeV->SetChildPhiRange(0.,360.); jpsi7TeV->SetChildThetaRange(0.,180.); jpsi7TeV->SetForceDecay(kDiMuon); jpsi7TeV->SetTrackingFlag(1); return jpsi7TeV; }*/ { comment = comment.Append(" pp at 7 TeV: Pythia low-pt, no heavy quarks + J/Psi from parameterisation"); AliGenCocktail * gener = new AliGenCocktail(); gener->UsePerEventRates(); // Pythia AliGenPythia* pythia = new AliGenPythia(-1); pythia->SetMomentumRange(0, 999999.); pythia->SetThetaRange(0., 180.); pythia->SetYRange(-12.,12.); pythia->SetPtRange(0,1000.); pythia->SetProcess(kPyMb); pythia->SetEnergyCMS(energy); pythia->SwitchHFOff(); // J/Psi parameterisation // AliGenParam* jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF scaled", "Jpsi"); AliGenParam* jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi,"CDF pp 7"); jpsi->SetPtRange(0.,100.); // jpsi->SetYRange(-8., 8.); jpsi->SetYRange(-1.5, 1.5); //this to speed up !!! jpsi->SetPhiRange(0., 360.); jpsi->SetForceDecay(kDiElectron); // this has to be changed to force J/psi->e+e- //gener->AddGenerator(jpsi, "J/Psi", 8.e-4); // expected yield gener->AddGenerator(jpsi, "J/Psi", 1.); // 1 J/psi per event gener->AddGenerator(pythia, "Pythia", 1.); return gener; }
AliGenerator * GeneratorCustom(TString opt = "") { TString optList[6] = {"", "a", "b", "c", "d", "e"}; Int_t ninjlist[6] = {1, 10, 5, 3, 2, 1}; Int_t iinj = 0; for (Int_t iopt = 0; iopt < 3; iopt++) if (opt.EqualTo(optList[iopt])) iinj = iopt; Int_t ninj = ninjlist[iinj]; AliGenCocktail *ctl = GeneratorCocktail("Hijing_Jets001"); AliGenerator *hij = GeneratorHijing(); ctl->AddGenerator(hij, "Hijing", 1.); AliGenerator *jet = GeneratorPythia8Jets(); ctl->AddGenerator(jet, "Jets", 1., new TFormula(Form("ninj_%d", ninj), Form("%d", ninj))); return ctl; }
AliGenerator* Hijing2000HF(Int_t typeHF) { comment = comment.Append(" PbPb: Hjing2000 + pythia events for HF signals"); AliGenCocktail *cocktail = new AliGenCocktail(); cocktail->SetProjectile("A", 208, 82); cocktail->SetTarget ("A", 208, 82); AliGenerator* pythiaHF = 0x0; // 20 Pythia events Int_t nPythia=20; for(Int_t i=0;i<nPythia; i++) { switch(typeHF) { case 0: pythiaHF = MbPythiaTunePerugia0chadr(); break; case 1: pythiaHF = MbPythiaTunePerugia0bchadr(); break; case 2: pythiaHF = MbPythiaTunePerugia0cele(); break; case 3: pythiaHF = MbPythiaTunePerugia0bele(); break; case 4: pythiaHF = MbPythiaTunePerugia0Jpsi2e(); break; case 5: pythiaHF = MbPythiaTunePerugia0BtoJpsi2e(); break; default: pythiaHF = MbPythiaTunePerugia0chadr(); break; } cocktail->AddGenerator(pythiaHF,"pythiaHF",1); } // 1 Hijing event AliGenHijing *hijing = Hijing2000(); cocktail->AddGenerator(hijing,"hijing",1); return cocktail; }
AliGenerator* MbPythiaTunePerugia0Jpsi() { comment = comment.Append("pp Cocktail: Pythia (Perugia0) + 1 Jpsi forced to dielectrons"); //Generating a cocktail AliGenCocktail *gener = new AliGenCocktail(); gener->UsePerEventRates(); // // Pythia AliGenPythia* pythia = new AliGenPythia(-1); pythia->SetMomentumRange(0, 999999.); pythia->SetThetaRange(0., 180.); pythia->SetYRange(-12.,12.); pythia->SetPtRange(0,1000.); pythia->SetProcess(kPyMb); pythia->SetEnergyCMS(energy); // Tune // 320 Perugia 0 pythia->SetTune(320); pythia->UseNewMultipleInteractionsScenario(); // // JPsi is the second ingredient of the cocktail //AliGenParam* jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF scaled", "Jpsi"); // 14 TeV AliGenParam* jpsi=0x0; 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 //AliGenParam* jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 7", "Jpsi"); // 7 TeV //AliGenParam* jpsi = new AliGenParam(1, AliGenMUONlib::kJpsi, "CDF pp 8.8", "Jpsi"); // 8.8 TeV jpsi->SetPtRange(0.,999.); jpsi->SetYRange(-1.0, 1.0); jpsi->SetPhiRange(0.,360.); //jpsi->SetChildYRange(-0.9,0.9); // decaying electrons should be in TRD acceptance jpsi->SetForceDecay(kDiElectron); jpsi->Init(); gener->AddGenerator(pythia, "Pythia", 1.); // 1 is weighting factor : Rate per event gener->AddGenerator(jpsi,"JPsi",1); // gener->Init(); return gener; }
AliGenerator *GeneratorCustom(){ int ninjxi = 3; int ninjom = 3; Int_t sign = uidConfig % 2 == 0 ? 1 : -1; AliGenCocktail *ctl = GeneratorCocktail("EPOS_StrInj_pPb8"); AliGenerator *epos = GeneratorEPOSLHC(); AliGenerator *ixi = GeneratorInjector(ninjxi, sign * 3312, 2., 20., -1.2, 1.2); AliGenerator *iom = GeneratorInjector(ninjom, (-1) * sign * 3334, 0., 10., -1.2, 1.2); ctl->AddGenerator(epos, "Epos", 1.); ctl->AddGenerator(ixi, "Injector (Xi)", 1.); ctl->AddGenerator(iom, "Injector (Omega)", 1.); return ctl; }
AliGenerator * GeneratorCustom() { AliGenCocktail *ctl = GeneratorCocktail("Perugia2011_Nuclex001"); AliGenerator *pyt = GeneratorPythia6(kPythia6Tune_Perugia2011); ctl->AddGenerator(pyt, "Pythia6", 1.); AliGenerator *nu1a = Generator_Nuclex(0xF, kFALSE, 10); AliGenerator *nu1b = Generator_Nuclex(0xF, kTRUE, 10); AliGenerator *nu2a = Generator_Nuclex(0x10, kFALSE, 40); AliGenerator *nu2b = Generator_Nuclex(0x10, kTRUE, 40); AliGenerator *nu3a = Generator_Nuclex(0xFE0, kFALSE, 20); AliGenerator *nu3b = Generator_Nuclex(0xFE0, kTRUE, 20); ctl->AddGenerator(nu1a, "Nuclex1a", 1.); ctl->AddGenerator(nu1b, "Nuclex1b", 1.); ctl->AddGenerator(nu2a, "Nuclex2a", 1.); ctl->AddGenerator(nu2b, "Nuclex2b", 1.); ctl->AddGenerator(nu3a, "Nuclex3a", 1.); ctl->AddGenerator(nu3b, "Nuclex3b", 1.); return ctl; }
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 * GeneratorCustom() { AliGenCocktail *ctl = GeneratorCocktail("EPOSLHC_Jpsiee002"); AliGenerator *epos = GeneratorEPOSLHC(); ctl->AddGenerator(epos, "EPOS-LHC", 1.); if (uidConfig % 10 < 7) { // (params, jpsifrac, lowfrac, highfrac, bfrac) AliGenerator *jpsi = Generator_Jpsiee("pPb 5.03", 0.7, 0.0, 0.3, 0.0); ctl->AddGenerator(jpsi, "Jpsi2ee", 1., NULL, 3); TFile *file = new TFile("typeHF_4.proc", "recreate"); file->Close(); } else { AliGenerator *bjpsi = Generator_Jpsiee("Pythia BBar", 0.0, 0.0, 0.0, 1.0); ctl->AddGenerator(bjpsi, "B2Jpsi2ee", 1., NULL, 1); TFile *file = new TFile("typeHF_5.proc", "recreate"); file->Close(); } return ctl; }
AliGenerator* Hijing2500Cocktail() { comment = comment.Append(" PbPb: Hjing2500 at 5.5 + muon signals"); AliGenCocktail *cocktail = new AliGenCocktail(); cocktail->SetProjectile("A", 208, 82); cocktail->SetTarget ("A", 208, 82); cocktail->SetEnergyCMS(energy); // 1 Hijing event: provides underlying event and collision geometry AliGenHijing *hijing = Hijing2500(); cocktail->AddGenerator(hijing,"hijing",1); // generator for the custom signal AliGenerator* signalGen = 0x0; switch (signal) { case 0: signalGen = GenBox(); break; case 1: signalGen = GenMuonLMR(); break; case 2: signalGen = GenCorrHF(); break; default: signalGen = GenBox(); break; } cocktail->AddGenerator(signalGen, "signal", 1); cocktail->SetTrackingFlag(1); return cocktail; }
void Config() { // ThetaRange is (0., 180.). It was (0.28,179.72) 7/12/00 09:00 // Theta range given through pseudorapidity limits 22/6/2001 // Set Random Number seed //gRandom->SetSeed(123456); // Set 0 to use the current time AliLog::Message(AliLog::kInfo, Form("Seed for random number generation = %d",gRandom->GetSeed()), "Config.C", "Config.C", "Config()","Config.C", __LINE__); new TGeant3TGeo("C++ Interface to Geant3"); AliRunLoader* rl=0x0; AliLog::Message(AliLog::kInfo, "Creating Run Loader", "Config.C", "Config.C", "Config()"," Config.C", __LINE__); rl = AliRunLoader::Open("galice.root", AliConfig::GetDefaultEventFolderName(), "recreate"); if (rl == 0x0) { gAlice->Fatal("Config.C","Can not instatiate the Run Loader"); return; } rl->SetCompressionLevel(2); rl->SetNumberOfEventsPerFile(3); gAlice->SetRunLoader(rl); // gAlice->SetGeometryFromFile("geometry.root"); // Uncomment if you want to load geometry from OCDB! >>>> /* if(!AliCDBManager::Instance()->IsDefaultStorageSet()){ cout << "#####################################################" << endl; cout << "# #" << endl; cout << "# WARNING: CDB DEFAULT STORAGE NOT SET !!! #" << endl; cout << "# SETTING IT TO local://$ALICE_ROOT/OCDB !!! #" << endl; cout << "# #" << endl; cout << "#####################################################" << endl; AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); } if(AliCDBManager::Instance()->GetRun() < 0){ cout << "#####################################################" << endl; cout << "# #" << endl; cout << "# WARNING: RUN NUMBER NOT SET !!! #" << endl; cout << "# SETTING IT TO 0 !!! #" << endl; cout << "# #" << endl; cout << "#####################################################" << endl; AliCDBManager::Instance()->SetRun(0); } gAlice->SetGeometryFromCDB(); */ // Set the trigger configuration AliSimulation::Instance()->SetTriggerConfig(pprTrigConfName[strig]); cout<<"Trigger configuration is set to "<<pprTrigConfName[strig]<<endl; // // Set External decayer TVirtualMCDecayer *decayer = new AliDecayerPythia(); decayer->SetForceDecay(kAll); decayer->Init(); gMC->SetExternalDecayer(decayer); //======================================================================= // ************* STEERING parameters FOR ALICE SIMULATION ************** // --- Specify event type to be tracked through the ALICE setup // --- All positions are in cm, angles in degrees, and P and E in GeV gMC->SetProcess("DCAY",1); gMC->SetProcess("PAIR",1); gMC->SetProcess("COMP",1); gMC->SetProcess("PHOT",1); gMC->SetProcess("PFIS",0); gMC->SetProcess("DRAY",0); gMC->SetProcess("ANNI",1); gMC->SetProcess("BREM",1); gMC->SetProcess("MUNU",1); gMC->SetProcess("CKOV",1); gMC->SetProcess("HADR",1); gMC->SetProcess("LOSS",2); gMC->SetProcess("MULS",1); gMC->SetProcess("RAYL",1); Float_t cut = 1.e-3; // 1MeV cut by default Float_t tofmax = 1.e10; gMC->SetCut("CUTGAM", cut); gMC->SetCut("CUTELE", cut); gMC->SetCut("CUTNEU", cut); gMC->SetCut("CUTHAD", cut); gMC->SetCut("CUTMUO", cut); gMC->SetCut("BCUTE", cut); gMC->SetCut("BCUTM", cut); gMC->SetCut("DCUTE", cut); gMC->SetCut("DCUTM", cut); gMC->SetCut("PPCUTM", cut); gMC->SetCut("TOFMAX", tofmax); int nParticles = 100; if (gSystem->Getenv("CONFIG_NPARTICLES")) { nParticles = atoi(gSystem->Getenv("CONFIG_NPARTICLES")); } AliGenCocktail *gener = new AliGenCocktail(); gener->SetPhiRange(0, 360); // Set pseudorapidity range from -8 to 8. Float_t thmin = EtaToTheta(8); // theta min. <---> eta max Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min gener->SetThetaRange(thmin,thmax); gener->SetOrigin(0, 0, 0); //vertex position gener->SetSigma(0, 0, 0); //Sigma in (X,Y,Z) (cm) on IP position AliGenUHKM *tuhkMgen = new AliGenUHKM(nParticles); tuhkMgen->SetAllParametersLHC(); gener->AddGenerator(tuhkMgen,"TUHKM",1); gener->Init(); // // Activate this line if you want the vertex smearing to happen // track by track // //gener->SetVertexSmear(perTrack); // Field (L3 0.4 T) TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG)); Int_t iABSO = 1; Int_t iDIPO = 1; Int_t iFMD = 1; Int_t iFRAME = 1; Int_t iHALL = 1; Int_t iITS = 1; Int_t iMAG = 1; Int_t iMUON = 1; Int_t iPHOS = 1; Int_t iPIPE = 1; Int_t iPMD = 1; Int_t iHMPID = 1; Int_t iSHIL = 1; Int_t iT0 = 1; Int_t iTOF = 1; Int_t iTPC = 1; Int_t iTRD = 1; Int_t iZDC = 1; Int_t iEMCAL = 1; Int_t iACORDE = 1; Int_t iVZERO = 1; rl->CdGAFile(); //=================== Alice BODY parameters ============================= AliBODY *BODY = new AliBODY("BODY", "Alice envelop"); if (iMAG) { //=================== MAG parameters ============================ // --- Start with Magnet since detector layouts may be depending --- // --- on the selected Magnet dimensions --- AliMAG *MAG = new AliMAG("MAG", "Magnet"); } if (iABSO) { //=================== ABSO parameters ============================ AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber"); } if (iDIPO) { //=================== DIPO parameters ============================ AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3"); } if (iHALL) { //=================== HALL parameters ============================ AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall"); } if (iFRAME) { //=================== FRAME parameters ============================ AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame"); FRAME->SetHoles(1); } if (iSHIL) { //=================== SHIL parameters ============================ AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3"); } if (iPIPE) { //=================== PIPE parameters ============================ AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe"); } if (iITS) { //=================== ITS parameters ============================ AliITS *ITS = new AliITSv11("ITS","ITS v11"); } if (iTPC) { //============================ TPC parameters =================== AliTPC *TPC = new AliTPCv2("TPC", "Default"); } if (iTOF) { //=================== TOF parameters ============================ AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF"); } if (iHMPID) { //=================== HMPID parameters =========================== AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID"); } if (iZDC) { //=================== ZDC parameters ============================ AliZDC *ZDC = new AliZDCv4("ZDC", "normal ZDC"); } if (iTRD) { //=================== TRD parameters ============================ AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator"); AliTRDgeometry *geoTRD = TRD->GetGeometry(); // Partial geometry: modules at 0,1,7,8,9,10,17 // starting at 3h in positive direction geoTRD->SetSMstatus(2,0); geoTRD->SetSMstatus(3,0); geoTRD->SetSMstatus(4,0); geoTRD->SetSMstatus(5,0); geoTRD->SetSMstatus(6,0); geoTRD->SetSMstatus(11,0); geoTRD->SetSMstatus(12,0); geoTRD->SetSMstatus(13,0); geoTRD->SetSMstatus(14,0); geoTRD->SetSMstatus(15,0); geoTRD->SetSMstatus(16,0); } if (iFMD) { //=================== FMD parameters ============================ AliFMD *FMD = new AliFMDv1("FMD", "normal FMD"); } if (iMUON) { //=================== MUON parameters =========================== // New MUONv1 version (geometry defined via builders) AliMUON *MUON = new AliMUONv1("MUON","default"); } //=================== PHOS parameters =========================== if (iPHOS) { AliPHOS *PHOS = new AliPHOSv1("PHOS", "Run1"); } if (iPMD) { //=================== PMD parameters ============================ AliPMD *PMD = new AliPMDv1("PMD", "normal PMD"); } if (iT0) { //=================== T0 parameters ============================ AliT0 *T0 = new AliT0v1("T0", "T0 Detector"); } if (iEMCAL) { //=================== EMCAL parameters ============================ AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETEV1"); } if (iACORDE) { //=================== ACORDE parameters ============================ AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); } if (iVZERO) { //=================== VZERO parameters ============================ AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); } AliLog::Message(AliLog::kInfo, "End of Config", "Config.C", "Config.C", "Config()"," Config.C", __LINE__); }
void Config() { // Get settings from environment variables ProcessEnvironmentVars(); gRandom->SetSeed(seed); cerr<<"Seed for random number generation= "<<seed<<endl; // Libraries required by geant321 #if defined(__CINT__) gSystem->Load("liblhapdf"); // Parton density functions gSystem->Load("libEG"); gSystem->Load("libEGPythia6"); // TGenerator interface gSystem->Load("libpythia6"); // Pythia gSystem->Load("libAliPythia6"); // ALICE specific implementations gSystem->Load("libgeant321"); gSystem->Load("libTTherminator"); #endif new TGeant3TGeo("C++ Interface to Geant3"); //======================================================================= // Create the output file AliRunLoader* rl=0;; cout<<"Config.C: Creating Run Loader ..."<<endl; // rl = AliRunLoader::Open("galice.root"); rl = AliRunLoader::Open("galice.root", AliConfig::GetDefaultEventFolderName(), "recreate"); if (rl == 0x0) { gAlice->Fatal("Config.C","Can not instatiate the Run Loader"); return; } rl->SetCompressionLevel(2); rl->SetNumberOfEventsPerFile(10000); gAlice->SetRunLoader(rl); // Set the trigger configuration if ((embedrun == kBackground) || (embedrun == kMerged)) { // AliSimulation::Instance()->SetTriggerConfig("Pb-Pb"); AliSimulation::Instance()->SetTriggerConfig(""); cout<<"Trigger configuration is set to Pb-Pb"<<endl; } else { // Set the trigger configuration: proton-proton // AliSimulation::Instance()->SetTriggerConfig("p-p"); AliSimulation::Instance()->SetTriggerConfig("Pb-Pb"); cout<<"Trigger configuration is set to Pb-Pb"<<endl; } // // Set External decayer TVirtualMCDecayer *decayer = new AliDecayerPythia(); decayer->SetForceDecay(kAll); decayer->Init(); gMC->SetExternalDecayer(decayer); //======================================================================= // ************* STEERING parameters FOR ALICE SIMULATION ************** // --- Specify event type to be tracked through the ALICE setup // --- All positions are in cm, angles in degrees, and P and E in GeV gMC->SetProcess("DCAY",1); gMC->SetProcess("PAIR",1); gMC->SetProcess("COMP",1); gMC->SetProcess("PHOT",1); gMC->SetProcess("PFIS",0); gMC->SetProcess("DRAY",0); gMC->SetProcess("ANNI",1); gMC->SetProcess("BREM",1); gMC->SetProcess("MUNU",1); gMC->SetProcess("CKOV",1); gMC->SetProcess("HADR",1); gMC->SetProcess("LOSS",2); gMC->SetProcess("MULS",1); gMC->SetProcess("RAYL",1); Float_t cut = 1.e-3; // 1MeV cut by default Float_t tofmax = 1.e10; gMC->SetCut("CUTGAM", cut); gMC->SetCut("CUTELE", cut); gMC->SetCut("CUTNEU", cut); gMC->SetCut("CUTHAD", cut); gMC->SetCut("CUTMUO", cut); gMC->SetCut("BCUTE", cut); gMC->SetCut("BCUTM", cut); gMC->SetCut("DCUTE", cut); gMC->SetCut("DCUTM", cut); gMC->SetCut("PPCUTM", cut); gMC->SetCut("TOFMAX", tofmax); //======================// // Set External decayer // //======================// TVirtualMCDecayer* decayer = new AliDecayerPythia(); decayer->SetForceDecay(kAll); decayer->Init(); gMC->SetExternalDecayer(decayer); if ((embedrun == kMerged) || (embedrun == kSignal) || (embedrun == kBackground)) { //=========================// // Generator Configuration // //=========================// AliGenerator* gener = 0x0; if (proc == kPythia6) { gener = MbPythia(); } else if (proc == kPhojet) { gener = MbPhojet(); } else if (proc == kJPsiPbPb) { gener = JPsiPbPb(); } else if (proc == kJPsiPbPb2760) { gener = JPsiPbPb2760(); } else if (proc == kJPsiHptPbPb2760) { gener = JPsiHptPbPb2760(); } else if (proc == kBSignalPbPb2760) { gener = BSignalPbPb2760(); } } else { AliGenCocktail *gener = new AliGenCocktail(); gener->SetPhiRange(0, 360); // Set pseudorapidity range from -8 to 8. Float_t thmin = EtaToTheta(1); // theta min. <---> eta max Float_t thmax = EtaToTheta(-1); // theta max. <---> eta min gener->SetThetaRange(thmin,thmax); gener->SetProjectile("A",208,82); gener->SetTarget("A",208,82); AliGenTherminator *genther = new AliGenTherminator(); genther->SetFileName("event.out"); genther->SetEventNumberInFile(1); genther->SetTemperature(0.145); genther->SetMiuI(-0.0009); genther->SetMiuS(0.000); genther->SetMiuB(0.0008); genther->SetAlfaRange(8.0); genther->SetRapRange(4.0); genther->SetRhoMax(7.74); genther->SetTau(9.74); genther->SetModel("Lhyquid3D"); genther->SetLhyquidSet("LHC500C2030"); gener->AddGenerator(genther, "THERMINATOR LHYQUID3D", 1); } /* // PRIMARY VERTEX // gener->SetOrigin(0., 0., 0.); // vertex position // // // Size of the interaction diamond // Longitudinal Float_t sigmaz; if (embedrun == kBackground) { sigmaz = 7.55 / TMath::Sqrt(2.); // [cm] } else { Float_t sigmaz = 5.4 / TMath::Sqrt(2.); // [cm] if (energy == 900) sigmaz = 10.5 / TMath::Sqrt(2.); // [cm] } // // Transverse Float_t betast = 10; // beta* [m] Float_t eps = 3.75e-6; // emittance [m] Float_t gamma = energy / 2.0 / 0.938272; // relativistic gamma [1] Float_t sigmaxy = TMath::Sqrt(eps * betast / gamma) / TMath::Sqrt(2.) * 100.; // [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->SetCutVertexZ(3.); // Truncate at 3 sigma gener->SetVertexSmear(kPerEvent); */ // PRIMARY VERTEX (will be overwritten by ip from real event) // gener->SetOrigin(0., 0., 0.); // vertex position gener->SetSigma(0., 0., 0.); //Sigma in (X,Y,Z) (cm) on IP position gener->Init(); /* // Taken from GRP instead // FIELD // // Field // AliMagF* field = 0x0; if (mag == kNoField) { comment = comment.Append(" | L3 field 0.0 T"); TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 0., 0., AliMagF::k5kGUniform)); } else if (mag == k5kG) { comment = comment.Append(" | L3 field 0.5 T"); TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG)); } printf("\n \n Comment: %s \n \n", comment.Data()); // TGeoGlobalMagField::Instance()->SetField(field); */ rl->CdGAFile(); Int_t iABSO = 1; Int_t iACORDE= 0; Int_t iDIPO = 1; Int_t iEMCAL = 0; Int_t iFMD = 1; Int_t iFRAME = 1; Int_t iHALL = 1; Int_t iITS = 1; Int_t iMAG = 1; Int_t iMUON = 1; Int_t iPHOS = 0; Int_t iPIPE = 1; Int_t iPMD = 0; Int_t iHMPID = 0; Int_t iSHIL = 1; Int_t iT0 = 0; Int_t iTOF = 0; Int_t iTPC = 0; Int_t iTRD = 0; Int_t iVZERO = 1; Int_t iZDC = 0; //=================== Alice BODY parameters ============================= AliBODY *BODY = new AliBODY("BODY", "Alice envelop"); if (iMAG) { //=================== MAG parameters ============================ // --- Start with Magnet since detector layouts may be depending --- // --- on the selected Magnet dimensions --- AliMAG *MAG = new AliMAG("MAG", "Magnet"); } if (iABSO) { //=================== ABSO parameters ============================ AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber"); } if (iDIPO) { //=================== DIPO parameters ============================ AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3"); } if (iHALL) { //=================== HALL parameters ============================ AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall"); } if (iFRAME) { //=================== FRAME parameters ============================ AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame"); FRAME->SetHoles(1); } if (iSHIL) { //=================== SHIL parameters ============================ AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3"); } if (iPIPE) { //=================== PIPE parameters ============================ AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe"); } if (iITS) { //=================== ITS parameters ============================ // AliITS *ITS = new AliITSv11Hybrid("ITS","ITS v11Hybrid"); AliITS *ITS = new AliITSv11("ITS","ITS v11"); } if (iTPC) { //============================ TPC parameters ===================== AliTPC *TPC = new AliTPCv2("TPC", "Default"); } if (iTOF) { //=================== TOF parameters ============================ AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF"); } if (iHMPID) { //=================== HMPID parameters =========================== AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID"); } if (iZDC) { //=================== ZDC parameters ============================ AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC"); } if (iTRD) { //=================== TRD parameters ============================ AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator"); } if (iFMD) { //=================== FMD parameters ============================ AliFMD *FMD = new AliFMDv1("FMD", "normal FMD"); } if (iMUON) { //=================== MUON parameters =========================== // New MUONv1 version (geometry defined via builders) const char* digitstore="AliMUONDigitStoreV2S"; AliMUON *MUON = new AliMUONv1("MUON", "default"); // activate trigger efficiency by cells MUON->SetTriggerEffCells(1); if (embedrun == kBackground) { digitstore="AliMUONDigitStoreV2R"; MUON->SetConvertTrigger(true); } MUON->SetDigitStoreClassName(digitstore); cout << "MUON DigitStore is " << MUON->DigitStoreClassName().Data() << endl; // Noise-only digits in tracker/trigger (0=no noise, 1=default (noise in tracker), 2=noise in tracker and trigger): cout << "****** DISABLING NOISE GENERATION AS WE DO EMBEDDING ******" << endl; MUON->SetDigitizerWithNoise(0); } if (iPHOS) { //=================== PHOS parameters =========================== AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP"); } if (iPMD) { //=================== PMD parameters ============================ AliPMD *PMD = new AliPMDv1("PMD", "normal PMD"); } if (iT0) { //=================== T0 parameters ============================ AliT0 *T0 = new AliT0v1("T0", "T0 Detector"); } if (iEMCAL) { //=================== EMCAL parameters ============================ AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETE"); } if (iACORDE) { //=================== ACORDE parameters ============================ AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); } if (iVZERO) { //=================== ACORDE parameters ============================ AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); } }