00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(__CINT__) || defined(__MAKECINT__)
00012 #include <Riostream.h>
00013 #include <TRandom.h>
00014 #include <TSystem.h>
00015 #include <TVirtualMC.h>
00016 #include <TGeant3.h>
00017 #include "STEER/AliRunLoader.h"
00018 #include "STEER/AliRun.h"
00019 #include "STEER/AliConfig.h"
00020 #include "STEER/AliGenerator.h"
00021 #include "PYTHIA6/AliDecayerPythia.h"
00022 #include "EVGEN/AliGenHIJINGpara.h"
00023 #include "THijing/AliGenHijing.h"
00024 #include "EVGEN/AliGenCocktail.h"
00025 #include "EVGEN/AliGenSlowNucleons.h"
00026 #include "EVGEN/AliSlowNucleonModelExp.h"
00027 #include "EVGEN/AliGenParam.h"
00028 #include "EVGEN/AliGenMUONlib.h"
00029 #include "EVGEN/AliGenMUONCocktail.h"
00030 #include "PYTHIA6/AliGenPythia.h"
00031 #include "STEER/AliMagFMaps.h"
00032 #include "STRUCT/AliBODY.h"
00033 #include "STRUCT/AliMAG.h"
00034 #include "STRUCT/AliABSOv0.h"
00035 #include "STRUCT/AliDIPOv2.h"
00036 #include "STRUCT/AliHALL.h"
00037 #include "STRUCT/AliFRAMEv2.h"
00038 #include "STRUCT/AliSHILv2.h"
00039 #include "STRUCT/AliPIPEv0.h"
00040 #include "ITS/AliITSvPPRasymmFMD.h"
00041 #include "TPC/AliTPCv2.h"
00042 #include "TOF/AliTOFv4T0.h"
00043 #include "RICH/AliRICHv1.h"
00044 #include "ZDC/AliZDCv2.h"
00045 #include "TRD/AliTRDv1.h"
00046 #include "FMD/AliFMDv1.h"
00047 #include "MUON/AliMUONv1.h"
00048 #include "MUON/AliMUONSt1GeometryBuilderV2.h"
00049 #include "MUON/AliMUONSt2GeometryBuilder.h"
00050 #include "MUON/AliMUONSlatGeometryBuilder.h"
00051 #include "MUON/AliMUONTriggerGeometryBuilder.h"
00052 #include "PHOS/AliPHOSv1.h"
00053 #include "PMD/AliPMDv1.h"
00054 #include "START/AliSTARTv1.h"
00055 #include "EMCAL/AliEMCALv1.h"
00056 #include "CRT/AliCRTv0.h"
00057 #include "VZERO/AliVZEROv2.h"
00058 #endif
00059
00060
00061
00062
00063
00064 enum EG_t {
00065 test50,
00066 kParam_8000,
00067 kParam_4000,
00068 kParam_2000,
00069 kParam_fmd,
00070 kHijing_cent1,
00071 kHijing_cent2,
00072 kHijing_per1,
00073 kHijing_per2,
00074 kHijing_per3,
00075 kHijing_per4,
00076 kHijing_per5,
00077 kHijing_jj25,
00078 kHijing_jj50,
00079 kHijing_jj75,
00080 kHijing_jj100,
00081 kHijing_jj200,
00082 kHijing_gj25,
00083 kHijing_gj50,
00084 kHijing_gj75,
00085 kHijing_gj100,
00086 kHijing_gj200,
00087 kHijing_pA,
00088 kPythia6,
00089 kPythia6Jets20_24,
00090 kPythia6Jets24_29,
00091 kPythia6Jets29_35,
00092 kPythia6Jets35_42,
00093 kPythia6Jets42_50,
00094 kPythia6Jets50_60,
00095 kPythia6Jets60_72,
00096 kPythia6Jets72_86,
00097 kPythia6Jets86_104,
00098 kPythia6Jets104_125,
00099 kPythia6Jets125_150,
00100 kPythia6Jets150_180,
00101 kD0PbPb5500,
00102 kCharmSemiElPbPb5500,
00103 kBeautySemiElPbPb5500,
00104 kCocktailTRD,
00105 kPyJJ,
00106 kPyGJ,
00107 kMuonCocktailCent1,
00108 kMuonCocktailPer1,
00109 kMuonCocktailPer4,
00110 kMuonCocktailCent1HighPt,
00111 kMuonCocktailPer1HighPt,
00112 kMuonCocktailPer4HighPt,
00113 kMuonCocktailCent1Single,
00114 kMuonCocktailPer1Single,
00115 kMuonCocktailPer4Single,
00116 kFMD1Flat,
00117 kFMD2Flat,
00118 kFMD3Flat,
00119 kFMDFlat,
00120 kEgMax
00121 };
00122
00123
00124
00125
00126
00127 const char* egName[kEgMax] = {
00128 "test50",
00129 "kParam_8000",
00130 "kParam_4000",
00131 "kParam_2000",
00132 "kParam_fmd",
00133 "kHijing_cent1",
00134 "kHijing_cent2",
00135 "kHijing_per1",
00136 "kHijing_per2",
00137 "kHijing_per3",
00138 "kHijing_per4",
00139 "kHijing_per5",
00140 "kHijing_jj25",
00141 "kHijing_jj50",
00142 "kHijing_jj75",
00143 "kHijing_jj100",
00144 "kHijing_jj200",
00145 "kHijing_gj25",
00146 "kHijing_gj50",
00147 "kHijing_gj75",
00148 "kHijing_gj100",
00149 "kHijing_gj200",
00150 "kHijing_pA",
00151 "kPythia6",
00152 "kPythia6Jets20_24",
00153 "kPythia6Jets24_29",
00154 "kPythia6Jets29_35",
00155 "kPythia6Jets35_42",
00156 "kPythia6Jets42_50",
00157 "kPythia6Jets50_60",
00158 "kPythia6Jets60_72",
00159 "kPythia6Jets72_86",
00160 "kPythia6Jets86_104",
00161 "kPythia6Jets104_125",
00162 "kPythia6Jets125_150",
00163 "kPythia6Jets150_180",
00164 "kD0PbPb5500",
00165 "kCharmSemiElPbPb5500",
00166 "kBeautySemiElPbPb5500",
00167 "kCocktailTRD",
00168 "kPyJJ",
00169 "kPyGJ",
00170 "kMuonCocktailCent1",
00171 "kMuonCocktailPer1",
00172 "kMuonCocktailPer4",
00173 "kMuonCocktailCent1HighPt",
00174 "kMuonCocktailPer1HighPt",
00175 "kMuonCocktailPer4HighPt",
00176 "kMuonCocktailCent1Single",
00177 "kMuonCocktailPer1Single",
00178 "kMuonCocktailPer4Single",
00179 "kFMD1Flat",
00180 "kFMD2Flat",
00181 "kFMD3Flat",
00182 "kFMDFlat"
00183 };
00184
00185
00186 enum Geo_t {
00187 kHoles,
00188 kNoHoles
00189 };
00190
00191
00192 enum Rad_t {
00193 kGluonRadiation,
00194 kNoGluonRadiation
00195 };
00196
00197
00198 enum Mag_t {
00199 k2kG,
00200 k4kG,
00201 k5kG
00202 };
00203
00204
00205 enum MC_t {
00206 kFLUKA,
00207 kGEANT3,
00208 kGEANT4,
00209 kGEANT3TGEO,
00210 };
00211
00212
00213
00214 Float_t EtaToTheta(Float_t eta);
00215 Eg_t LookupEG(const Char_t* name);
00216 AliGenerator* GeneratorFactory(EG_t eg, Rad_t rad, TString& comment);
00217 AliGenHijing* HijingStandard();
00218 void ProcessEnvironmentVars(EG_t& eg, Int_t& seed);
00219
00220
00221 void
00222 Config()
00223 {
00224
00225
00226
00227
00228 EG_t eg = kParam_2000;
00229 Geo_t geo = kNoHoles;
00230 Rad_t rad = kGluonRadiation;
00231 Mag_t mag = k5kG;
00232 Int_t seed = 12345;
00233 MC_t mc = kGEANT3TGEO;
00234
00235
00236
00237 static TString comment;
00238
00239
00240
00241 ProcessEnvironmentVars(eg, seed);
00242
00243
00244
00245 gRandom->SetSeed(seed);
00246 cout<<"Seed for random number generation= "<<gRandom->GetSeed()<<endl;
00247
00248
00249
00250 switch (mc) {
00251 case kFLUKA:
00252
00253
00254
00255 gSystem->Load("libGeom");
00256 cout << "\t* Loading TFluka..." << endl;
00257 gSystem->Load("libTFluka");
00258 gSystem->MakeDirectory("peg");
00259
00260
00261
00262 cout << "\t* Instantiating TFluka..." << endl;
00263 new TFluka("C++ Interface to Fluka", 0);
00264 break;
00265 case kGEANT3:
00266 {
00267
00268
00269
00270 gSystem->Load("libgeant321");
00271
00272
00273
00274
00275 TGeant3* gmc = new TGeant3("C++ Interface to Geant3");
00276 gmc->SetSWIT(4, 1000);
00277 }
00278 break;
00279 case kGEANT3TGEO:
00280 {
00281
00282
00283
00284 gSystem->Load("libgeant321");
00285
00286
00287
00288
00289 TGeant3TGeo* gmc = new TGeant3TGeo("C++ Interface to Geant3");
00290 gmc->SetSWIT(4, 1000);
00291 Printf("Making a TGeant3TGeo objet");
00292 }
00293 break;
00294 default:
00295 gAlice->Fatal("Config.C", "No MC type chosen");
00296 return;
00297 }
00298
00299
00300 AliRunLoader* rl = 0;
00301
00302 cout<<"Config.C: Creating Run Loader ..."<<endl;
00303 rl = AliRunLoader::Open("galice.root",
00304 AliConfig::GetDefaultEventFolderName(),
00305 "recreate");
00306 if (!rl) {
00307 gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
00308 return;
00309 }
00310 rl->SetCompressionLevel(2);
00311 rl->SetNumberOfEventsPerFile(3);
00312 gAlice->SetRunLoader(rl);
00313
00314
00315
00316 switch (mc) {
00317 case kFLUKA:
00318 {
00319
00320
00321
00322 TString alice_pemf(gSystem->Which(".", "peg/mat17.pemf"));
00323 if (!alice_pemf.IsNull())
00324 ((TFluka*)gMC)->SetGeneratePemf(kFALSE);
00325 else
00326 ((TFluka*)gMC)->SetGeneratePemf(kTRUE);
00327 TString flupro(gSystem->Getenv("FLUPRO"));
00328 if (flupro.IsNull())
00329 Fatal("Config.C", "Environment variable FLUPRO not set");
00330 #if 0
00331 char* files[] = { "brems_fin.bin", "cohff.bin", "elasct.bin",
00332 "gxsect.bin", "nuclear.bin", "sigmapi.bin",
00333 0 };
00334 char* file = files[0];
00335 while (file) {
00336 TString which(gSystem->Which(".", file));
00337 if (which.IsNull()) {
00338 if (gSystem->Symlink(Form("%s/%s", flupro.Data(), file), file)!=0)
00339 Fatal("Config.C", "Couldn't link $(FLUPRO)/%s -> .", file);
00340 }
00341 file++;
00342 }
00343 #endif
00344 TString neuxsc(gSystem->Which(".", "neuxsc.bin"));
00345 if (neuxsc.IsNull())
00346 gSystem->Symlink(Form("%s/neuxsc_72.bin", flupro.Data()),
00347 "neuxsc.bin");
00348 gSystem->CopyFile("$(FLUPRO)/random.dat", "old.seed", kTRUE);
00349 }
00350 break;
00351 }
00352
00353
00354
00355
00356 #if 0
00357 AliDecayer *decayer = new AliDecayerPythia();
00358 switch (eg) {
00359 case kD0PbPb5500: decayer->SetForceDecay(kHadronicD); break;
00360 case kCharmSemiElPbPb5500: decayer->SetForceDecay(kSemiElectronic); break;
00361 case kBeautySemiElPbPb5500: decayer->SetForceDecay(kSemiElectronic); break;
00362 default: decayer->SetForceDecay(kAll); break;
00363 }
00364 decayer->Init();
00365 gMC->SetExternalDecayer(decayer);
00366 #endif
00367
00368
00369
00370
00371
00372 gMC->SetProcess("DCAY",1);
00373 gMC->SetProcess("PAIR",1);
00374 gMC->SetProcess("COMP",1);
00375 gMC->SetProcess("PHOT",1);
00376 gMC->SetProcess("PFIS",0);
00377 gMC->SetProcess("DRAY",0);
00378 gMC->SetProcess("ANNI",1);
00379 gMC->SetProcess("BREM",1);
00380 gMC->SetProcess("MUNU",1);
00381 gMC->SetProcess("CKOV",1);
00382 gMC->SetProcess("HADR",1);
00383 gMC->SetProcess("LOSS",2);
00384 gMC->SetProcess("MULS",1);
00385 gMC->SetProcess("RAYL",1);
00386
00387 Float_t cut = 1.e-3;
00388 Float_t tofmax = 1.e10;
00389
00390 gMC->SetCut("CUTGAM", cut);
00391 gMC->SetCut("CUTELE", cut);
00392 gMC->SetCut("CUTNEU", cut);
00393 gMC->SetCut("CUTHAD", cut);
00394 gMC->SetCut("CUTMUO", cut);
00395 gMC->SetCut("BCUTE", cut);
00396 gMC->SetCut("BCUTM", cut);
00397 gMC->SetCut("DCUTE", cut);
00398 gMC->SetCut("DCUTM", cut);
00399 gMC->SetCut("PPCUTM", cut);
00400 gMC->SetCut("TOFMAX", tofmax);
00401
00402
00403
00404
00405 AliGenerator* gener = GeneratorFactory(eg, rad, comment);
00406 gener->SetOrigin(0, 0, 0);
00407 gener->SetSigma(0, 0, 5.3);
00408 gener->SetCutVertexZ(1.);
00409 gener->SetVertexSmear(kPerEvent);
00410 gener->SetTrackingFlag(1);
00411 gener->Init();
00412
00413
00414
00415
00416
00417 switch (mag) {
00418 case k2kG: comment = comment.Append(" | L3 field 0.2 T"); break;
00419 case k4kG: comment = comment.Append(" | L3 field 0.4 T"); break;
00420 case k5kG: comment = comment.Append(" | L3 field 0.5 T"); break;
00421 }
00422
00423 switch (rad) {
00424 case kGluonRadiation:
00425 comment = comment.Append(" | Gluon Radiation On"); break;
00426 default:
00427 comment = comment.Append(" | Gluon Radiation Off"); break;
00428 }
00429
00430 switch(geo) {
00431 case kHoles: comment = comment.Append(" | Holes for PHOS/RICH"); break;
00432 default: comment = comment.Append(" | No holes for PHOS/RICH"); break;
00433 }
00434
00435 std::cout << "\n\n Comment: " << comment << "\n" << std::endl;
00436
00437
00438
00439 AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., mag);
00440 field->SetL3ConstField(0);
00441 rl->CdGAFile();
00442 gAlice->SetField(field);
00443
00444
00445
00446
00447
00448 Bool_t useABSO = kFALSE;
00449 Bool_t useCRT = kFALSE;
00450 Bool_t useDIPO = kFALSE;
00451 Bool_t useFMD = kTRUE;
00452 Bool_t useFRAME = kFALSE;
00453 Bool_t useHALL = kFALSE;
00454 Bool_t useITS = kFALSE;
00455 Bool_t useMAG = kFALSE;
00456 Bool_t useMUON = kFALSE;
00457 Bool_t usePHOS = kFALSE;
00458 Bool_t usePIPE = kFALSE;
00459 Bool_t usePMD = kFALSE;
00460 Bool_t useRICH = kFALSE;
00461 Bool_t useSHIL = kFALSE;
00462 Bool_t useSTART = kFALSE;
00463 Bool_t useTOF = kFALSE;
00464 Bool_t useTPC = kFALSE;
00465 Bool_t useTRD = kFALSE;
00466 Bool_t useZDC = kFALSE;
00467 Bool_t useEMCAL = kFALSE;
00468 Bool_t useVZERO = kFALSE;
00469
00470 cout << "\t* Creating the detectors ..." << endl;
00471
00472 AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
00473
00474
00475 if (useMAG) {
00476
00477
00478
00479 AliMAG *MAG = new AliMAG("MAG", "Magnet");
00480 }
00481
00482 if (useABSO) {
00483
00484 AliABSO *ABSO = new AliABSOv0("ABSO", "Muon Absorber");
00485 }
00486
00487 if (useDIPO) {
00488
00489 AliDIPO *DIPO = new AliDIPOv2("DIPO", "Dipole version 2");
00490 }
00491
00492 if (useHALL) {
00493
00494 AliHALL *HALL = new AliHALL("HALL", "Alice Hall");
00495 }
00496
00497
00498 if (useFRAME) {
00499
00500 AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
00501 switch (geo) {
00502 case kHoles: FRAME->SetHoles(1); break;
00503 default: FRAME->SetHoles(0); break;
00504 }
00505 }
00506
00507 if (useSHIL) {
00508
00509 AliSHIL *SHIL = new AliSHILv2("SHIL", "Shielding Version 2");
00510 }
00511
00512
00513 if (usePIPE) {
00514
00515 AliPIPE *PIPE = new AliPIPEv0("PIPE", "Beam Pipe");
00516 }
00517
00518 if (useITS) {
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538
00539
00540
00541
00542 AliITSvPPRasymmFMD *ITS =
00543 new AliITSvPPRasymmFMD("ITS","New ITS PPR detailed version "
00544 "with asymmetric services");
00545
00546 ITS->SetMinorVersion(2);
00547
00548 ITS->SetReadDet(kTRUE);
00549
00550
00551
00552 ITS->SetThicknessDet1(200.);
00553
00554 ITS->SetThicknessDet2(200.);
00555
00556 ITS->SetThicknessChip1(200.);
00557
00558 ITS->SetThicknessChip2(200.);
00559
00560 ITS->SetRails(0);
00561
00562 ITS->SetCoolingFluid(1);
00563
00564
00565
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579
00580
00581
00582
00583
00584
00585
00586
00587
00588
00589
00590
00591
00592
00593 ITS->SetEUCLID(0);
00594 }
00595
00596 if (useTPC) {
00597
00598
00599
00600
00601
00602
00603
00604
00605
00606
00607
00608
00609
00610
00611
00612
00613
00614
00615
00616
00617
00618
00619 AliTPC *TPC = new AliTPCv2("TPC", "Default");
00620 }
00621
00622 if (useTOF) {
00623
00624 AliTOF *TOF = new AliTOFv4T0("TOF", "normal TOF");
00625 }
00626
00627 if (useRICH) {
00628
00629 AliRICH *RICH = new AliRICHv1("RICH", "normal RICH");
00630
00631 }
00632
00633 if (useZDC) {
00634
00635 AliZDC *ZDC = new AliZDCv2("ZDC", "normal ZDC");
00636 }
00637
00638 if (useTRD) {
00639
00640 AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
00641
00642
00643 TRD->SetGasMix(1);
00644 if (geo == kHoles) {
00645
00646 TRD->SetPHOShole();
00647
00648 TRD->SetRICHhole();
00649 }
00650
00651 AliTRDsim *TRDsim = TRD->CreateTR();
00652 }
00653
00654 if (useFMD) {
00655
00656 AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
00657 AliLog::SetModuleDebugLevel("FMD", 1);
00658
00659
00660
00661 }
00662
00663 if (useMUON) {
00664
00665 AliMUON *MUON = new AliMUONv1("MUON", "default");
00666
00667
00668
00669
00670 }
00671
00672 if (usePHOS) {
00673
00674 AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP");
00675 }
00676
00677 if (usePMD) {
00678
00679 AliPMD *PMD = new AliPMDv1("PMD", "normal PMD");
00680 }
00681
00682 if (useSTART) {
00683
00684 AliSTART *START = new AliSTARTv1("START", "START Detector");
00685 }
00686
00687 if (useEMCAL) {
00688
00689 AliEMCAL *EMCAL = new AliEMCALv1("EMCAL", "EMCAL_55_25");
00690 }
00691
00692 if (useCRT) {
00693
00694 AliCRT *CRT = new AliCRTv0("CRT", "normal ACORDE");
00695 }
00696
00697 if (useVZERO) {
00698
00699 AliVZERO *VZERO = new AliVZEROv3("VZERO", "normal VZERO");
00700 }
00701 }
00702
00703
00704 Float_t EtaToTheta(Float_t arg)
00705 {
00706 return (180./TMath::Pi())*2.*TMath::ATan(TMath::Exp(-arg));
00707 }
00708
00709
00710 Int_t
00711 LookupEG(const Char_t* name)
00712 {
00713 TString n(name);
00714 for (Int_t i = 0; i < kEgMax; i++) {
00715 if (n == egName[i]) return i;
00716 }
00717 return -1;
00718 }
00719
00720
00721 AliGenerator*
00722 GeneratorFactory(EG_t eg, Rad_t rad, TString& comment)
00723 {
00724 Int_t isw = 3;
00725 if (rad == kNoGluonRadiation) isw = 0;
00726
00727
00728 AliGenerator * gGener = 0;
00729 switch (eg) {
00730 case test50:
00731 {
00732 comment = comment.Append(":HIJINGparam test 50 particles");
00733 AliGenHIJINGpara *gener = new AliGenHIJINGpara(50);
00734 gener->SetMomentumRange(0, 999999.);
00735 gener->SetPhiRange(0., 360.);
00736
00737 Float_t thmin = EtaToTheta(8);
00738 Float_t thmax = EtaToTheta(-8);
00739 gener->SetThetaRange(thmin,thmax);
00740 gGener=gener;
00741 }
00742 break;
00743 case kParam_8000:
00744 {
00745 comment = comment.Append(":HIJINGparam N=8000");
00746 AliGenHIJINGpara *gener = new AliGenHIJINGpara(86030);
00747 gener->SetMomentumRange(0, 999999.);
00748 gener->SetPhiRange(0., 360.);
00749
00750 Float_t thmin = EtaToTheta(8);
00751 Float_t thmax = EtaToTheta(-8);
00752 gener->SetThetaRange(thmin,thmax);
00753 gGener=gener;
00754 }
00755 break;
00756 case kParam_4000:
00757 {
00758 comment = comment.Append("HIJINGparam N=4000");
00759 AliGenHIJINGpara *gener = new AliGenHIJINGpara(43015);
00760 gener->SetMomentumRange(0, 999999.);
00761 gener->SetPhiRange(0., 360.);
00762
00763 Float_t thmin = EtaToTheta(8);
00764 Float_t thmax = EtaToTheta(-8);
00765 gener->SetThetaRange(thmin,thmax);
00766 gGener=gener;
00767 }
00768 break;
00769 case kParam_2000:
00770 {
00771 comment = comment.Append("HIJINGparam N=2000");
00772 AliGenHIJINGpara *gener = new AliGenHIJINGpara(21507);
00773 gener->SetMomentumRange(0, 999999.);
00774 gener->SetPhiRange(0., 360.);
00775
00776 Float_t thmin = EtaToTheta(8);
00777 Float_t thmax = EtaToTheta(-8);
00778 gener->SetThetaRange(thmin,thmax);
00779 gGener=gener;
00780 }
00781 break;
00782 case kParam_fmd:
00783 {
00784 comment = comment.Append("HIJINGparam N=100");
00785 AliGenHIJINGpara *gener = new AliGenHIJINGpara(500);
00786 gener->SetMomentumRange(0, 999999.);
00787 gener->SetPhiRange(0., 360.);
00788
00789 Float_t thmin = EtaToTheta(6);
00790 Float_t thmax = EtaToTheta(2);
00791 gener->SetThetaRange(thmin,thmax);
00792 gGener=gener;
00793 }
00794 break;
00795
00796
00797
00798 case kHijing_cent1:
00799 {
00800 comment = comment.Append("HIJING cent1");
00801 AliGenHijing *gener = HijingStandard();
00802
00803 gener->SetImpactParameterRange(0., 5.);
00804 gGener=gener;
00805 }
00806 break;
00807 case kHijing_cent2:
00808 {
00809 comment = comment.Append("HIJING cent2");
00810 AliGenHijing *gener = HijingStandard();
00811
00812 gener->SetImpactParameterRange(0., 2.);
00813 gGener=gener;
00814 }
00815 break;
00816
00817
00818
00819 case kHijing_per1:
00820 {
00821 comment = comment.Append("HIJING per1");
00822 AliGenHijing *gener = HijingStandard();
00823
00824 gener->SetImpactParameterRange(5., 8.6);
00825 gGener=gener;
00826 }
00827 break;
00828 case kHijing_per2:
00829 {
00830 comment = comment.Append("HIJING per2");
00831 AliGenHijing *gener = HijingStandard();
00832
00833 gener->SetImpactParameterRange(8.6, 11.2);
00834 gGener=gener;
00835 }
00836 break;
00837 case kHijing_per3:
00838 {
00839 comment = comment.Append("HIJING per3");
00840 AliGenHijing *gener = HijingStandard();
00841
00842 gener->SetImpactParameterRange(11.2, 13.2);
00843 gGener=gener;
00844 }
00845 break;
00846 case kHijing_per4:
00847 {
00848 comment = comment.Append("HIJING per4");
00849 AliGenHijing *gener = HijingStandard();
00850
00851 gener->SetImpactParameterRange(13.2, 15.);
00852 gGener=gener;
00853 }
00854 break;
00855 case kHijing_per5:
00856 {
00857 comment = comment.Append("HIJING per5");
00858 AliGenHijing *gener = HijingStandard();
00859
00860 gener->SetImpactParameterRange(15., 100.);
00861 gGener=gener;
00862 }
00863 break;
00864
00865
00866
00867 case kHijing_jj25:
00868 {
00869 comment = comment.Append("HIJING Jet 25 GeV");
00870 AliGenHijing *gener = HijingStandard();
00871
00872 gener->SetImpactParameterRange(0., 5.);
00873
00874 gener->SetTrigger(1);
00875 gener->SetPtJet(25.);
00876 gener->SetRadiation(isw);
00877 gener->SetSimpleJets(!isw);
00878 gener->SetJetEtaRange(-0.3,0.3);
00879 gener->SetJetPhiRange(75., 165.);
00880 gGener=gener;
00881 }
00882 break;
00883
00884 case kHijing_jj50:
00885 {
00886 comment = comment.Append("HIJING Jet 50 GeV");
00887 AliGenHijing *gener = HijingStandard();
00888
00889 gener->SetImpactParameterRange(0., 5.);
00890
00891 gener->SetTrigger(1);
00892 gener->SetPtJet(50.);
00893 gener->SetRadiation(isw);
00894 gener->SetSimpleJets(!isw);
00895 gener->SetJetEtaRange(-0.3,0.3);
00896 gener->SetJetPhiRange(75., 165.);
00897 gGener=gener;
00898 }
00899 break;
00900
00901 case kHijing_jj75:
00902 {
00903 comment = comment.Append("HIJING Jet 75 GeV");
00904 AliGenHijing *gener = HijingStandard();
00905
00906 gener->SetImpactParameterRange(0., 5.);
00907
00908 gener->SetTrigger(1);
00909 gener->SetPtJet(75.);
00910 gener->SetRadiation(isw);
00911 gener->SetSimpleJets(!isw);
00912 gener->SetJetEtaRange(-0.3,0.3);
00913 gener->SetJetPhiRange(75., 165.);
00914 gGener=gener;
00915 }
00916 break;
00917
00918 case kHijing_jj100:
00919 {
00920 comment = comment.Append("HIJING Jet 100 GeV");
00921 AliGenHijing *gener = HijingStandard();
00922
00923 gener->SetImpactParameterRange(0., 5.);
00924
00925 gener->SetTrigger(1);
00926 gener->SetPtJet(100.);
00927 gener->SetRadiation(isw);
00928 gener->SetSimpleJets(!isw);
00929 gener->SetJetEtaRange(-0.3,0.3);
00930 gener->SetJetPhiRange(75., 165.);
00931 gGener=gener;
00932 }
00933 break;
00934
00935 case kHijing_jj200:
00936 {
00937 comment = comment.Append("HIJING Jet 200 GeV");
00938 AliGenHijing *gener = HijingStandard();
00939
00940 gener->SetImpactParameterRange(0., 5.);
00941
00942 gener->SetTrigger(1);
00943 gener->SetPtJet(200.);
00944 gener->SetRadiation(isw);
00945 gener->SetSimpleJets(!isw);
00946 gener->SetJetEtaRange(-0.3,0.3);
00947 gener->SetJetPhiRange(75., 165.);
00948 gGener=gener;
00949 }
00950 break;
00951
00952
00953
00954 case kHijing_gj25:
00955 {
00956 comment = comment.Append("HIJING Gamma 25 GeV");
00957 AliGenHijing *gener = HijingStandard();
00958
00959 gener->SetImpactParameterRange(0., 5.);
00960
00961 gener->SetTrigger(2);
00962 gener->SetPtJet(25.);
00963 gener->SetRadiation(isw);
00964 gener->SetSimpleJets(!isw);
00965 gener->SetJetEtaRange(-0.12, 0.12);
00966 gener->SetJetPhiRange(220., 320.);
00967 gGener=gener;
00968 }
00969 break;
00970
00971 case kHijing_gj50:
00972 {
00973 comment = comment.Append("HIJING Gamma 50 GeV");
00974 AliGenHijing *gener = HijingStandard();
00975
00976 gener->SetImpactParameterRange(0., 5.);
00977
00978 gener->SetTrigger(2);
00979 gener->SetPtJet(50.);
00980 gener->SetRadiation(isw);
00981 gener->SetSimpleJets(!isw);
00982 gener->SetJetEtaRange(-0.12, 0.12);
00983 gener->SetJetPhiRange(220., 320.);
00984 gGener=gener;
00985 }
00986 break;
00987
00988 case kHijing_gj75:
00989 {
00990 comment = comment.Append("HIJING Gamma 75 GeV");
00991 AliGenHijing *gener = HijingStandard();
00992
00993 gener->SetImpactParameterRange(0., 5.);
00994
00995 gener->SetTrigger(2);
00996 gener->SetPtJet(75.);
00997 gener->SetRadiation(isw);
00998 gener->SetSimpleJets(!isw);
00999 gener->SetJetEtaRange(-0.12, 0.12);
01000 gener->SetJetPhiRange(220., 320.);
01001 gGener=gener;
01002 }
01003 break;
01004
01005 case kHijing_gj100:
01006 {
01007 comment = comment.Append("HIJING Gamma 100 GeV");
01008 AliGenHijing *gener = HijingStandard();
01009
01010 gener->SetImpactParameterRange(0., 5.);
01011
01012 gener->SetTrigger(2);
01013 gener->SetPtJet(100.);
01014 gener->SetRadiation(isw);
01015 gener->SetSimpleJets(!isw);
01016 gener->SetJetEtaRange(-0.12, 0.12);
01017 gener->SetJetPhiRange(220., 320.);
01018 gGener=gener;
01019 }
01020 break;
01021
01022 case kHijing_gj200:
01023 {
01024 comment = comment.Append("HIJING Gamma 200 GeV");
01025 AliGenHijing *gener = HijingStandard();
01026
01027 gener->SetImpactParameterRange(0., 5.);
01028
01029 gener->SetTrigger(2);
01030 gener->SetPtJet(200.);
01031 gener->SetRadiation(isw);
01032 gener->SetSimpleJets(!isw);
01033 gener->SetJetEtaRange(-0.12, 0.12);
01034 gener->SetJetPhiRange(220., 320.);
01035 gGener=gener;
01036 }
01037 break;
01038 case kHijing_pA:
01039 {
01040 comment = comment.Append("HIJING pA");
01041
01042 AliGenCocktail *gener = new AliGenCocktail();
01043
01044 AliGenHijing *hijing = new AliGenHijing(-1);
01045
01046 hijing->SetEnergyCMS(TMath::Sqrt(82./208.) * 14000.);
01047
01048 hijing->SetImpactParameterRange(0., 15.);
01049
01050 hijing->SetReferenceFrame("CMS");
01051 hijing->SetBoostLHC(1);
01052
01053 hijing->SetProjectile("P", 1, 1);
01054 hijing->SetTarget ("A", 208, 82);
01055
01056 hijing->KeepFullEvent();
01057
01058 hijing->SetJetQuenching(0);
01059
01060 hijing->SetShadowing(1);
01061
01062 hijing->SetSpectators(0);
01063
01064 hijing->SetSelectAll(0);
01065
01066 AliGenSlowNucleons* gray = new AliGenSlowNucleons(1);
01067 AliSlowNucleonModel* model = new AliSlowNucleonModelExp();
01068 gray->SetSlowNucleonModel(model);
01069 gray->SetDebug(1);
01070 gener->AddGenerator(hijing,"Hijing pPb", 1);
01071 gener->AddGenerator(gray, "Gray Particles",1);
01072 gGener=gener;
01073 }
01074 break;
01075 case kPythia6:
01076 {
01077 comment = comment.Append(":Pythia p-p @ 14 TeV");
01078 AliGenPythia *gener = new AliGenPythia(-1);
01079 gener->SetMomentumRange(0,999999);
01080 gener->SetThetaRange(0., 180.);
01081 gener->SetYRange(-12,12);
01082 gener->SetPtRange(0,1000);
01083 gener->SetProcess(kPyMb);
01084 gener->SetEnergyCMS(14000.);
01085 gGener=gener;
01086 }
01087 break;
01088 case kPythia6Jets20_24:
01089 {
01090 comment = comment.Append(":Pythia jets 20-24 GeV @ 5.5 TeV");
01091 AliGenPythia * gener = new AliGenPythia(-1);
01092 gener->SetEnergyCMS(5500.);
01093 gener->SetProcess(kPyJets);
01094 gener->SetJetEtaRange(-0.5, 0.5);
01095 gener->SetJetPhiRange(0., 360.);
01096 gener->SetJetEtRange(10., 1000.);
01097 gener->SetGluonRadiation(1,1);
01098
01099
01100 gener->SetStrucFunc(kCTEQ4L);
01101 gener->SetPtHard(20., 24.);
01102 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
01103 gener->SetForceDecay(kAll);
01104 gGener=gener;
01105 }
01106 break;
01107 case kPythia6Jets24_29:
01108 {
01109 comment = comment.Append(":Pythia jets 24-29 GeV @ 5.5 TeV");
01110 AliGenPythia * gener = new AliGenPythia(-1);
01111 gener->SetEnergyCMS(5500.);
01112 gener->SetProcess(kPyJets);
01113 gener->SetJetEtaRange(-0.5, 0.5);
01114 gener->SetJetPhiRange(0., 360.);
01115 gener->SetJetEtRange(10., 1000.);
01116 gener->SetGluonRadiation(1,1);
01117
01118
01119 gener->SetStrucFunc(kCTEQ4L);
01120 gener->SetPtHard(24., 29.);
01121 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
01122 gener->SetForceDecay(kAll);
01123 gGener=gener;
01124 }
01125 break;
01126 case kPythia6Jets29_35:
01127 {
01128 comment = comment.Append(":Pythia jets 29-35 GeV @ 5.5 TeV");
01129 AliGenPythia * gener = new AliGenPythia(-1);
01130 gener->SetEnergyCMS(5500.);
01131 gener->SetProcess(kPyJets);
01132 gener->SetJetEtaRange(-0.5, 0.5);
01133 gener->SetJetPhiRange(0., 360.);
01134 gener->SetJetEtRange(10., 1000.);
01135 gener->SetGluonRadiation(1,1);
01136
01137
01138 gener->SetStrucFunc(kCTEQ4L);
01139 gener->SetPtHard(29., 35.);
01140 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
01141 gener->SetForceDecay(kAll);
01142 gGener=gener;
01143 }
01144 break;
01145 case kPythia6Jets35_42:
01146 {
01147 comment = comment.Append(":Pythia jets 35-42 GeV @ 5.5 TeV");
01148 AliGenPythia * gener = new AliGenPythia(-1);
01149 gener->SetEnergyCMS(5500.);
01150 gener->SetProcess(kPyJets);
01151 gener->SetJetEtaRange(-0.5, 0.5);
01152 gener->SetJetPhiRange(0., 360.);
01153 gener->SetJetEtRange(10., 1000.);
01154 gener->SetGluonRadiation(1,1);
01155
01156
01157 gener->SetStrucFunc(kCTEQ4L);
01158 gener->SetPtHard(35., 42.);
01159 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
01160 gener->SetForceDecay(kAll);
01161 gGener=gener;
01162 }
01163 break;
01164 case kPythia6Jets42_50:
01165 {
01166 comment = comment.Append(":Pythia jets 42-50 GeV @ 5.5 TeV");
01167 AliGenPythia * gener = new AliGenPythia(-1);
01168 gener->SetEnergyCMS(5500.);
01169 gener->SetProcess(kPyJets);
01170 gener->SetJetEtaRange(-0.5, 0.5);
01171 gener->SetJetPhiRange(0., 360.);
01172 gener->SetJetEtRange(10., 1000.);
01173 gener->SetGluonRadiation(1,1);
01174
01175
01176 gener->SetStrucFunc(kCTEQ4L);
01177 gener->SetPtHard(42., 50.);
01178 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
01179 gener->SetForceDecay(kAll);
01180 gGener=gener;
01181 }
01182 break;
01183 case kPythia6Jets50_60:
01184 {
01185 comment = comment.Append(":Pythia jets 50-60 GeV @ 5.5 TeV");
01186 AliGenPythia * gener = new AliGenPythia(-1);
01187 gener->SetEnergyCMS(5500.);
01188 gener->SetProcess(kPyJets);
01189 gener->SetJetEtaRange(-0.5, 0.5);
01190 gener->SetJetPhiRange(0., 360.);
01191 gener->SetJetEtRange(10., 1000.);
01192 gener->SetGluonRadiation(1,1);
01193
01194
01195 gener->SetStrucFunc(kCTEQ4L);
01196 gener->SetPtHard(50., 60.);
01197 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
01198 gener->SetForceDecay(kAll);
01199 gGener=gener;
01200 }
01201 break;
01202 case kPythia6Jets60_72:
01203 {
01204 comment = comment.Append(":Pythia jets 60-72 GeV @ 5.5 TeV");
01205 AliGenPythia * gener = new AliGenPythia(-1);
01206 gener->SetEnergyCMS(5500.);
01207 gener->SetProcess(kPyJets);
01208 gener->SetJetEtaRange(-0.5, 0.5);
01209 gener->SetJetPhiRange(0., 360.);
01210 gener->SetJetEtRange(10., 1000.);
01211 gener->SetGluonRadiation(1,1);
01212
01213
01214 gener->SetStrucFunc(kCTEQ4L);
01215 gener->SetPtHard(60., 72.);
01216 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
01217 gener->SetForceDecay(kAll);
01218 gGener=gener;
01219 }
01220 break;
01221 case kPythia6Jets72_86:
01222 {
01223 comment = comment.Append(":Pythia jets 72-86 GeV @ 5.5 TeV");
01224 AliGenPythia * gener = new AliGenPythia(-1);
01225 gener->SetEnergyCMS(5500.);
01226 gener->SetProcess(kPyJets);
01227 gener->SetJetEtaRange(-0.5, 0.5);
01228 gener->SetJetPhiRange(0., 360.);
01229 gener->SetJetEtRange(10., 1000.);
01230 gener->SetGluonRadiation(1,1);
01231
01232
01233 gener->SetStrucFunc(kCTEQ4L);
01234 gener->SetPtHard(72., 86.);
01235 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
01236 gener->SetForceDecay(kAll);
01237 gGener=gener;
01238 }
01239 break;
01240 case kPythia6Jets86_104:
01241 {
01242 comment = comment.Append(":Pythia jets 86-104 GeV @ 5.5 TeV");
01243 AliGenPythia * gener = new AliGenPythia(-1);
01244 gener->SetEnergyCMS(5500.);
01245 gener->SetProcess(kPyJets);
01246 gener->SetJetEtaRange(-0.5, 0.5);
01247 gener->SetJetPhiRange(0., 360.);
01248 gener->SetJetEtRange(10., 1000.);
01249 gener->SetGluonRadiation(1,1);
01250
01251
01252 gener->SetStrucFunc(kCTEQ4L);
01253 gener->SetPtHard(86., 104.);
01254 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
01255 gener->SetForceDecay(kAll);
01256 gGener=gener;
01257 }
01258 break;
01259 case kPythia6Jets104_125:
01260 {
01261 comment = comment.Append(":Pythia jets 105-125 GeV @ 5.5 TeV");
01262 AliGenPythia * gener = new AliGenPythia(-1);
01263 gener->SetEnergyCMS(5500.);
01264 gener->SetProcess(kPyJets);
01265 gener->SetJetEtaRange(-0.5, 0.5);
01266 gener->SetJetPhiRange(0., 360.);
01267 gener->SetJetEtRange(10., 1000.);
01268 gener->SetGluonRadiation(1,1);
01269
01270
01271 gener->SetStrucFunc(kCTEQ4L);
01272 gener->SetPtHard(104., 125.);
01273 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
01274 gener->SetForceDecay(kAll);
01275 gGener=gener;
01276 }
01277 break;
01278 case kPythia6Jets125_150:
01279 {
01280 comment = comment.Append(":Pythia jets 125-150 GeV @ 5.5 TeV");
01281 AliGenPythia * gener = new AliGenPythia(-1);
01282 gener->SetEnergyCMS(5500.);
01283 gener->SetProcess(kPyJets);
01284 gener->SetJetEtaRange(-0.5, 0.5);
01285 gener->SetJetPhiRange(0., 360.);
01286 gener->SetJetEtRange(10., 1000.);
01287 gener->SetGluonRadiation(1,1);
01288
01289
01290 gener->SetStrucFunc(kCTEQ4L);
01291 gener->SetPtHard(125., 150.);
01292 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
01293 gener->SetForceDecay(kAll);
01294 gGener=gener;
01295 }
01296 break;
01297 case kPythia6Jets150_180:
01298 {
01299 comment = comment.Append(":Pythia jets 150-180 GeV @ 5.5 TeV");
01300 AliGenPythia * gener = new AliGenPythia(-1);
01301 gener->SetEnergyCMS(5500.);
01302 gener->SetProcess(kPyJets);
01303 gener->SetJetEtaRange(-0.5, 0.5);
01304 gener->SetJetPhiRange(0., 360.);
01305 gener->SetJetEtRange(10., 1000.);
01306 gener->SetGluonRadiation(1,1);
01307
01308
01309 gener->SetStrucFunc(kCTEQ4L);
01310 gener->SetPtHard(150., 180.);
01311 gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
01312 gener->SetForceDecay(kAll);
01313 gGener=gener;
01314 }
01315 break;
01316 case kD0PbPb5500:
01317 {
01318 comment = comment.Append(" D0 in Pb-Pb at 5.5 TeV");
01319 AliGenPythia * gener = new AliGenPythia(10);
01320 gener->SetProcess(kPyD0PbPbMNR);
01321 gener->SetStrucFunc(kCTEQ4L);
01322 gener->SetPtHard(2.1,-1.0);
01323 gener->SetEnergyCMS(5500.);
01324 gener->SetNuclei(208,208);
01325 gener->SetForceDecay(kHadronicD);
01326 gener->SetYRange(-2,2);
01327 gener->SetFeedDownHigherFamily(kFALSE);
01328 gener->SetStackFillOpt(AliGenPythia::kParentSelection);
01329 gener->SetCountMode(AliGenPythia::kCountParents);
01330 gGener=gener;
01331 }
01332 break;
01333 case kCharmSemiElPbPb5500:
01334 {
01335 comment = comment.Append(" Charm in Pb-Pb at 5.5 TeV");
01336 AliGenPythia * gener = new AliGenPythia(10);
01337 gener->SetProcess(kPyCharmPbPbMNR);
01338 gener->SetStrucFunc(kCTEQ4L);
01339 gener->SetPtHard(2.1,-1.0);
01340 gener->SetEnergyCMS(5500.);
01341 gener->SetNuclei(208,208);
01342 gener->SetForceDecay(kSemiElectronic);
01343 gener->SetYRange(-2,2);
01344 gener->SetFeedDownHigherFamily(kFALSE);
01345 gener->SetCountMode(AliGenPythia::kCountParents);
01346 gGener=gener;
01347 }
01348 break;
01349 case kBeautySemiElPbPb5500:
01350 {
01351 comment = comment.Append(" Beauty in Pb-Pb at 5.5 TeV");
01352 AliGenPythia *gener = new AliGenPythia(10);
01353 gener->SetProcess(kPyBeautyPbPbMNR);
01354 gener->SetStrucFunc(kCTEQ4L);
01355 gener->SetPtHard(2.75,-1.0);
01356 gener->SetEnergyCMS(5500.);
01357 gener->SetNuclei(208,208);
01358 gener->SetForceDecay(kSemiElectronic);
01359 gener->SetYRange(-2,2);
01360 gener->SetFeedDownHigherFamily(kFALSE);
01361 gener->SetCountMode(AliGenPythia::kCountParents);
01362 gGener=gener;
01363 }
01364 break;
01365 case kCocktailTRD:
01366 {
01367 comment = comment.Append(" Cocktail for TRD at 5.5 TeV");
01368 AliGenCocktail *gener = new AliGenCocktail();
01369
01370 AliGenParam *jpsi = new AliGenParam(10,
01371 new AliGenMUONlib(),
01372 AliGenMUONlib::kJpsiFamily,
01373 "Vogt PbPb");
01374
01375 jpsi->SetPtRange(0, 100);
01376 jpsi->SetYRange(-1., +1.);
01377 jpsi->SetForceDecay(kDiElectron);
01378
01379 AliGenParam *ups = new AliGenParam(10,
01380 new AliGenMUONlib(),
01381 AliGenMUONlib::kUpsilonFamily,
01382 "Vogt PbPb");
01383 ups->SetPtRange(0, 100);
01384 ups->SetYRange(-1., +1.);
01385 ups->SetForceDecay(kDiElectron);
01386
01387 AliGenParam *charm = new AliGenParam(10,
01388 new AliGenMUONlib(),
01389 AliGenMUONlib::kCharm,
01390 "central");
01391 charm->SetPtRange(0, 100);
01392 charm->SetYRange(-1.5, +1.5);
01393 charm->SetForceDecay(kSemiElectronic);
01394
01395
01396 AliGenParam *beauty = new AliGenParam(10,
01397 new AliGenMUONlib(),
01398 AliGenMUONlib::kBeauty,
01399 "central");
01400 beauty->SetPtRange(0, 100);
01401 beauty->SetYRange(-1.5, +1.5);
01402 beauty->SetForceDecay(kSemiElectronic);
01403
01404 gener->AddGenerator(jpsi,"J/psi",1);
01405 gener->AddGenerator(ups,"Upsilon",1);
01406 gener->AddGenerator(charm,"Charm",1);
01407 gener->AddGenerator(beauty,"Beauty",1);
01408 gGener=gener;
01409 }
01410 break;
01411 case kPyJJ:
01412 {
01413 comment = comment.Append(" Jet-jet at 5.5 TeV");
01414 AliGenPythia *gener = new AliGenPythia(-1);
01415 gener->SetEnergyCMS(5500.);
01416 gener->SetProcess(kPyJets);
01417 Double_t ptHardMin=10.0, ptHardMax=-1.0;
01418 gener->SetPtHard(ptHardMin,ptHardMax);
01419 gener->SetYHard(-0.7,0.7);
01420 gener->SetJetEtaRange(-0.2,0.2);
01421 gener->SetEventListRange(0,1);
01422 gGener=gener;
01423 }
01424 break;
01425 case kPyGJ:
01426 {
01427 comment = comment.Append(" Gamma-jet at 5.5 TeV");
01428 AliGenPythia *gener = new AliGenPythia(-1);
01429 gener->SetEnergyCMS(5500.);
01430 gener->SetProcess(kPyDirectGamma);
01431 Double_t ptHardMin=10.0, ptHardMax=-1.0;
01432 gener->SetPtHard(ptHardMin,ptHardMax);
01433 gener->SetYHard(-1.0,1.0);
01434 gener->SetGammaEtaRange(-0.13,0.13);
01435 gener->SetGammaPhiRange(210.,330.);
01436 gener->SetEventListRange(0,1);
01437 gGener=gener;
01438 }
01439 break;
01440 case kMuonCocktailCent1:
01441 {
01442 comment = comment.Append(" Muon Cocktail Cent1");
01443 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
01444 gener->SetPtRange(1.0,100.);
01445 gener->SetPhiRange(0.,360.);
01446 gener->SetYRange(-4.0,-2.4);
01447 gener->SetMuonPtCut(0.8);
01448 gener->SetMuonThetaCut(171.,178.);
01449 gener->SetMuonMultiplicity(2);
01450 gener->SetNumberOfCollisions(1626.);
01451 gener->SetNumberOfParticipants(359.4);
01452 gGener=gener;
01453 }
01454 break;
01455 case kMuonCocktailPer1:
01456 {
01457 comment = comment.Append(" Muon Cocktail Per1");
01458 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
01459 gener->SetPtRange(1.0,100.);
01460 gener->SetPhiRange(0.,360.);
01461 gener->SetYRange(-4.0,-2.4);
01462 gener->SetMuonPtCut(0.8);
01463 gener->SetMuonThetaCut(171.,178.);
01464 gener->SetMuonMultiplicity(2);
01465 gener->SetNumberOfCollisions(820.0);
01466 gener->SetNumberOfParticipants(229.3);
01467 gGener=gener;
01468 }
01469 break;
01470 case kMuonCocktailPer4:
01471 {
01472 comment = comment.Append(" Muon Cocktail Per4");
01473 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
01474 gener->SetPtRange(1.0,100.);
01475 gener->SetPhiRange(0.,360.);
01476 gener->SetYRange(-4.0,-2.4);
01477 gener->SetMuonPtCut(0.8);
01478 gener->SetMuonThetaCut(171.,178.);
01479 gener->SetMuonMultiplicity(2);
01480 gener->SetNumberOfCollisions(13.6);
01481 gener->SetNumberOfParticipants(13.3);
01482 gGener=gener;
01483 }
01484 break;
01485 case kMuonCocktailCent1HighPt:
01486 {
01487 comment = comment.Append(" Muon Cocktail HighPt Cent1");
01488 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
01489 gener->SetPtRange(1.0,100.);
01490 gener->SetPhiRange(0.,360.);
01491 gener->SetYRange(-4.0,-2.4);
01492 gener->SetMuonPtCut(2.5);
01493 gener->SetMuonThetaCut(171.,178.);
01494 gener->SetMuonMultiplicity(2);
01495 gener->SetNumberOfCollisions(1626.);
01496 gener->SetNumberOfParticipants(359.4);
01497 gGener=gener;
01498 }
01499 break;
01500 case kMuonCocktailPer1HighPt :
01501 {
01502 comment = comment.Append(" Muon Cocktail HighPt Per1");
01503 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
01504 gener->SetPtRange(1.0,100.);
01505 gener->SetPhiRange(0.,360.);
01506 gener->SetYRange(-4.0,-2.4);
01507 gener->SetMuonPtCut(2.5);
01508 gener->SetMuonThetaCut(171.,178.);
01509 gener->SetMuonMultiplicity(2);
01510 gener->SetNumberOfCollisions(820.0);
01511 gener->SetNumberOfParticipants(229.3);
01512 gGener=gener;
01513 }
01514 break;
01515 case kMuonCocktailPer4HighPt:
01516 {
01517 comment = comment.Append(" Muon Cocktail HighPt Per4");
01518 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
01519 gener->SetPtRange(1.0,100.);
01520 gener->SetPhiRange(0.,360.);
01521 gener->SetYRange(-4.0,-2.4);
01522 gener->SetMuonPtCut(2.5);
01523 gener->SetMuonThetaCut(171.,178.);
01524 gener->SetMuonMultiplicity(2);
01525 gener->SetNumberOfCollisions(13.6);
01526 gener->SetNumberOfParticipants(13.3);
01527 gGener=gener;
01528 }
01529 break;
01530 case kMuonCocktailCent1Single:
01531 {
01532 comment = comment.Append(" Muon Cocktail Single Cent1");
01533 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
01534 gener->SetPtRange(1.0,100.);
01535 gener->SetPhiRange(0.,360.);
01536 gener->SetYRange(-4.0,-2.4);
01537 gener->SetMuonPtCut(0.8);
01538 gener->SetMuonThetaCut(171.,178.);
01539 gener->SetMuonMultiplicity(1);
01540 gener->SetNumberOfCollisions(1626.);
01541 gener->SetNumberOfParticipants(359.4);
01542 gGener=gener;
01543 }
01544 break;
01545 case kMuonCocktailPer1Single :
01546 {
01547 comment = comment.Append(" Muon Cocktail Single Per1");
01548 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
01549 gener->SetPtRange(1.0,100.);
01550 gener->SetPhiRange(0.,360.);
01551 gener->SetYRange(-4.0,-2.4);
01552 gener->SetMuonPtCut(0.8);
01553 gener->SetMuonThetaCut(171.,178.);
01554 gener->SetMuonMultiplicity(1);
01555 gener->SetNumberOfCollisions(820.0);
01556 gener->SetNumberOfParticipants(229.3);
01557 gGener=gener;
01558 }
01559 break;
01560 case kMuonCocktailPer4Single:
01561 {
01562 comment = comment.Append(" Muon Cocktail Single Per4");
01563 AliGenMUONCocktail * gener = new AliGenMUONCocktail();
01564 gener->SetPtRange(1.0,100.);
01565 gener->SetPhiRange(0.,360.);
01566 gener->SetYRange(-4.0,-2.4);
01567 gener->SetMuonPtCut(0.8);
01568 gener->SetMuonThetaCut(171.,178.);
01569 gener->SetMuonMultiplicity(1);
01570 gener->SetNumberOfCollisions(13.6);
01571 gener->SetNumberOfParticipants(13.3);
01572 gGener=gener;
01573 }
01574 break;
01575 case kFMD1Flat:
01576 {
01577 comment = comment.Append(" Flat in FMD1 range");
01578 AliGenBox* gener = new AliGenBox(2000);
01579 gener->SetPart(211);
01580 gener->SetMomentumRange(3,4);
01581 gener->SetPhiRange(0, 360);
01582 gener->SetThetaRange(0.77, 3.08);
01583 gGener = gener;
01584 }
01585 break;
01586 case kFMD2Flat:
01587 {
01588 comment = comment.Append(" Flat in FMD2 range");
01589 AliGenBox* gener = new AliGenBox(2000);
01590 gener->SetPart(211);
01591 gener->SetMomentumRange(3,4);
01592 gener->SetPhiRange(0, 360);
01593 gener->SetThetaRange(2.95, 20.42);
01594 gGener = gener;
01595 }
01596 break;
01597 case kFMD3Flat:
01598 {
01599 comment = comment.Append(" Flat in FMD3 range");
01600 AliGenBox* gener = new AliGenBox(2000);
01601 gener->SetPart(211);
01602 gener->SetMomentumRange(3,4);
01603 gener->SetPhiRange(0, 360);
01604 gener->SetThetaRange(155.97, 176.73);
01605 gGener = gener;
01606 }
01607 break;
01608 case kFMDFlat:
01609 {
01610 comment = comment.Append(" Flat in FMD range");
01611 AliGenCocktail* gener = AliGenCocktail("FMD cocktail");
01612 gener->SetPart(211);
01613 gener->SetMomentumRange(3,4);
01614 gener->SetPhiRange(0, 360);
01615 AliGenBox* gener3 = new AliGenBox(2000);
01616 gener3->SetThetaRange(155.97, 176.73);
01617 gener->AddGenerator(gener3, "FMD3", .33);
01618 AliGenBox* gener2 = new AliGenBox(2000);
01619 gener2->SetThetaRange(2.95, 20.42);
01620 gener->AddGenerator(gener2, "FMD2", .33);
01621 AliGenBox* gener1 = new AliGenBox(2000);
01622 gener1->SetThetaRange(0.77, 3.08);
01623 gener->AddGenerator(gener1, "FMD1", .34);
01624 gGener = gener;
01625 }
01626 break;
01627
01628 default: break;
01629 }
01630 return gGener;
01631 }
01632
01633
01634 AliGenHijing*
01635 HijingStandard()
01636 {
01637 AliGenHijing *gener = new AliGenHijing(-1);
01638
01639 gener->SetEnergyCMS(5500.);
01640
01641 gener->SetReferenceFrame("CMS");
01642
01643 gener->SetProjectile("A", 208, 82);
01644 gener->SetTarget ("A", 208, 82);
01645
01646 gener->KeepFullEvent();
01647
01648 gener->SetJetQuenching(1);
01649
01650 gener->SetShadowing(1);
01651
01652 gener->SetDecaysOff(1);
01653
01654 gener->SetSpectators(0);
01655
01656 gener->SetSelectAll(0);
01657 return gener;
01658 }
01659
01660
01661
01662 void
01663 ProcessEnvironmentVars(EG_t& eg, Int_t& seed)
01664 {
01665
01666 if (gSystem->Getenv("CONFIG_RUN_TYPE")) {
01667 Int_t eg1 = LookupEG(gSystem->Getenv("CONFIG_RUN_TYPE"));
01668 if (eg1 >= 0) eg = EG_t(eg1);
01669 }
01670
01671 if (gSystem->Getenv("CONFIG_SEED")) {
01672 seed = atoi(gSystem->Getenv("CONFIG_SEED"));
01673 }
01674 }
01675
01676
01677
01678
01679