AliGenerator * GeneratorCustom() { comment = comment.Append(" pp: Pythia 6 (Perugia2011 tune) high mult"); AliGenPythia* pythia = (AliGenPythia*)GeneratorPythia6(kPythia6Tune_Perugia2011); // multiplicity threshold set to 60 in |eta| < 1.4 pythia->SetTriggerChargedMultiplicity(60, 1.4); return pythia; }
AliGenerator* MbPythiaTuneATLAS_Flat() { AliGenPythia* pythia = MbPythiaTuneATLAS(); comment = comment.Append("; flat multiplicity distribution"); // set high multiplicity trigger // this weight achieves a flat multiplicity distribution Double_t cont[] = {0, 0.234836, 0.103484, 0.00984802, 0.0199906, 0.0260018, 0.0208481, 0.0101477, 0.00146998, -0.00681513, -0.0114928, -0.0113352, -0.0102012, -0.00895238, -0.00534961, -0.00261648, -0.000819048, 0.00130816, 0.00177978, 0.00373838, 0.00566255, 0.00628156, 0.00687458, 0.00668017, 0.00702917, 0.00810848, 0.00876167, 0.00832783, 0.00848518, 0.0107709, 0.0106849, 0.00933702, 0.00912525, 0.0106553, 0.0102785, 0.0101756, 0.010962, 0.00957103, 0.00970448, 0.0117133, 0.012271, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0.0113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; Double_t err[] = {0, 0.00168216, 0.000743548, 0.00103125, 0.00108605, 0.00117101, 0.00124577, 0.00129119, 0.00128341, 0.00121421, 0.00112431, 0.00100588, 0.000895078, 0.000790314, 0.000711673, 0.000634547, 0.000589133, 0.000542763, 0.000509552, 0.000487375, 0.000468906, 0.000460196, 0.000455806, 0.00044843, 0.000449317, 0.00045007, 0.000458016, 0.000461167, 0.000474742, 0.00050161, 0.00051637, 0.000542336, 0.000558854, 0.000599169, 0.000611982, 0.000663855, 0.000696322, 0.000722825, 0.000771686, 0.000838023, 0.000908317, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0.0003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; TH1F *weight = new TH1F("newweight","newweight",120,-0.5,119.5); weight->SetContent(cont); weight->SetError(err); Int_t limit = weight->GetRandom(); pythia->SetTriggerChargedMultiplicity(limit, 1.4); comment = comment.Append(Form("; multiplicity threshold set to %d in |eta| < 1.4", limit)); return pythia; }
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* CreateGenerator(Tune_t tune, Float_t energy) { if (tune == -1) { // phojet AliGenDPMjet* gener = new AliGenDPMjet(1); gener->SetProcess(kDpmMb); gener->SetProjectile("P", 1, 1); gener->SetTarget("P", 1, 1); gener->SetEnergyCMS(energy); return gener; } if (tune != kPyTuneAtlasCSC && tune != kPyTuneCDFA && tune != kPyTuneCMS6D6T && tune != kPyTunePerugia0) { Printf("Unknown pythia tune, quitting"); exit(1); } else { AliGenPythia * gener = new AliGenPythia(1); // // set pythia tune gener->SetTune(tune); // structure function if(tune == kPyTuneAtlasCSC) { cout << "Setting structure function" << endl; gener->SetStrucFunc(kCTEQ61); } if(tune == kPyTuneCMS6D6T) { cout << "Setting structure function" << endl; gener->SetStrucFunc(kCTEQ6l); } if(tune == kPyTunePerugia0) { cout << "Setting new parton shower" << endl; gener->UseNewMultipleInteractionsScenario(); } // charm, beauty, charm_unforced, beauty_unforced, jpsi, jpsi_chi, mb gener->SetProcess(kPyMb); // Centre of mass energy gener->SetEnergyCMS(energy); // Set target/projectile // Is this needded? gener->SetProjectile("P", 1, 1); gener->SetTarget("P", 1, 1); return gener; } }
AliGenerator* MbPythia() { comment = comment.Append(" pp: Pythia low-pt"); // Pythia AliGenPythia* pythia = new AliGenPythia(-1); pythia->SetMomentumRange(0, 999999.); // pythia->SetThetaRange(0., 180.); // pythia->SetChildYRange(-12.,0.); // pythia->SetPtRange(0,1000.); // pythia->SetCutOnChild(1); pythia->SetProcess(kPyMb); pythia->SetEnergyCMS(energy); pythia->SetForceDecay(kSemiMuonic); return pythia; }
AliGenerator* PyMbTriggered(Int_t pdg) { 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->SetTriggerParticle(pdg, 0.9); return pythia; }
AliGenerator* MbPythiaTunePerugia0() { comment = comment.Append(" pp: Pythia low-pt (Perugia0)"); // // 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(); pythia->SetCrossingAngle(0,0.000280); // return pythia; }
AliGenerator* MbPythiaTunePerugia0bchadr() { comment = comment.Append(" pp: Pythia (Perugia0) bchadr (1 bbbar per event, 1 c-hadron in |y|<1, chadrons decay to hadrons"); // // Pythia AliGenPythia* pythia = new AliGenPythia(-1); pythia->SetMomentumRange(0, 999999.); pythia->SetThetaRange(0., 180.); pythia->SetYRange(-1.,1.); pythia->SetPtRange(0,1000.); pythia->SetProcess(kPyBeautyppMNRwmi); pythia->SetEnergyCMS(energy); // Tune // 320 Perugia 0 pythia->SetTune(320); pythia->UseNewMultipleInteractionsScenario(); // // decays pythia->SetForceDecay(kHadronicD); return pythia; }
AliGenerator* MbPythiaTuneATLAS() { comment = comment.Append(" pp: Pythia low-pt"); // // 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 // C 306 ATLAS-CSC: Arthur Moraes' (new) ATLAS tune (needs CTEQ6L externally) pythia->SetTune(306); pythia->SetStrucFunc(kCTEQ6l); // return pythia; }
AliGenerator* MbPythiaTuneD6T() { comment = comment.Append(" pp: Pythia low-pt"); // // 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 // 109 D6T : Rick Field's CDF Tune D6T (NB: needs CTEQ6L pdfs externally) pythia->SetTune(109); // F I X pythia->SetStrucFunc(kCTEQ6l); // return pythia; }
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* 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* MbPythia() { comment = comment.Append(" pp: Pythia low-pt"); // // 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); return pythia; }
AliGenerator* MbPythiaTunePerugia0BtoJpsi2mu() { 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->SetYRange(-4.5, -2.0); pythia->SetPtRange(0,1000.); pythia->SetProcess(kPyBeautyppMNRwmi); pythia->SetEnergyCMS(energy); // Tune // 320 Perugia 0 pythia->SetTune(320); pythia->UseNewMultipleInteractionsScenario(); // // decays pythia->SetCutOnChild(1); pythia->SetPdgCodeParticleforAcceptanceCut(443); pythia->SetChildYRange(-4.5, -2.0); pythia->SetChildPtRange(0,10000.); // // decays pythia->SetForceDecay(kBJpsiDiMuon); return pythia; }
AliGenPythia *PythiaHard(PDC07Proc_t proc) { //*******************************************************************// // Configuration file for hard QCD processes generation with PYTHIA // // // //*******************************************************************// AliGenPythia * gener = 0x0; switch(proc) { case kPyJetJet: comment = comment.Append(" pp->jet + jet over at 14 TeV, no restriction"); AliGenPythia * gener = new AliGenPythia(nEvts); gener->SetEnergyCMS(eCMS);// Centre of mass energy gener->SetProcess(kPyJets);// Process type gener->SetJetEtaRange(-1.5, 1.5);// Final state kinematic cuts gener->SetJetPhiRange(0., 360.); gener->SetJetEtRange(10., 1000.); gener->SetPtHard(ptHardMin, ptHardMax);// Pt transfer of the hard scattering gener->SetStrucFunc(kCTEQ4L); return gener; case kPyGammaJetPHOS: comment = comment.Append(" pp->jet + gamma over PHOS"); gener = new AliGenPythia(nEvts); gener->SetEnergyCMS(eCMS); gener->SetProcess(kPyDirectGamma); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(ptHardMin,ptHardMax); //gener->SetYHard(-1.0,1.0); gener->SetGammaEtaRange(-0.13,0.13); gener->SetGammaPhiRange(218.,322.);//Over 5 modules +-2 deg break; case kPyJetJetPHOS: comment = comment.Append(" pp->jet + jet over PHOS"); gener = new AliGenPythia(nEvts); gener->SetEnergyCMS(eCMS); gener->SetProcess(kPyJets); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(ptHardMin,ptHardMax); //gener->SetYHard(-1.0,1.0); gener->SetJetEtaRange(-1.,1.); gener->SetJetPhiRange(200.,340.); gener->SetPi0InPHOS(kTRUE); gener->SetFragPhotonOrPi0MinPt(ptGammaPi0Min); printf("\n \n Event generator: Minimum pT of particle in calorimeter %f \n \n", ptGammaPi0Min); break; case kPyGammaBremsPHOS: comment = comment.Append(" pp->jet + jet+bremsphoton over PHOS at 14 TeV"); gener = new AliGenPythia(nEvts); gener->SetEnergyCMS(eCMS); gener->SetProcess(kPyJets); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(ptHardMin,ptHardMax); //gener->SetYHard(-1.0,1.0); gener->SetJetEtaRange(-1.,1.); gener->SetJetPhiRange(200.,340.); gener->SetFragPhotonInPHOS(kTRUE); gener->SetFragPhotonOrPi0MinPt(ptGammaPi0Min); printf("\n \n Event generator: Minimum pT of particle in calorimeter %f \n \n", ptGammaPi0Min); break; case kPyJetJetPHOSv2: comment = comment.Append(" pp->jet + jet over PHOS version2 "); gener = new AliGenPythia(nEvts); gener->SetEnergyCMS(eCMS); gener->SetProcess(kPyJets); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(ptHardMin,ptHardMax); //gener->SetYHard(-1.0,1.0); gener->SetJetEtaRange(-1.,1.); gener->SetJetPhiRange(200.,340.); //gener->SetPi0InPHOS(kTRUE); gener->SetPhotonInPHOSeta(kTRUE); gener->SetPhotonMinPt(ptGammaPi0Min); gener->SetForceDecay(kAll); break; case kPyGammaJetEMCAL: comment = comment.Append(" pp->jet + gamma over EMCAL at 14 TeV"); gener = new AliGenPythia(nEvts); gener->SetEnergyCMS(eCMS); gener->SetProcess(kPyDirectGamma); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(ptHardMin,ptHardMax); //gener->SetYHard(-1.0,1.0); gener->SetGammaEtaRange(-0.71,0.71); gener->SetGammaPhiRange(78.,192.);//Over 6 supermodules +-2 deg break; case kPyJetJetEMCAL: comment = comment.Append(" pp->jet + jet over EMCAL at 14 TeV"); gener = new AliGenPythia(nEvts); gener->SetEnergyCMS(eCMS); gener->SetProcess(kPyJets); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(ptHardMin,ptHardMax); //gener->SetYHard(-1.0,1.0); gener->SetJetEtaRange(-1,1); gener->SetJetPhiRange(60.,210.); gener->SetPi0InEMCAL(kTRUE); gener->SetFragPhotonOrPi0MinPt(ptGammaPi0Min); printf("\n \n Event generator: Minimum pT of particle in calorimeter %f \n \n", ptGammaPi0Min); break; case kPyGammaBremsEMCAL: comment = comment.Append(" pp->jet + jet+bremsphoton over EMCAL at 14 TeV"); gener = new AliGenPythia(nEvts); gener->SetEnergyCMS(eCMS); gener->SetProcess(kPyJets); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(ptHardMin,ptHardMax); //gener->SetYHard(-1.0,1.0); gener->SetJetEtaRange(-1,1); gener->SetJetPhiRange(60.,210.); //Over 2 uncovered PHOS modules gener->SetFragPhotonInEMCAL(kTRUE); gener->SetFragPhotonOrPi0MinPt(ptGammaPi0Min); printf("\n \n Event generator: Minimum pT of particle in calorimeter %f \n \n", ptGammaPi0Min); break; } return gener; }
AliGenPythia *PythiaHVQ(PDC07Proc_t proc) { //*******************************************************************// // Configuration file for charm / beauty generation with PYTHIA // // // // The parameters have been tuned in order to reproduce the inclusive// // heavy quark pt distribution given by the NLO pQCD calculation by // // Mangano, Nason and Ridolfi. // // // // 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]; // // PPR Chapter 6.6, CERN/LHCC 2005-030 (2005). // //*******************************************************************// AliGenPythia * gener = 0x0; switch(proc) { case kCharmPbPb5500: comment = comment.Append(" Charm in Pb-Pb at 5.5 TeV"); gener = new AliGenPythia(nEvts); gener->SetProcess(kPyCharmPbPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); gener->SetEnergyCMS(5500.); gener->SetNuclei(208,208); break; case kCharmpPb8800: comment = comment.Append(" Charm in p-Pb at 8.8 TeV"); gener = new AliGenPythia(nEvts); gener->SetProcess(kPyCharmpPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); gener->SetEnergyCMS(8800.); gener->SetProjectile("P",1,1); gener->SetTarget("Pb",208,82); break; case kCharmpp14000: comment = comment.Append(" Charm in pp at 14 TeV"); gener = new AliGenPythia(nEvts); gener->SetProcess(kPyCharmppMNR); gener->SetStrucFunc(kCTEQ4L); 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->SetProcess(kPyD0PbPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); gener->SetEnergyCMS(5500.); gener->SetNuclei(208,208); break; case kD0pPb8800: comment = comment.Append(" D0 in p-Pb at 8.8 TeV"); gener = new AliGenPythia(nEvts); gener->SetProcess(kPyD0pPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); gener->SetEnergyCMS(8800.); gener->SetProjectile("P",1,1); gener->SetTarget("Pb",208,82); break; case kD0pp14000: comment = comment.Append(" D0 in pp at 14 TeV"); gener = new AliGenPythia(nEvts); gener->SetProcess(kPyD0ppMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); gener->SetEnergyCMS(14000.); break; case kDPlusPbPb5500: comment = comment.Append(" DPlus in Pb-Pb at 5.5 TeV"); gener = new AliGenPythia(nEvts); gener->SetProcess(kPyDPlusPbPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); gener->SetEnergyCMS(5500.); gener->SetNuclei(208,208); break; case kDPluspPb8800: comment = comment.Append(" DPlus in p-Pb at 8.8 TeV"); gener = new AliGenPythia(nEvts); gener->SetProcess(kPyDPluspPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.1,-1.0); gener->SetEnergyCMS(8800.); gener->SetProjectile("P",1,1); gener->SetTarget("Pb",208,82); break; case kDPluspp14000: comment = comment.Append(" DPlus in pp at 14 TeV"); gener = new AliGenPythia(nEvts); gener->SetProcess(kPyDPlusppMNR); 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->SetProcess(kPyBeautyPbPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.75,-1.0); gener->SetEnergyCMS(5500.); gener->SetNuclei(208,208); break; case kBeautypPb8800: comment = comment.Append(" Beauty in p-Pb at 8.8 TeV"); gener = new AliGenPythia(nEvts); gener->SetProcess(kPyBeautypPbMNR); gener->SetStrucFunc(kCTEQ4L); gener->SetPtHard(2.75,-1.0); gener->SetEnergyCMS(8800.); gener->SetProjectile("P",1,1); gener->SetTarget("Pb",208,82); break; case kBeautypp14000: comment = comment.Append(" Beauty in pp at 14 TeV"); gener = new AliGenPythia(nEvts); gener->SetProcess(kPyBeautyppMNR); gener->SetStrucFunc(kCTEQ4L); 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; }
void Config() { // Get settings from environment variables ProcessEnvironmentVars(); // Random Number seed if (gSystem->Getenv("CONFIG_SEED")) { seed = atoi(gSystem->Getenv("CONFIG_SEED")); } else if(gSystem->Getenv("DC_EVENT") && gSystem->Getenv("DC_RUN")){ seed = runNumber * 100000 + eventNumber; } gRandom->SetSeed(seed); cout<<"Seed for random number generation= "<<gRandom->GetSeed()<<endl; // libraries required by geant321 #if defined(__CINT__) gSystem->Load("liblhapdf"); // Parton density functions gSystem->Load("libEGPythia6"); // TGenerator interface gSystem->Load("libpythia6"); // Pythia gSystem->Load("libAliPythia6"); // ALICE specific implementations gSystem->Load("libgeant321"); #endif new TGeant3TGeo("C++ Interface to Geant3"); // Output every 100 tracks ((TGeant3*)gMC)->SetSWIT(4,100); //======================================================================= // Run loader AliRunLoader* rl=0x0; AliLog::Message(AliLog::kInfo, "Creating Run Loader", "", "", "Config()"," ConfigPPR.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(100); gAlice->SetRunLoader(rl); // Set the trigger configuration AliSimulation::Instance()->SetTriggerConfig(TrigConfName[trig]); cout<<"Trigger configuration is set to "<<TrigConfName[trig]<<endl; //======================// // Set External decayer // //======================// TVirtualMCDecayer* decayer = new AliDecayerPythia(); // DECAYS // switch(decHvFl) { case kNature: decayer->SetForceDecay(kAll); break; case kHadr: decayer->SetForceDecay(kHadronicD); break; case kSemiEl: decayer->SetForceDecay(kSemiElectronic); break; case kSemiMu: decayer->SetForceDecay(kSemiMuonic); break; } decayer->Init(); gMC->SetExternalDecayer(decayer); if(proc == kPyJetJetPHOSv2) // in this case we decay the pi0 decayer->SetForceDecay(kNeutralPion); // //======================================================================= // ************* 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); //=========================// // Generator Configuration // //=========================// AliGenPythia* gener = 0x0; if (proc <= kBeautypp14000wmi) { AliGenPythia *pythia = PythiaHVQ(proc); // FeedDown option pythia->SetFeedDownHigherFamily(kFALSE); // Stack filling option if(!stars) pythia->SetStackFillOpt(AliGenPythia::kParentSelection); // Set Count mode if(nEvts>0) pythia->SetCountMode(AliGenPythia::kCountParents); // // DECAYS // switch(decHvFl) { case kNature: pythia->SetForceDecay(kAll); break; case kHadr: pythia->SetForceDecay(kHadronicD); break; case kSemiEl: pythia->SetForceDecay(kSemiElectronic); break; case kSemiMu: pythia->SetForceDecay(kSemiMuonic); break; } // // GEOM & KINE CUTS // pythia->SetMomentumRange(0,99999999); pythia->SetPhiRange(0., 360.); pythia->SetThetaRange(0,180); switch(ycut) { case kFull: pythia->SetYRange(-999,999); break; case kBarrel: pythia->SetYRange(-2,2); break; case kMuonArm: pythia->SetYRange(1,6); break; } gener = pythia; } else if (proc == kPyMbNoHvq) { gener = MbCocktail(); } else if (proc == kPyOmegaMinus) { gener = PyMbTriggered(3334); } else if (proc == kPyOmegaPlus) { gener = PyMbTriggered(-3334); } else if (proc <= kPyGammaBremsEMCAL) { AliGenPythia *pythia = PythiaHard(proc); // FeedDown option pythia->SetFeedDownHigherFamily(kFALSE); // Set Count mode if(nEvts>0) pythia->SetCountMode(AliGenPythia::kCountParents); // // GEOM & KINE CUTS // pythia->SetMomentumRange(0,99999999); // pythia->SetJetEtaRange(-1.5, 1.5);// Final state kinematic cuts // pythia->SetJetPhiRange(0., 360.); // pythia->SetThetaRange(45,135); if(proc == kPyJetJetPHOSv2) pythia->SetForceDecay(kNeutralPion); else pythia->SetForceDecay(kAll); pythia->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0); pythia->SetPtKick(5); // set the intrinsic kt to 5 GeV/c gener = pythia; } // PRIMARY VERTEX gener->SetOrigin(0., 0., 0.); // vertex position // Size of the interaction diamond // Longitudinal Float_t sigmaz = 7.55 / TMath::Sqrt(2.); // [cm] // Transverse Float_t betast = 10; // beta* [m] Float_t eps = 3.75e-6; // emittance [m] Float_t gamma = 7000. / 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); gener->Init(); //Quenching gener->SetQuench(iquenching); if(iquenching == 1){ Float_t k = 6e5*(qhat/1.7) ; //qhat=1.7, k = 6e5, default value AliPythia::Instance()->InitQuenching(0.,0.1,k,0,0.95,6); } // FIELD if (mag == AliMagF::k2kG) { comment = comment.Append(" | L3 field 0.2 T"); } else if (mag == AliMagF::k5kG) { comment = comment.Append(" | L3 field 0.5 T"); } printf("\n \n Comment: %s \n \n", comment.Data()); // to use constant field in the barrel use: // AliMagF* field = new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kGUniform); AliMagF* field = new AliMagF("Maps","Maps", -1., -1., mag); TGeoGlobalMagField::Instance()->SetField(field); rl->CdGAFile(); Int_t iABSO = 1; Int_t iACORDE= 1; Int_t iDIPO = 1; Int_t iEMCAL = 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 iVZERO = 1; Int_t iZDC = 1; //=================== 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"); if (geo == kHoles) FRAME->SetHoles(1); else FRAME->SetHoles(0); } 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(); } 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 scTh=0.176 pbTh=0.144"); } if (iACORDE) { //=================== CRT parameters ============================ AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE"); } if (iVZERO) { //=================== CRT parameters ============================ AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO"); } }
AliGenerator* MbPythiaTuneATLAS_Flat() { AliGenPythia* pythia = MbPythiaTuneATLAS(); comment = comment.Append("; flat multiplicity distribution"); // set high multiplicity trigger // this weight achieves a flat multiplicity distribution TH1 *weight = new TH1D("weight","weight",201,-0.5,200.5); weight->SetBinContent(1,5.49443); weight->SetBinContent(2,8.770816); weight->SetBinContent(6,0.4568624); weight->SetBinContent(7,0.2919915); weight->SetBinContent(8,0.6674189); weight->SetBinContent(9,0.364737); weight->SetBinContent(10,0.8818444); weight->SetBinContent(11,0.531885); weight->SetBinContent(12,1.035197); weight->SetBinContent(13,0.9394057); weight->SetBinContent(14,0.9643193); weight->SetBinContent(15,0.94543); weight->SetBinContent(16,0.9426507); weight->SetBinContent(17,0.9423649); weight->SetBinContent(18,0.789456); weight->SetBinContent(19,1.149026); weight->SetBinContent(20,1.100491); weight->SetBinContent(21,0.6350525); weight->SetBinContent(22,1.351941); weight->SetBinContent(23,0.03233504); weight->SetBinContent(24,0.9574557); weight->SetBinContent(25,0.868133); weight->SetBinContent(26,1.030998); weight->SetBinContent(27,1.08897); weight->SetBinContent(28,1.251382); weight->SetBinContent(29,0.1391099); weight->SetBinContent(30,1.192876); weight->SetBinContent(31,0.448944); weight->SetBinContent(32,1); weight->SetBinContent(33,1); weight->SetBinContent(34,1); weight->SetBinContent(35,1); weight->SetBinContent(36,0.9999997); weight->SetBinContent(37,0.9999997); weight->SetBinContent(38,0.9999996); weight->SetBinContent(39,0.9999996); weight->SetBinContent(40,0.9999995); weight->SetBinContent(41,0.9999993); weight->SetBinContent(42,1); weight->SetBinContent(43,1); weight->SetBinContent(44,1); weight->SetBinContent(45,1); weight->SetBinContent(46,1); weight->SetBinContent(47,0.9999999); weight->SetBinContent(48,0.9999998); weight->SetBinContent(49,0.9999998); weight->SetBinContent(50,0.9999999); weight->SetBinContent(51,0.9999999); weight->SetBinContent(52,0.9999999); weight->SetBinContent(53,0.9999999); weight->SetBinContent(54,0.9999998); weight->SetBinContent(55,0.9999998); weight->SetBinContent(56,0.9999998); weight->SetBinContent(57,0.9999997); weight->SetBinContent(58,0.9999996); weight->SetBinContent(59,0.9999995); weight->SetBinContent(60,1); weight->SetBinContent(61,1); weight->SetBinContent(62,1); weight->SetBinContent(63,1); weight->SetBinContent(64,1); weight->SetBinContent(65,0.9999999); weight->SetBinContent(66,0.9999998); weight->SetBinContent(67,0.9999998); weight->SetBinContent(68,0.9999999); weight->SetBinContent(69,1); weight->SetBinContent(70,1); weight->SetBinContent(71,0.9999997); weight->SetBinContent(72,0.9999995); weight->SetBinContent(73,0.9999994); weight->SetBinContent(74,1); weight->SetBinContent(75,1); weight->SetBinContent(76,1); weight->SetBinContent(77,1); weight->SetBinContent(78,0.9999999); weight->SetBinContent(79,1); weight->SetBinContent(80,1); weight->SetEntries(526); Int_t limit = weight->GetRandom(); pythia->SetTriggerChargedMultiplicity(limit, 1.4); comment = comment.Append(Form("; multiplicity threshold set to %d in |eta| < 1.4", limit)); return pythia; }
AliGenerator* MbPythiaTunePerugia0bele() { comment = comment.Append(" pp: Pythia (Perugia0) bele (1 bbbar per event, 1 b-hadron in |y|<1, 1 electron in |y|<2"); // // Pythia AliGenPythia* pythia = new AliGenPythia(-1); pythia->SetMomentumRange(0, 999999.); pythia->SetThetaRange(0., 180.); pythia->SetYRange(-2.,2.); pythia->SetPtRange(0,1000.); pythia->SetProcess(kPyBeautyppMNRwmi); pythia->SetEnergyCMS(energy); // Tune // 320 Perugia 0 pythia->SetTune(320); pythia->UseNewMultipleInteractionsScenario(); // // decays pythia->SetCutOnChild(1); pythia->SetPdgCodeParticleforAcceptanceCut(11); pythia->SetChildYRange(-2,2); pythia->SetChildPtRange(0,10000.); return pythia; }