32 #if !defined(__CINT__) || defined(__MAKECINT__) 33 #include <Riostream.h> 37 #include <TVirtualMC.h> 38 #include <TGeant3TGeo.h> 39 #include "EVGEN/AliGenCocktail.h" 40 #include "EVGEN/AliGenParam.h" 41 #include "EVGEN/AliGenMUONlib.h" 45 #include "PYTHIA6/AliDecayerPythia.h" 46 #include "PYTHIA6/AliGenPythia.h" 47 #include "STEER/AliMagF.h" 48 #include "STRUCT/AliBODY.h" 49 #include "STRUCT/AliMAG.h" 50 #include "STRUCT/AliABSOv0.h" 51 #include "STRUCT/AliDIPOv2.h" 52 #include "STRUCT/AliHALL.h" 53 #include "STRUCT/AliFRAMEv2.h" 54 #include "STRUCT/AliSHILv2.h" 55 #include "STRUCT/AliPIPEv0.h" 56 #include "ITS/AliITSgeom.h" 57 #include "ITS/AliITSvPPRasymmFMD.h" 58 #include "TPC/AliTPCv2.h" 59 #include "TOF/AliTOFv5T0.h" 60 #include "RICH/AliRICHv1.h" 61 #include "ZDC/AliZDCv2.h" 62 #include "TRD/AliTRDv1.h" 63 #include "FMD/AliFMDv1.h" 64 #include "MUON/AliMUONv1.h" 65 #include "PHOS/AliPHOSv1.h" 66 #include "PMD/AliPMDv1.h" 67 #include "START/AliSTARTv1.h" 68 #include "EMCAL/AliEMCALv2.h" 69 #include "CRT/AliCRTv0.h" 70 #include "VZERO/AliVZEROv7.h" 86 "kCharmPbPb5500",
"kCharmpPb8800",
"kCharmpp14000",
"kCharmpp14000wmi",
87 "kD0PbPb5500",
"kD0pPb8800",
"kD0pp14000",
88 "kDPlusPbPb5500",
"kDPluspPb8800",
"kDPluspp14000",
89 "kBeautyPbPb5500",
"kBeautypPb8800",
"kBeautypp14000",
"kBeautypp14000wmi",
90 "kPyMbNoHvq",
"kPyOmegaPlus",
"kPyOmegaMinus" 172 #if defined(__CINT__) 173 gSystem->Load(
"libgeant321");
176 new TGeant3TGeo(
"C++ Interface to Geant3");
179 ((TGeant3*)gMC)->SetSWIT(4,100);
190 gAlice->Fatal(
"Config.C",
"Can not instatiate the Run Loader");
211 gMC->SetProcess(
"DCAY",1);
212 gMC->SetProcess(
"PAIR",1);
213 gMC->SetProcess(
"COMP",1);
214 gMC->SetProcess(
"PHOT",1);
215 gMC->SetProcess(
"PFIS",0);
216 gMC->SetProcess(
"DRAY",0);
217 gMC->SetProcess(
"ANNI",1);
218 gMC->SetProcess(
"BREM",1);
219 gMC->SetProcess(
"MUNU",1);
220 gMC->SetProcess(
"CKOV",1);
221 gMC->SetProcess(
"HADR",1);
222 gMC->SetProcess(
"LOSS",2);
223 gMC->SetProcess(
"MULS",1);
224 gMC->SetProcess(
"RAYL",1);
227 Float_t tofmax = 1.e10;
229 gMC->SetCut(
"CUTGAM", cut);
230 gMC->SetCut(
"CUTELE", cut);
231 gMC->SetCut(
"CUTNEU", cut);
232 gMC->SetCut(
"CUTHAD", cut);
233 gMC->SetCut(
"CUTMUO", cut);
234 gMC->SetCut(
"BCUTE", cut);
235 gMC->SetCut(
"BCUTM", cut);
236 gMC->SetCut(
"DCUTE", cut);
237 gMC->SetCut(
"DCUTM", cut);
238 gMC->SetCut(
"PPCUTM", cut);
239 gMC->SetCut(
"TOFMAX", tofmax);
244 TVirtualMCDecayer* decayer =
new AliDecayerPythia();
249 decayer->SetForceDecay(kAll);
252 decayer->SetForceDecay(kHadronicD);
255 decayer->SetForceDecay(kSemiElectronic);
258 decayer->SetForceDecay(kSemiMuonic);
262 gMC->SetExternalDecayer(decayer);
272 pythia->SetFeedDownHigherFamily(kFALSE);
274 if(!stars) pythia->SetStackFillOpt(AliGenPythia::kParentSelection);
276 if(nEvts>0) pythia->SetCountMode(AliGenPythia::kCountParents);
282 pythia->SetForceDecay(kAll);
285 pythia->SetForceDecay(kHadronicD);
288 pythia->SetForceDecay(kSemiElectronic);
291 pythia->SetForceDecay(kSemiMuonic);
297 pythia->SetMomentumRange(0,99999999);
298 pythia->SetPhiRange(0., 360.);
299 pythia->SetThetaRange(0,180);
302 pythia->SetYRange(-999,999);
305 pythia->SetYRange(-2,2);
308 pythia->SetYRange(1,6);
328 Float_t sigmaz = 7.55 / TMath::Sqrt(2.);
332 Float_t eps = 3.75e-6;
333 Float_t gamma = 7000. / 0.938272;
334 Float_t sigmaxy = TMath::Sqrt(eps * betast / gamma) / TMath::Sqrt(2.) * 100.;
335 printf(
"\n \n Diamond size x-y: %10.3e z: %10.3e\n \n", sigmaxy, sigmaz);
337 gener->
SetSigma(sigmaxy, sigmaxy, sigmaz);
346 comment = comment.Append(
" | L3 field 0.2 T");
348 comment = comment.Append(
" | L3 field 0.5 T");
350 printf(
"\n \n Comment: %s \n \n", comment.Data());
353 field->SetL3ConstField(0);
354 TGeoGlobalMagField::Instance()->SetField(field);
382 AliBODY *BODY =
new AliBODY(
"BODY",
"Alice envelop");
390 AliMAG *MAG =
new AliMAG(
"MAG",
"Magnet");
397 AliABSO *ABSO =
new AliABSOv0(
"ABSO",
"Muon Absorber");
404 AliDIPO *DIPO =
new AliDIPOv2(
"DIPO",
"Dipole version 2");
411 AliHALL *HALL =
new AliHALL(
"HALL",
"Alice Hall");
419 AliFRAMEv2 *
FRAME =
new AliFRAMEv2(
"FRAME",
"Space Frame");
426 AliSHIL *SHIL =
new AliSHILv2(
"SHIL",
"Shielding Version 2");
434 AliPIPE *PIPE =
new AliPIPEv0(
"PIPE",
"Beam Pipe");
457 AliITSvPPRasymmFMD *ITS =
new AliITSvPPRasymmFMD(
"ITS",
"New ITS PPR detailed version with asymmetric services");
458 ITS->SetMinorVersion(2);
459 ITS->SetReadDet(kFALSE);
461 ITS->SetThicknessDet1(200.);
462 ITS->SetThicknessDet2(200.);
463 ITS->SetThicknessChip1(150.);
464 ITS->SetThicknessChip2(150.);
466 ITS->SetCoolingFluid(1);
496 AliTPC *TPC =
new AliTPCv2(
"TPC",
"Default");
502 AliTOF *TOF =
new AliTOFv5T0(
"TOF",
"normal TOF");
505 Int_t TOFSectors[18]={-1,-1,0,0,0,-1,0,0,-1,-1,-1,0,0,-1,0,0,0,0};
506 TOF->SetTOFSectors(TOFSectors);
513 AliRICH *RICH =
new AliRICHv1(
"RICH",
"normal RICH");
522 AliZDC *ZDC =
new AliZDCv2(
"ZDC",
"normal ZDC");
529 AliTRD *TRD =
new AliTRDv1(
"TRD",
"TRD slow simulator");
530 AliTRDgeometry *geoTRD = TRD->GetGeometry();
533 geoTRD->SetSMstatus(0,0);
534 geoTRD->SetSMstatus(1,0);
535 geoTRD->SetSMstatus(5,0);
536 geoTRD->SetSMstatus(7,0);
537 geoTRD->SetSMstatus(8,0);
538 geoTRD->SetSMstatus(9,0);
539 geoTRD->SetSMstatus(10,0);
540 geoTRD->SetSMstatus(13,0);
541 geoTRD->SetSMstatus(16,0);
542 geoTRD->SetSMstatus(17,0);
561 AliPHOS *
PHOS =
new AliPHOSv1(
"PHOS",
"IHEP");
568 AliPMD *PMD =
new AliPMDv1(
"PMD",
"normal PMD");
574 AliSTART *START =
new AliSTARTv1(
"START",
"START Detector");
586 AliCRT *CRT =
new AliCRTv0(
"CRT",
"normal ACORDE");
592 AliVZERO *VZERO =
new AliVZEROv7(
"VZERO",
"normal VZERO");
612 AliGenPythia * gener = 0x0;
616 comment = comment.Append(
" Charm in Pb-Pb at 5.5 TeV");
617 gener =
new AliGenPythia(nEvts);
618 gener->SetProcess(kPyCharmPbPbMNR);
619 gener->SetStrucFunc(kCTEQ4L);
620 gener->SetPtHard(2.1,-1.0);
621 gener->SetEnergyCMS(5500.);
622 gener->SetNuclei(208,208);
625 comment = comment.Append(
" Charm in p-Pb at 8.8 TeV");
626 gener =
new AliGenPythia(nEvts);
627 gener->SetProcess(kPyCharmpPbMNR);
628 gener->SetStrucFunc(kCTEQ4L);
629 gener->SetPtHard(2.1,-1.0);
630 gener->SetEnergyCMS(8800.);
631 gener->SetProjectile(
"P",1,1);
632 gener->SetTarget(
"Pb",208,82);
635 comment = comment.Append(
" Charm in pp at 14 TeV");
636 gener =
new AliGenPythia(nEvts);
637 gener->SetProcess(kPyCharmppMNR);
638 gener->SetStrucFunc(kCTEQ4L);
639 gener->SetPtHard(2.1,-1.0);
640 gener->SetEnergyCMS(14000.);
643 comment = comment.Append(
" Charm in pp at 14 TeV with mult. interactions");
644 gener =
new AliGenPythia(-1);
645 gener->SetProcess(kPyCharmppMNRwmi);
646 gener->SetStrucFunc(kCTEQ5L);
647 gener->SetPtHard(ptHardMin,ptHardMax);
648 gener->SetEnergyCMS(14000.);
651 comment = comment.Append(
" D0 in Pb-Pb at 5.5 TeV");
652 gener =
new AliGenPythia(nEvts);
653 gener->SetProcess(kPyD0PbPbMNR);
654 gener->SetStrucFunc(kCTEQ4L);
655 gener->SetPtHard(2.1,-1.0);
656 gener->SetEnergyCMS(5500.);
657 gener->SetNuclei(208,208);
660 comment = comment.Append(
" D0 in p-Pb at 8.8 TeV");
661 gener =
new AliGenPythia(nEvts);
662 gener->SetProcess(kPyD0pPbMNR);
663 gener->SetStrucFunc(kCTEQ4L);
664 gener->SetPtHard(2.1,-1.0);
665 gener->SetEnergyCMS(8800.);
666 gener->SetProjectile(
"P",1,1);
667 gener->SetTarget(
"Pb",208,82);
670 comment = comment.Append(
" D0 in pp at 14 TeV");
671 gener =
new AliGenPythia(nEvts);
672 gener->SetProcess(kPyD0ppMNR);
673 gener->SetStrucFunc(kCTEQ4L);
674 gener->SetPtHard(2.1,-1.0);
675 gener->SetEnergyCMS(14000.);
678 comment = comment.Append(
" DPlus in Pb-Pb at 5.5 TeV");
679 gener =
new AliGenPythia(nEvts);
680 gener->SetProcess(kPyDPlusPbPbMNR);
681 gener->SetStrucFunc(kCTEQ4L);
682 gener->SetPtHard(2.1,-1.0);
683 gener->SetEnergyCMS(5500.);
684 gener->SetNuclei(208,208);
687 comment = comment.Append(
" DPlus in p-Pb at 8.8 TeV");
688 gener =
new AliGenPythia(nEvts);
689 gener->SetProcess(kPyDPluspPbMNR);
690 gener->SetStrucFunc(kCTEQ4L);
691 gener->SetPtHard(2.1,-1.0);
692 gener->SetEnergyCMS(8800.);
693 gener->SetProjectile(
"P",1,1);
694 gener->SetTarget(
"Pb",208,82);
697 comment = comment.Append(
" DPlus in pp at 14 TeV");
698 gener =
new AliGenPythia(nEvts);
699 gener->SetProcess(kPyDPlusppMNR);
700 gener->SetStrucFunc(kCTEQ4L);
701 gener->SetPtHard(2.1,-1.0);
702 gener->SetEnergyCMS(14000.);
705 comment = comment.Append(
" Beauty in Pb-Pb at 5.5 TeV");
706 gener =
new AliGenPythia(nEvts);
707 gener->SetProcess(kPyBeautyPbPbMNR);
708 gener->SetStrucFunc(kCTEQ4L);
709 gener->SetPtHard(2.75,-1.0);
710 gener->SetEnergyCMS(5500.);
711 gener->SetNuclei(208,208);
714 comment = comment.Append(
" Beauty in p-Pb at 8.8 TeV");
715 gener =
new AliGenPythia(nEvts);
716 gener->SetProcess(kPyBeautypPbMNR);
717 gener->SetStrucFunc(kCTEQ4L);
718 gener->SetPtHard(2.75,-1.0);
719 gener->SetEnergyCMS(8800.);
720 gener->SetProjectile(
"P",1,1);
721 gener->SetTarget(
"Pb",208,82);
724 comment = comment.Append(
" Beauty in pp at 14 TeV");
725 gener =
new AliGenPythia(nEvts);
726 gener->SetProcess(kPyBeautyppMNR);
727 gener->SetStrucFunc(kCTEQ4L);
728 gener->SetPtHard(2.75,-1.0);
729 gener->SetEnergyCMS(14000.);
732 comment = comment.Append(
" Beauty in pp at 14 TeV with mult. interactions");
733 gener =
new AliGenPythia(-1);
734 gener->SetProcess(kPyBeautyppMNRwmi);
735 gener->SetStrucFunc(kCTEQ5L);
736 gener->SetPtHard(ptHardMin,ptHardMax);
737 gener->SetEnergyCMS(14000.);
746 comment = comment.Append(
" pp at 14 TeV: Pythia low-pt, no heavy quarks + J/Psi from parameterisation");
747 AliGenCocktail * gener =
new AliGenCocktail();
748 gener->UsePerEventRates();
752 AliGenPythia* pythia =
new AliGenPythia(-1);
753 pythia->SetMomentumRange(0, 999999.);
754 pythia->SetThetaRange(0., 180.);
755 pythia->SetYRange(-12.,12.);
756 pythia->SetPtRange(0,1000.);
757 pythia->SetProcess(kPyMb);
758 pythia->SetEnergyCMS(14000.);
759 pythia->SwitchHFOff();
763 AliGenParam* jpsi =
new AliGenParam(1, AliGenMUONlib::kJpsi,
"CDF scaled",
"Jpsi");
764 jpsi->SetPtRange(0.,100.);
765 jpsi->SetYRange(-8., 8.);
766 jpsi->SetPhiRange(0., 360.);
767 jpsi->SetForceDecay(kAll);
769 gener->AddGenerator(pythia,
"Pythia", 1.);
770 gener->AddGenerator(jpsi,
"J/Psi", 8.e-4);
777 AliGenPythia* pythia =
new AliGenPythia(-1);
778 pythia->SetMomentumRange(0, 999999.);
779 pythia->SetThetaRange(0., 180.);
780 pythia->SetYRange(-12.,12.);
781 pythia->SetPtRange(0,1000.);
782 pythia->SetProcess(kPyMb);
783 pythia->SetEnergyCMS(14000.);
784 pythia->SetTriggerParticle(pdg, 0.9);
790 cout <<
"Processing environment variables" << endl;
792 if (gSystem->Getenv(
"CONFIG_SEED")) {
793 seed = atoi(gSystem->Getenv(
"CONFIG_SEED"));
796 gRandom->SetSeed(
seed);
797 cout<<
"Seed for random number generation= "<<
seed<<endl;
800 if (gSystem->Getenv(
"DC_RUN")) {
801 runNumber = atoi(gSystem->Getenv(
"DC_RUN"));
806 if (gSystem->Getenv(
"DC_RUN_TYPE")) {
807 for (Int_t iRun = 0; iRun <
kRunMax; iRun++) {
808 if (strcmp(gSystem->Getenv(
"DC_RUN_TYPE"),
pprRunName[iRun])==0) {
810 cout<<
"Run type set to "<<
pprRunName[iRun]<<endl;
819 Double_t probType[] = {0.0,0.8498,0.9912,0.9985,0.99925,1.0};
820 Int_t iType = TMath::BinarySearch(6,probType,gRandom->Rndm());
832 Double_t probPtCharm[] = {0.0,0.25,0.65,0.94,1.0};
833 Int_t iPt = TMath::BinarySearch(5,probPtCharm,gRandom->Rndm());
852 cout <<
"ProcessEnvironmentVars: Wrong pthard bin" << endl;
862 Double_t probPtBeauty[] = {0.0,0.05,0.36,0.64,1.0};
863 Int_t iPt = TMath::BinarySearch(5,probPtBeauty,gRandom->Rndm());
882 cout <<
"ProcessEnvironmentVars: Wrong pthard bin" << endl;
893 cout <<
"ProcessEnvironmentVars: Wrong run type" << endl;
896 cout<<
"ptHard limits: "<<ptHardMin<<
" to " <<ptHardMax<<endl;
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
void SetRunLoader(AliRunLoader *rloader)
static const TString & GetDefaultEventFolderName()
static DecayHvFl_t decHvFl
AliGenerator * PyMbTriggered(Int_t pdg)
const char * TrigConfName[]
AliDetector class for MUON subsystem providing simulation data management.
Forward Multiplicity Detector based on Silicon wafers. This class is the driver for especially simula...
const char * pprRunName[]
Forward Multiplicity Detector based on Silicon wafers.
AliGenerator * MbCocktail()
static AliRunLoader * Open(const char *filename="galice.root", const char *eventfoldername=AliConfig::GetDefaultEventFolderName(), Option_t *option="READ")
virtual void SetCutVertexZ(Float_t cut=999999.)
void ProcessEnvironmentVars()
void SetTriggerConfig(TString conf)
AliDetector class for MUON subsystem which implements functions for simulation.
void SetCompressionLevel(Int_t cl)
virtual void SetOrigin(Float_t ox, Float_t oy, Float_t oz)
static AliSimulation * Instance()
Base Class for EMCAL description.
virtual void SetVertexSmear(VertexSmear_t smear)
void SetNumberOfEventsPerFile(Int_t nevpf)
static AliMagF::BMap_t mag
virtual void SetSigma(Float_t sx, Float_t sy, Float_t sz)
AliGenPythia * PythiaHVQ(PDC06Proc_t proc)
EMCal simulation manager class v2.