AliRoot Core  ee782a0 (ee782a0)
DummyConfig.C
Go to the documentation of this file.
1 //____________________________________________________________________
2 //
3 // $Id$
4 //
5 // One can use the configuration macro in compiled mode by
6 // root [0] gSystem->Load("libgeant321");
7 // root [0] gSystem->SetIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include\
8 // -I$ALICE_ROOT -I$ALICE/geant3/TGeant3");
9 // root [0] .x grun.C(1,"ConfigPPR.C++")
10 //
16 //____________________________________________________________________
17 //
18 // Generator types
19 //
20 enum EG_t {
61  kPyJJ, //
62  kPyGJ, //
77 };
78 
79 //____________________________________________________________________
80 //
81 // Generator types names
82 //
83 const char* egName[kEgMax] = {
84  "test50",
85  "kParam_8000", //
86  "kParam_4000", //
87  "kParam_2000", //
88  "kParam_fmd", //
89  "kHijing_cent1", //
90  "kHijing_cent2", //
91  "kHijing_per1", //
92  "kHijing_per2", //
93  "kHijing_per3", //
94  "kHijing_per4", //
95  "kHijing_per5", //
96  "kHijing_jj25", //
97  "kHijing_jj50", //
98  "kHijing_jj75", //
99  "kHijing_jj100", //
100  "kHijing_jj200", //
101  "kHijing_gj25", //
102  "kHijing_gj50", //
103  "kHijing_gj75", //
104  "kHijing_gj100", //
105  "kHijing_gj200", //
106  "kHijing_pA", //
107  "kPythia6", //
108  "kPythia6Jets20_24", //
109  "kPythia6Jets24_29", //
110  "kPythia6Jets29_35", //
111  "kPythia6Jets35_42", //
112  "kPythia6Jets42_50", //
113  "kPythia6Jets50_60", //
114  "kPythia6Jets60_72", //
115  "kPythia6Jets72_86", //
116  "kPythia6Jets86_104", //
117  "kPythia6Jets104_125", //
118  "kPythia6Jets125_150", //
119  "kPythia6Jets150_180", //
120  "kD0PbPb5500", //
121  "kCharmSemiElPbPb5500", //
122  "kBeautySemiElPbPb5500", //
123  "kCocktailTRD", //
124  "kPyJJ", //
125  "kPyGJ", //
126  "kMuonCocktailCent1", //
127  "kMuonCocktailPer1", //
128  "kMuonCocktailPer4", //
129  "kMuonCocktailCent1HighPt", //
130  "kMuonCocktailPer1HighPt", //
131  "kMuonCocktailPer4HighPt", //
132  "kMuonCocktailCent1Single", //
133  "kMuonCocktailPer1Single", //
134  "kMuonCocktailPer4Single",
135  "kFMD1Flat",
136  "kFMD2Flat",
137  "kFMD3Flat",
138  "kFMDFlat"
139 };
140 
141 //____________________________________________________________________
142 enum Geo_t {
143  kHoles, //
145 };
146 
147 //____________________________________________________________________
148 enum Rad_t {
151 };
152 
153 //____________________________________________________________________
154 enum MC_t {
159 };
160 
161 //____________________________________________________________________
162 // Functions
163 Float_t EtaToTheta(Float_t eta);
164 Eg_t LookupEG(const Char_t* name);
165 AliGenerator* GeneratorFactory(EG_t eg, Rad_t rad, TString& comment);
166 AliGenHijing* HijingStandard();
167 void ProcessEnvironmentVars(EG_t& eg, Int_t& seed);
168 
169 //____________________________________________________________________
170 void
172 {
173  //____________________________________________________________________
174  // This part for configuration
175  // EG_t eg = test50;
176  // EG_t eg = kParam_fmd;
177  EG_t eg = kParam_2000; // kPythia;
178  // EG_t eg = kFMDFlat;
179  Geo_t geo = kNoHoles;
180  Rad_t rad = kGluonRadiation;
182  Int_t seed = 12345; //Set 0 to use the current time
183  MC_t mc = kGEANT3TGEO;
184 
185  //____________________________________________________________________
186  // Comment line
187  static TString comment;
188 
189  //____________________________________________________________________
190  // Get settings from environment variables
191  ProcessEnvironmentVars(eg, seed);
192 
193  //____________________________________________________________________
194  // Set Random Number seed
195  gRandom->SetSeed(seed);
196  cout<<"Seed for random number generation= "<<gRandom->GetSeed()<<endl;
197 
198 
199  //__________________________________________________________________
200  switch (mc) {
201  case kFLUKA:
202  //
203  // libraries required by fluka21
204  //
205  gSystem->Load("libGeom");
206  cout << "\t* Loading TFluka..." << endl;
207  gSystem->Load("libTFluka");
208  gSystem->MakeDirectory("peg");
209  //
210  // FLUKA MC
211  //
212  cout << "\t* Instantiating TFluka..." << endl;
213  new TFluka("C++ Interface to Fluka", 0/*verbosity*/);
214  break;
215  case kGEANT3:
216  {
217  //
218  // Libraries needed by GEANT 3.21
219  //
220  gSystem->Load("libgeant321");
221 
222  //
223  // GEANT 3.21 MC
224  //
225  TGeant3* gmc = new TGeant3("C++ Interface to Geant3");
226  gmc->SetSWIT(4, 1000);
227  }
228  break;
229  case kGEANT3TGEO:
230  {
231  //
232  // Libraries needed by GEANT 3.21
233  //
234  gSystem->Load("libgeant321");
235 
236  //
237  // GEANT 3.21 MC
238  //
239  TGeant3TGeo* gmc = new TGeant3TGeo("C++ Interface to Geant3");
240  gmc->SetSWIT(4, 1000);
241  Printf("Making a TGeant3TGeo objet");
242  }
243  break;
244  default:
245  gAlice->Fatal("Config.C", "No MC type chosen");
246  return;
247  }
248 
249  //__________________________________________________________________
250  AliRunLoader* rl = 0;
251 
252  cout<<"Config.C: Creating Run Loader ..."<<endl;
253  rl = AliRunLoader::Open("galice.root",
255  "recreate");
256  if (!rl) {
257  gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
258  return;
259  }
260  rl->SetCompressionLevel(2);
262  gAlice->SetRunLoader(rl);
263 
264  //__________________________________________________________________
265  // For FLUKA
266  switch (mc) {
267  case kFLUKA:
268  {
269  //
270  // Use kTRUE as argument to generate alice.pemf first
271  //
272  TString alice_pemf(gSystem->Which(".", "peg/mat17.pemf"));
273  if (!alice_pemf.IsNull())
274  ((TFluka*)gMC)->SetGeneratePemf(kFALSE);
275  else
276  ((TFluka*)gMC)->SetGeneratePemf(kTRUE);
277  TString flupro(gSystem->Getenv("FLUPRO"));
278  if (flupro.IsNull())
279  Fatal("Config.C", "Environment variable FLUPRO not set");
280 #if 0
281  char* files[] = { "brems_fin.bin", "cohff.bin", "elasct.bin",
282  "gxsect.bin", "nuclear.bin", "sigmapi.bin",
283  0 };
284  char* file = files[0];
285  while (file) {
286  TString which(gSystem->Which(".", file));
287  if (which.IsNull()) {
288  if (gSystem->Symlink(Form("%s/%s", flupro.Data(), file), file)!=0)
289  Fatal("Config.C", "Couldn't link $(FLUPRO)/%s -> .", file);
290  }
291  file++;
292  }
293 #endif
294  TString neuxsc(gSystem->Which(".", "neuxsc.bin"));
295  if (neuxsc.IsNull())
296  gSystem->Symlink(Form("%s/neuxsc_72.bin", flupro.Data()),
297  "neuxsc.bin");
298  gSystem->CopyFile("$(FLUPRO)/random.dat", "old.seed", kTRUE);
299  }
300  break;
301  }
302 
303  //__________________________________________________________________
304  //
305  // Set External decayer
306 #if 0
307  AliDecayer *decayer = new AliDecayerPythia();
308  switch (eg) {
309  case kD0PbPb5500: decayer->SetForceDecay(kHadronicD); break;
310  case kCharmSemiElPbPb5500: decayer->SetForceDecay(kSemiElectronic); break;
311  case kBeautySemiElPbPb5500: decayer->SetForceDecay(kSemiElectronic); break;
312  default: decayer->SetForceDecay(kAll); break;
313  }
314  decayer->Init();
315  gMC->SetExternalDecayer(decayer);
316 #endif
317 
318  //__________________________________________________________________
319  // *********** STEERING parameters FOR ALICE SIMULATION ************
320  // - Specify event type to be tracked through the ALICE setup
321  // - All positions are in cm, angles in degrees, and P and E in GeV
322  gMC->SetProcess("DCAY",1);
323  gMC->SetProcess("PAIR",1);
324  gMC->SetProcess("COMP",1);
325  gMC->SetProcess("PHOT",1);
326  gMC->SetProcess("PFIS",0);
327  gMC->SetProcess("DRAY",0);
328  gMC->SetProcess("ANNI",1);
329  gMC->SetProcess("BREM",1);
330  gMC->SetProcess("MUNU",1);
331  gMC->SetProcess("CKOV",1);
332  gMC->SetProcess("HADR",1);
333  gMC->SetProcess("LOSS",2);
334  gMC->SetProcess("MULS",1);
335  gMC->SetProcess("RAYL",1);
336 
337  Float_t cut = 1.e-3; // 1MeV cut by default
338  Float_t tofmax = 1.e10;
339 
340  gMC->SetCut("CUTGAM", cut);
341  gMC->SetCut("CUTELE", cut);
342  gMC->SetCut("CUTNEU", cut);
343  gMC->SetCut("CUTHAD", cut);
344  gMC->SetCut("CUTMUO", cut);
345  gMC->SetCut("BCUTE", cut);
346  gMC->SetCut("BCUTM", cut);
347  gMC->SetCut("DCUTE", cut);
348  gMC->SetCut("DCUTM", cut);
349  gMC->SetCut("PPCUTM", cut);
350  gMC->SetCut("TOFMAX", tofmax);
351 
352 
353  //__________________________________________________________________
354  // Generator Configuration
355  AliGenerator* gener = GeneratorFactory(eg, rad, comment);
356  gener->SetOrigin(0, 0, 0); // vertex position
357  gener->SetSigma(0, 0, 5.3); // Sigma in (X,Y,Z) (cm) on IP position
358  gener->SetCutVertexZ(1.); // Truncate at 1 sigma
359  gener->SetVertexSmear(kPerEvent);
360  gener->SetTrackingFlag(1);
361  gener->Init();
362 
363  //__________________________________________________________________
364  //
365  // Comments
366  //
367  switch (mag) {
368  case AliMagF::k2kG: comment = comment.Append(" | L3 field 0.2 T"); break;
369  case AliMagF::k5kG: comment = comment.Append(" | L3 field 0.5 T"); break;
370  }
371 
372  switch (rad) {
373  case kGluonRadiation:
374  comment = comment.Append(" | Gluon Radiation On"); break;
375  default:
376  comment = comment.Append(" | Gluon Radiation Off"); break;
377  }
378 
379  switch(geo) {
380  case kHoles: comment = comment.Append(" | Holes for PHOS/HMPID"); break;
381  default: comment = comment.Append(" | No holes for PHOS/HMPID"); break;
382  }
383 
384  std::cout << "\n\n Comment: " << comment << "\n" << std::endl;
385 
386  //__________________________________________________________________
387  // Field (L3 0.4 T)
388  AliMagF* field = new AliMagF("Maps","Maps",1.,1.,AliMagF::k5kG);
389  field->SetL3ConstField(0); //Using const. field in the barrel
390  TGeoGlobalMagField::Instance()->SetField(field);
391 
392  rl->CdGAFile();
393 
394  //__________________________________________________________________
395  //
396  // Used detectors
397  //
398  Bool_t useABSO = kTRUE;
399  Bool_t useACORDE= kFALSE;
400  Bool_t useDIPO = kFALSE;
401  Bool_t useFMD = kTRUE;
402  Bool_t useFRAME = kFALSE;
403  Bool_t useHALL = kFALSE;
404  Bool_t useITS = kTRUE;
405  Bool_t useMAG = kFALSE;
406  Bool_t useMUON = kFALSE;
407  Bool_t usePHOS = kFALSE;
408  Bool_t usePIPE = kFALSE;
409  Bool_t usePMD = kFALSE;
410  Bool_t useHMPID = kFALSE;
411  Bool_t useSHIL = kFALSE;
412  Bool_t useT0 = kTRUE;
413  Bool_t useTOF = kFALSE;
414  Bool_t useTPC = kFALSE;
415  Bool_t useTRD = kFALSE;
416  Bool_t useZDC = kFALSE;
417  Bool_t useEMCAL = kFALSE;
418  Bool_t useVZERO = kTRUE;
419 
420  gROOT->LoadMacro("LoadDummy.C");
421  cout << "\t* Creating the detectors ..." << endl;
422  // ================= Alice BODY parameters =========================
423  AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
424 
425 
426  if (useMAG) {
427  // =================== MAG parameters ============================
428  // Start with Magnet since detector layouts may be depending on
429  // the selected Magnet dimensions
430  AliMAG *MAG = new AliMAG("MAG", "Magnet");
431  }
432 
433  if (useABSO) {
434  // =================== ABSO parameters ===========================
435  AliABSO *ABSO = new AliABSOv0("ABSO", "Muon Absorber");
436  }
437 
438  if (useDIPO) {
439  // =================== DIPO parameters ===========================
440  AliDIPO *DIPO = new DummyABSO("DIPO");
441  }
442 
443  if (useHALL) {
444  // =================== HALL parameters ===========================
445  AliHALL *HALL = new AliHALL("HALL", "Alice Hall");
446  }
447 
448 
449  if (useFRAME) {
450  // ================== FRAME parameters ===========================
451  AliFRAMEv2 *FRAME = new DummyFRAME("FRAME");
452  switch (geo) {
453  case kHoles: FRAME->SetHoles(1); break;
454  default: FRAME->SetHoles(0); break;
455  }
456  }
457 
458  if (useSHIL) {
459  // ================== SHIL parameters ============================
460  AliSHIL *SHIL = new DummySHIl("SHIL");
461  }
462 
463 
464  if (usePIPE) {
465  // ================== PIPE parameters ============================
466  AliPIPE *PIPE = new AliPIPEv0("PIPE", "Beam Pipe");
467  }
468 
469  if (useITS) {
470  // =================== ITS parameters ============================
471  //
472  // As the innermost detector in ALICE, the Inner Tracking System
473  // "impacts" on almost all other detectors. This involves the fact
474  // that the ITS geometry still has several options to be followed
475  // in parallel in order to determine the best set-up which
476  // minimizes the induced background. All the geometries available
477  // to date are described in the following. Read carefully the
478  // comments and use the default version (the only one uncommented)
479  // unless you are making comparisons and you know what you are
480  // doing. In this case just uncomment the ITS geometry you want to
481  // use and run Aliroot.
482  //
483  // Detailed geometries:
484  //
485  //
486  // AliITS *ITS =
487  // new AliITSv5symm("ITS", "Updated ITS TDR detailed version "
488  // "with symmetric services");
489  // AliITS *ITS =
490  // new AliITSv5asymm("ITS","Updates ITS TDR detailed version "
491  // "with asymmetric services");
492  //
493  AliITSvPPRasymmFMD *ITS = new DummyITS("ITS");
494  // new AliITSvPPRasymmFMD("ITS","New ITS PPR detailed version "
495  // "with asymmetric services")
496  // don't touch this parameter if you're not an ITS developer
497  ITS->SetMinorVersion(2);
498  // don't touch this parameter if you're not an ITS developer
499  ITS->SetReadDet(kTRUE);
500  // don't touch this parameter if you're not an ITS developer
501  // ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det");
502  // detector thickness on layer 1 must be in the range [100,300]
503  ITS->SetThicknessDet1(200.);
504  // detector thickness on layer 2 must be in the range [100,300]
505  ITS->SetThicknessDet2(200.);
506  // chip thickness on layer 1 must be in the range [150,300]
507  ITS->SetThicknessChip1(200.);
508  // chip thickness on layer 2 must be in the range [150,300]
509  ITS->SetThicknessChip2(200.);
510  // 1 --> rails in ; 0 --> rails out
511  ITS->SetRails(0);
512  // 1 --> water ; 0 --> freon
513  ITS->SetCoolingFluid(1);
514 
515  // Coarse geometries (warning: no hits are produced with these
516  // coarse geometries and they unuseful for reconstruction !):
517  //
518  //
519  // AliITSvPPRcoarseasymm *ITS =
520  // new AliITSvPPRcoarseasymm("ITS","New ITS PPR coarse version "
521  // "with asymmetric services");
522  // 1 --> rails in ; 0 --> rails out
523  // ITS->SetRails(0);
524  // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon
525  // ITS->SetSupportMaterial(0);
526  //
527  // AliITS *ITS =
528  // new AliITSvPPRcoarsesymm("ITS","New ITS PPR coarse version "
529  // "with symmetric services");
530  // 1 --> rails in ; 0 --> rails out
531  // ITS->SetRails(0);
532  // 0 --> Copper ; 1 --> Aluminum ; 2 --> Carbon
533  // ITS->SetSupportMaterial(0);
534  //
535  // Geant3 <-> EUCLID conversion
536  // ============================
537  //
538  // SetEUCLID is a flag to output (=1) or not to output (=0) both
539  // geometry and media to two ASCII files (called by default
540  // ITSgeometry.euc and ITSgeometry.tme) in a format understandable
541  // to the CAD system EUCLID. The default (=0) means that you dont
542  // want to use this facility.
543  //
544  ITS->SetEUCLID(0);
545  }
546 
547  if (useTPC) {
548  // =================== TPC parameters ============================
549  //
550  // This allows the user to specify sectors for the SLOW (TPC
551  // geometry 2) Simulator. SecAL (SecAU) <0 means that ALL lower
552  // (upper) sectors are specified, any value other than that
553  // requires at least one sector (lower or upper)to be specified!
554  //
555  // Reminder:
556  // sectors 1-24 are lower sectors (1-12 -> z>0, 13-24 -> z<0)
557  // sectors 25-72 are the upper ones (25-48 -> z>0, 49-72 -> z<0)
558  //
559  // SecLows - number of lower sectors specified (up to 6)
560  // SecUps - number of upper sectors specified (up to 12)
561  // Sens - sensitive strips for the Slow Simulator !!!
562  //
563  // This does NOT work if all S or L-sectors are specified, i.e.
564  // if SecAL or SecAU < 0
565  //
566  //
567  //----------------------------------------------------------------
568  // gROOT->LoadMacro("SetTPCParam.C");
569  // AliTPCParam *param = SetTPCParam();
570  AliTPC *TPC = new DummyTPC("TPC");
571  }
572 
573  if (useTOF) {
574  // ================== TOF parameters =============================
575  AliTOF *TOF = new DummyTOF("TOF");
576  }
577 
578  if (useHMPID) {
579  // ================== HMPID parameters ============================
580  AliHMPID *HMPID = new DummyHMPID("HMPID");
581 
582  }
583 
584  if (useZDC) {
585  // ================== ZDC parameters =============================
586  AliZDC *ZDC = new DummyZDC("ZDC");
587  }
588 
589  if (useTRD) {
590  // ================== TRD parameters =============================
591  AliTRD *TRD = new DummyTRD("TRD");
592 
593  // Select the gas mixture (0: 97% Xe + 3% isobutane, 1: 90% Xe + 10% CO2)
594  TRD->SetGasMix(1);
595  if (geo == kHoles) {
596  // With hole in front of PHOS
597  TRD->SetPHOShole();
598  // With hole in front of HMPID
599  TRD->SetHMPIDhole();
600  }
601  // Switch on TR
602  AliTRDsim *TRDsim = TRD->CreateTR();
603  }
604 
605  if (useFMD) {
606  // =================== FMD parameters ============================
607  // AliLog::SetModuleDebugLevel("FMD", 15);
608  AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
609  // FMD->UseDetailed(kFALSE);
610  // FMD->UseAssembly();
611  // FMD->UseOld();
612  }
613 
614  if (useMUON) {
615  // =================== MUON parameters ===========================
616  AliMUON *MUON = new DummyMUON("MUON");
617  // MUON->AddGeometryBuilder(new AliMUONSt1GeometryBuilder(MUON));
618  // MUON->AddGeometryBuilder(new AliMUONSt2GeometryBuilder(MUON));
619  // MUON->AddGeometryBuilder(new AliMUONSlatGeometryBuilder(MUON));
620  // MUON->AddGeometryBuilder(new AliMUONTriggerGeometryBuilder(MUON));
621  }
622 
623  if (usePHOS) {
624  // =================== PHOS parameters ===========================
625  AliPHOS *PHOS = new DummyPHOS("PHOS");
626  }
627 
628  if (usePMD) {
629  // =================== PMD parameters ============================
630  AliPMD *PMD = new DummyPMD("PMD");
631  }
632 
633  if (useT0) {
634  // =================== T0 parameters ==========================
635  AliT0 *T0 = new DummyT0("T0");
636  }
637 
638  if (useEMCAL) {
639  // =================== EMCAL parameters ==========================
640  AliEMCAL *EMCAL = new DummyEMCAL("EMCAL");
641  }
642 
643  if (useACORDE) {
644  // =================== ACORDE parameters ============================
645  AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");
646  }
647 
648  if (useVZERO) {
649  // =================== V0 parameters =============================
650  AliVZERO *VZERO = new DummyVZERO("VZERO");
651  }
652 }
653 
654 //____________________________________________________________________
655 Float_t EtaToTheta(Float_t arg)
656 {
657  return (180./TMath::Pi())*2.*TMath::ATan(TMath::Exp(-arg));
658 }
659 
660 //____________________________________________________________________
661 Int_t
662 LookupEG(const Char_t* name)
663 {
664  TString n(name);
665  for (Int_t i = 0; i < kEgMax; i++) {
666  if (n == egName[i]) return i;
667  }
668  return -1;
669 }
670 
671 //____________________________________________________________________
672 AliGenerator*
673 GeneratorFactory(EG_t eg, Rad_t rad, TString& comment)
674 {
675  Int_t isw = 3;
676  if (rad == kNoGluonRadiation) isw = 0;
677 
678 
679  AliGenerator * gGener = 0;
680  switch (eg) {
681  case test50:
682  {
683  comment = comment.Append(":HIJINGparam test 50 particles");
684  AliGenHIJINGpara *gener = new AliGenHIJINGpara(50);
685  gener->SetMomentumRange(0, 999999.);
686  gener->SetPhiRange(0., 360.);
687  // Set pseudorapidity range from -8 to 8.
688  Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
689  Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
690  gener->SetThetaRange(thmin,thmax);
691  gGener=gener;
692  }
693  break;
694  case kParam_8000:
695  {
696  comment = comment.Append(":HIJINGparam N=8000");
697  AliGenHIJINGpara *gener = new AliGenHIJINGpara(86030);
698  gener->SetMomentumRange(0, 999999.);
699  gener->SetPhiRange(0., 360.);
700  // Set pseudorapidity range from -8 to 8.
701  Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
702  Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
703  gener->SetThetaRange(thmin,thmax);
704  gGener=gener;
705  }
706  break;
707  case kParam_4000:
708  {
709  comment = comment.Append("HIJINGparam N=4000");
710  AliGenHIJINGpara *gener = new AliGenHIJINGpara(43015);
711  gener->SetMomentumRange(0, 999999.);
712  gener->SetPhiRange(0., 360.);
713  // Set pseudorapidity range from -8 to 8.
714  Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
715  Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
716  gener->SetThetaRange(thmin,thmax);
717  gGener=gener;
718  }
719  break;
720  case kParam_2000:
721  {
722  comment = comment.Append("HIJINGparam N=2000");
723  AliGenHIJINGpara *gener = new AliGenHIJINGpara(21507);
724  gener->SetMomentumRange(0, 999999.);
725  gener->SetPhiRange(0., 360.);
726  // Set pseudorapidity range from -8 to 8.
727  Float_t thmin = EtaToTheta(9); // theta min. <---> eta max
728  Float_t thmax = EtaToTheta(-9); // theta max. <---> eta min
729  gener->SetThetaRange(thmin,thmax);
730  gGener=gener;
731  }
732  break;
733  case kParam_fmd:
734  {
735  comment = comment.Append("HIJINGparam N=100");
736  AliGenHIJINGpara *gener = new AliGenHIJINGpara(500);
737  gener->SetMomentumRange(0, 999999.);
738  gener->SetPhiRange(0., 360.);
739  // Set pseudorapidity range from -8 to 8.
740  Float_t thmin = EtaToTheta(6); // theta min. <---> eta max
741  Float_t thmax = EtaToTheta(2); // theta max. <---> eta min
742  gener->SetThetaRange(thmin,thmax);
743  gGener=gener;
744  }
745  break;
746  //
747  // Hijing Central
748  //
749  case kHijing_cent1:
750  {
751  comment = comment.Append("HIJING cent1");
752  AliGenHijing *gener = HijingStandard();
753  // impact parameter range
754  gener->SetImpactParameterRange(0., 5.);
755  gGener=gener;
756  }
757  break;
758  case kHijing_cent2:
759  {
760  comment = comment.Append("HIJING cent2");
761  AliGenHijing *gener = HijingStandard();
762  // impact parameter range
763  gener->SetImpactParameterRange(0., 2.);
764  gGener=gener;
765  }
766  break;
767  //
768  // Hijing Peripheral
769  //
770  case kHijing_per1:
771  {
772  comment = comment.Append("HIJING per1");
773  AliGenHijing *gener = HijingStandard();
774  // impact parameter range
775  gener->SetImpactParameterRange(5., 8.6);
776  gGener=gener;
777  }
778  break;
779  case kHijing_per2:
780  {
781  comment = comment.Append("HIJING per2");
782  AliGenHijing *gener = HijingStandard();
783  // impact parameter range
784  gener->SetImpactParameterRange(8.6, 11.2);
785  gGener=gener;
786  }
787  break;
788  case kHijing_per3:
789  {
790  comment = comment.Append("HIJING per3");
791  AliGenHijing *gener = HijingStandard();
792  // impact parameter range
793  gener->SetImpactParameterRange(11.2, 13.2);
794  gGener=gener;
795  }
796  break;
797  case kHijing_per4:
798  {
799  comment = comment.Append("HIJING per4");
800  AliGenHijing *gener = HijingStandard();
801  // impact parameter range
802  gener->SetImpactParameterRange(13.2, 15.);
803  gGener=gener;
804  }
805  break;
806  case kHijing_per5:
807  {
808  comment = comment.Append("HIJING per5");
809  AliGenHijing *gener = HijingStandard();
810  // impact parameter range
811  gener->SetImpactParameterRange(15., 100.);
812  gGener=gener;
813  }
814  break;
815  //
816  // Jet-Jet
817  //
818  case kHijing_jj25:
819  {
820  comment = comment.Append("HIJING Jet 25 GeV");
821  AliGenHijing *gener = HijingStandard();
822  // impact parameter range
823  gener->SetImpactParameterRange(0., 5.);
824  // trigger
825  gener->SetTrigger(1);
826  gener->SetPtJet(25.);
827  gener->SetRadiation(isw);
828  gener->SetSimpleJets(!isw);
829  gener->SetJetEtaRange(-0.3,0.3);
830  gener->SetJetPhiRange(75., 165.);
831  gGener=gener;
832  }
833  break;
834 
835  case kHijing_jj50:
836  {
837  comment = comment.Append("HIJING Jet 50 GeV");
838  AliGenHijing *gener = HijingStandard();
839  // impact parameter range
840  gener->SetImpactParameterRange(0., 5.);
841  // trigger
842  gener->SetTrigger(1);
843  gener->SetPtJet(50.);
844  gener->SetRadiation(isw);
845  gener->SetSimpleJets(!isw);
846  gener->SetJetEtaRange(-0.3,0.3);
847  gener->SetJetPhiRange(75., 165.);
848  gGener=gener;
849  }
850  break;
851 
852  case kHijing_jj75:
853  {
854  comment = comment.Append("HIJING Jet 75 GeV");
855  AliGenHijing *gener = HijingStandard();
856  // impact parameter range
857  gener->SetImpactParameterRange(0., 5.);
858  // trigger
859  gener->SetTrigger(1);
860  gener->SetPtJet(75.);
861  gener->SetRadiation(isw);
862  gener->SetSimpleJets(!isw);
863  gener->SetJetEtaRange(-0.3,0.3);
864  gener->SetJetPhiRange(75., 165.);
865  gGener=gener;
866  }
867  break;
868 
869  case kHijing_jj100:
870  {
871  comment = comment.Append("HIJING Jet 100 GeV");
872  AliGenHijing *gener = HijingStandard();
873  // impact parameter range
874  gener->SetImpactParameterRange(0., 5.);
875  // trigger
876  gener->SetTrigger(1);
877  gener->SetPtJet(100.);
878  gener->SetRadiation(isw);
879  gener->SetSimpleJets(!isw);
880  gener->SetJetEtaRange(-0.3,0.3);
881  gener->SetJetPhiRange(75., 165.);
882  gGener=gener;
883  }
884  break;
885 
886  case kHijing_jj200:
887  {
888  comment = comment.Append("HIJING Jet 200 GeV");
889  AliGenHijing *gener = HijingStandard();
890  // impact parameter range
891  gener->SetImpactParameterRange(0., 5.);
892  // trigger
893  gener->SetTrigger(1);
894  gener->SetPtJet(200.);
895  gener->SetRadiation(isw);
896  gener->SetSimpleJets(!isw);
897  gener->SetJetEtaRange(-0.3,0.3);
898  gener->SetJetPhiRange(75., 165.);
899  gGener=gener;
900  }
901  break;
902  //
903  // Gamma-Jet
904  //
905  case kHijing_gj25:
906  {
907  comment = comment.Append("HIJING Gamma 25 GeV");
908  AliGenHijing *gener = HijingStandard();
909  // impact parameter range
910  gener->SetImpactParameterRange(0., 5.);
911  // trigger
912  gener->SetTrigger(2);
913  gener->SetPtJet(25.);
914  gener->SetRadiation(isw);
915  gener->SetSimpleJets(!isw);
916  gener->SetJetEtaRange(-0.12, 0.12);
917  gener->SetJetPhiRange(220., 320.);
918  gGener=gener;
919  }
920  break;
921 
922  case kHijing_gj50:
923  {
924  comment = comment.Append("HIJING Gamma 50 GeV");
925  AliGenHijing *gener = HijingStandard();
926  // impact parameter range
927  gener->SetImpactParameterRange(0., 5.);
928  // trigger
929  gener->SetTrigger(2);
930  gener->SetPtJet(50.);
931  gener->SetRadiation(isw);
932  gener->SetSimpleJets(!isw);
933  gener->SetJetEtaRange(-0.12, 0.12);
934  gener->SetJetPhiRange(220., 320.);
935  gGener=gener;
936  }
937  break;
938 
939  case kHijing_gj75:
940  {
941  comment = comment.Append("HIJING Gamma 75 GeV");
942  AliGenHijing *gener = HijingStandard();
943  // impact parameter range
944  gener->SetImpactParameterRange(0., 5.);
945  // trigger
946  gener->SetTrigger(2);
947  gener->SetPtJet(75.);
948  gener->SetRadiation(isw);
949  gener->SetSimpleJets(!isw);
950  gener->SetJetEtaRange(-0.12, 0.12);
951  gener->SetJetPhiRange(220., 320.);
952  gGener=gener;
953  }
954  break;
955 
956  case kHijing_gj100:
957  {
958  comment = comment.Append("HIJING Gamma 100 GeV");
959  AliGenHijing *gener = HijingStandard();
960  // impact parameter range
961  gener->SetImpactParameterRange(0., 5.);
962  // trigger
963  gener->SetTrigger(2);
964  gener->SetPtJet(100.);
965  gener->SetRadiation(isw);
966  gener->SetSimpleJets(!isw);
967  gener->SetJetEtaRange(-0.12, 0.12);
968  gener->SetJetPhiRange(220., 320.);
969  gGener=gener;
970  }
971  break;
972 
973  case kHijing_gj200:
974  {
975  comment = comment.Append("HIJING Gamma 200 GeV");
976  AliGenHijing *gener = HijingStandard();
977  // impact parameter range
978  gener->SetImpactParameterRange(0., 5.);
979  // trigger
980  gener->SetTrigger(2);
981  gener->SetPtJet(200.);
982  gener->SetRadiation(isw);
983  gener->SetSimpleJets(!isw);
984  gener->SetJetEtaRange(-0.12, 0.12);
985  gener->SetJetPhiRange(220., 320.);
986  gGener=gener;
987  }
988  break;
989  case kHijing_pA:
990  {
991  comment = comment.Append("HIJING pA");
992 
993  AliGenCocktail *gener = new AliGenCocktail();
994 
995  AliGenHijing *hijing = new AliGenHijing(-1);
996  // centre of mass energy
997  hijing->SetEnergyCMS(TMath::Sqrt(82./208.) * 14000.);
998  // impact parameter range
999  hijing->SetImpactParameterRange(0., 15.);
1000  // reference frame
1001  hijing->SetReferenceFrame("CMS");
1002  hijing->SetBoostLHC(1);
1003  // projectile
1004  hijing->SetProjectile("P", 1, 1);
1005  hijing->SetTarget ("A", 208, 82);
1006  // tell hijing to keep the full parent child chain
1007  hijing->KeepFullEvent();
1008  // enable jet quenching
1009  hijing->SetJetQuenching(0);
1010  // enable shadowing
1011  hijing->SetShadowing(1);
1012  // Don't track spectators
1013  hijing->SetSpectators(0);
1014  // kinematic selection
1015  hijing->SetSelectAll(0);
1016  //
1017  AliGenSlowNucleons* gray = new AliGenSlowNucleons(1);
1018  AliSlowNucleonModel* model = new AliSlowNucleonModelExp();
1019  gray->SetSlowNucleonModel(model);
1020  gray->SetDebug(1);
1021  gener->AddGenerator(hijing,"Hijing pPb", 1);
1022  gener->AddGenerator(gray, "Gray Particles",1);
1023  gGener=gener;
1024  }
1025  break;
1026  case kPythia6:
1027  {
1028  comment = comment.Append(":Pythia p-p @ 14 TeV");
1029  AliGenPythia *gener = new AliGenPythia(-1);
1030  gener->SetMomentumRange(0,999999);
1031  gener->SetThetaRange(0., 180.);
1032  gener->SetYRange(-12,12);
1033  gener->SetPtRange(0,1000);
1034  gener->SetProcess(kPyMb);
1035  gener->SetEnergyCMS(14000.);
1036  gGener=gener;
1037  }
1038  break;
1039  case kPythia6Jets20_24:
1040  {
1041  comment = comment.Append(":Pythia jets 20-24 GeV @ 5.5 TeV");
1042  AliGenPythia * gener = new AliGenPythia(-1);
1043  gener->SetEnergyCMS(5500.);// Centre of mass energy
1044  gener->SetProcess(kPyJets);// Process type
1045  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1046  gener->SetJetPhiRange(0., 360.);
1047  gener->SetJetEtRange(10., 1000.);
1048  gener->SetGluonRadiation(1,1);
1049  // gener->SetPtKick(0.);
1050  // Structure function
1051  gener->SetStrucFunc(kCTEQ4L);
1052  gener->SetPtHard(20., 24.);// Pt transfer of the hard scattering
1053  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1054  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1055  gGener=gener;
1056  }
1057  break;
1058  case kPythia6Jets24_29:
1059  {
1060  comment = comment.Append(":Pythia jets 24-29 GeV @ 5.5 TeV");
1061  AliGenPythia * gener = new AliGenPythia(-1);
1062  gener->SetEnergyCMS(5500.);// Centre of mass energy
1063  gener->SetProcess(kPyJets);// Process type
1064  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1065  gener->SetJetPhiRange(0., 360.);
1066  gener->SetJetEtRange(10., 1000.);
1067  gener->SetGluonRadiation(1,1);
1068  // gener->SetPtKick(0.);
1069  // Structure function
1070  gener->SetStrucFunc(kCTEQ4L);
1071  gener->SetPtHard(24., 29.);// Pt transfer of the hard scattering
1072  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1073  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1074  gGener=gener;
1075  }
1076  break;
1077  case kPythia6Jets29_35:
1078  {
1079  comment = comment.Append(":Pythia jets 29-35 GeV @ 5.5 TeV");
1080  AliGenPythia * gener = new AliGenPythia(-1);
1081  gener->SetEnergyCMS(5500.);// Centre of mass energy
1082  gener->SetProcess(kPyJets);// Process type
1083  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1084  gener->SetJetPhiRange(0., 360.);
1085  gener->SetJetEtRange(10., 1000.);
1086  gener->SetGluonRadiation(1,1);
1087  // gener->SetPtKick(0.);
1088  // Structure function
1089  gener->SetStrucFunc(kCTEQ4L);
1090  gener->SetPtHard(29., 35.);// Pt transfer of the hard scattering
1091  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1092  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1093  gGener=gener;
1094  }
1095  break;
1096  case kPythia6Jets35_42:
1097  {
1098  comment = comment.Append(":Pythia jets 35-42 GeV @ 5.5 TeV");
1099  AliGenPythia * gener = new AliGenPythia(-1);
1100  gener->SetEnergyCMS(5500.);// Centre of mass energy
1101  gener->SetProcess(kPyJets);// Process type
1102  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1103  gener->SetJetPhiRange(0., 360.);
1104  gener->SetJetEtRange(10., 1000.);
1105  gener->SetGluonRadiation(1,1);
1106  // gener->SetPtKick(0.);
1107  // Structure function
1108  gener->SetStrucFunc(kCTEQ4L);
1109  gener->SetPtHard(35., 42.);// Pt transfer of the hard scattering
1110  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1111  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1112  gGener=gener;
1113  }
1114  break;
1115  case kPythia6Jets42_50:
1116  {
1117  comment = comment.Append(":Pythia jets 42-50 GeV @ 5.5 TeV");
1118  AliGenPythia * gener = new AliGenPythia(-1);
1119  gener->SetEnergyCMS(5500.);// Centre of mass energy
1120  gener->SetProcess(kPyJets);// Process type
1121  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1122  gener->SetJetPhiRange(0., 360.);
1123  gener->SetJetEtRange(10., 1000.);
1124  gener->SetGluonRadiation(1,1);
1125  // gener->SetPtKick(0.);
1126  // Structure function
1127  gener->SetStrucFunc(kCTEQ4L);
1128  gener->SetPtHard(42., 50.);// Pt transfer of the hard scattering
1129  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1130  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1131  gGener=gener;
1132  }
1133  break;
1134  case kPythia6Jets50_60:
1135  {
1136  comment = comment.Append(":Pythia jets 50-60 GeV @ 5.5 TeV");
1137  AliGenPythia * gener = new AliGenPythia(-1);
1138  gener->SetEnergyCMS(5500.);// Centre of mass energy
1139  gener->SetProcess(kPyJets);// Process type
1140  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1141  gener->SetJetPhiRange(0., 360.);
1142  gener->SetJetEtRange(10., 1000.);
1143  gener->SetGluonRadiation(1,1);
1144  // gener->SetPtKick(0.);
1145  // Structure function
1146  gener->SetStrucFunc(kCTEQ4L);
1147  gener->SetPtHard(50., 60.);// Pt transfer of the hard scattering
1148  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1149  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1150  gGener=gener;
1151  }
1152  break;
1153  case kPythia6Jets60_72:
1154  {
1155  comment = comment.Append(":Pythia jets 60-72 GeV @ 5.5 TeV");
1156  AliGenPythia * gener = new AliGenPythia(-1);
1157  gener->SetEnergyCMS(5500.);// Centre of mass energy
1158  gener->SetProcess(kPyJets);// Process type
1159  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1160  gener->SetJetPhiRange(0., 360.);
1161  gener->SetJetEtRange(10., 1000.);
1162  gener->SetGluonRadiation(1,1);
1163  // gener->SetPtKick(0.);
1164  // Structure function
1165  gener->SetStrucFunc(kCTEQ4L);
1166  gener->SetPtHard(60., 72.);// Pt transfer of the hard scattering
1167  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1168  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1169  gGener=gener;
1170  }
1171  break;
1172  case kPythia6Jets72_86:
1173  {
1174  comment = comment.Append(":Pythia jets 72-86 GeV @ 5.5 TeV");
1175  AliGenPythia * gener = new AliGenPythia(-1);
1176  gener->SetEnergyCMS(5500.);// Centre of mass energy
1177  gener->SetProcess(kPyJets);// Process type
1178  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1179  gener->SetJetPhiRange(0., 360.);
1180  gener->SetJetEtRange(10., 1000.);
1181  gener->SetGluonRadiation(1,1);
1182  // gener->SetPtKick(0.);
1183  // Structure function
1184  gener->SetStrucFunc(kCTEQ4L);
1185  gener->SetPtHard(72., 86.);// Pt transfer of the hard scattering
1186  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1187  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1188  gGener=gener;
1189  }
1190  break;
1191  case kPythia6Jets86_104:
1192  {
1193  comment = comment.Append(":Pythia jets 86-104 GeV @ 5.5 TeV");
1194  AliGenPythia * gener = new AliGenPythia(-1);
1195  gener->SetEnergyCMS(5500.);// Centre of mass energy
1196  gener->SetProcess(kPyJets);// Process type
1197  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1198  gener->SetJetPhiRange(0., 360.);
1199  gener->SetJetEtRange(10., 1000.);
1200  gener->SetGluonRadiation(1,1);
1201  // gener->SetPtKick(0.);
1202  // Structure function
1203  gener->SetStrucFunc(kCTEQ4L);
1204  gener->SetPtHard(86., 104.);// Pt transfer of the hard scattering
1205  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1206  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1207  gGener=gener;
1208  }
1209  break;
1210  case kPythia6Jets104_125:
1211  {
1212  comment = comment.Append(":Pythia jets 105-125 GeV @ 5.5 TeV");
1213  AliGenPythia * gener = new AliGenPythia(-1);
1214  gener->SetEnergyCMS(5500.);// Centre of mass energy
1215  gener->SetProcess(kPyJets);// Process type
1216  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1217  gener->SetJetPhiRange(0., 360.);
1218  gener->SetJetEtRange(10., 1000.);
1219  gener->SetGluonRadiation(1,1);
1220  // gener->SetPtKick(0.);
1221  // Structure function
1222  gener->SetStrucFunc(kCTEQ4L);
1223  gener->SetPtHard(104., 125.);// Pt transfer of the hard scattering
1224  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1225  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1226  gGener=gener;
1227  }
1228  break;
1229  case kPythia6Jets125_150:
1230  {
1231  comment = comment.Append(":Pythia jets 125-150 GeV @ 5.5 TeV");
1232  AliGenPythia * gener = new AliGenPythia(-1);
1233  gener->SetEnergyCMS(5500.);// Centre of mass energy
1234  gener->SetProcess(kPyJets);// Process type
1235  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1236  gener->SetJetPhiRange(0., 360.);
1237  gener->SetJetEtRange(10., 1000.);
1238  gener->SetGluonRadiation(1,1);
1239  // gener->SetPtKick(0.);
1240  // Structure function
1241  gener->SetStrucFunc(kCTEQ4L);
1242  gener->SetPtHard(125., 150.);// Pt transfer of the hard scattering
1243  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1244  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1245  gGener=gener;
1246  }
1247  break;
1248  case kPythia6Jets150_180:
1249  {
1250  comment = comment.Append(":Pythia jets 150-180 GeV @ 5.5 TeV");
1251  AliGenPythia * gener = new AliGenPythia(-1);
1252  gener->SetEnergyCMS(5500.);// Centre of mass energy
1253  gener->SetProcess(kPyJets);// Process type
1254  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1255  gener->SetJetPhiRange(0., 360.);
1256  gener->SetJetEtRange(10., 1000.);
1257  gener->SetGluonRadiation(1,1);
1258  // gener->SetPtKick(0.);
1259  // Structure function
1260  gener->SetStrucFunc(kCTEQ4L);
1261  gener->SetPtHard(150., 180.);// Pt transfer of the hard scattering
1262  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1263  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1264  gGener=gener;
1265  }
1266  break;
1267  case kD0PbPb5500:
1268  {
1269  comment = comment.Append(" D0 in Pb-Pb at 5.5 TeV");
1270  AliGenPythia * gener = new AliGenPythia(10);
1271  gener->SetProcess(kPyD0PbPbMNR);
1272  gener->SetStrucFunc(kCTEQ4L);
1273  gener->SetPtHard(2.1,-1.0);
1274  gener->SetEnergyCMS(5500.);
1275  gener->SetNuclei(208,208);
1276  gener->SetForceDecay(kHadronicD);
1277  gener->SetYRange(-2,2);
1278  gener->SetFeedDownHigherFamily(kFALSE);
1279  gener->SetStackFillOpt(AliGenPythia::kParentSelection);
1280  gener->SetCountMode(AliGenPythia::kCountParents);
1281  gGener=gener;
1282  }
1283  break;
1284  case kCharmSemiElPbPb5500:
1285  {
1286  comment = comment.Append(" Charm in Pb-Pb at 5.5 TeV");
1287  AliGenPythia * gener = new AliGenPythia(10);
1288  gener->SetProcess(kPyCharmPbPbMNR);
1289  gener->SetStrucFunc(kCTEQ4L);
1290  gener->SetPtHard(2.1,-1.0);
1291  gener->SetEnergyCMS(5500.);
1292  gener->SetNuclei(208,208);
1293  gener->SetForceDecay(kSemiElectronic);
1294  gener->SetYRange(-2,2);
1295  gener->SetFeedDownHigherFamily(kFALSE);
1296  gener->SetCountMode(AliGenPythia::kCountParents);
1297  gGener=gener;
1298  }
1299  break;
1300  case kBeautySemiElPbPb5500:
1301  {
1302  comment = comment.Append(" Beauty in Pb-Pb at 5.5 TeV");
1303  AliGenPythia *gener = new AliGenPythia(10);
1304  gener->SetProcess(kPyBeautyPbPbMNR);
1305  gener->SetStrucFunc(kCTEQ4L);
1306  gener->SetPtHard(2.75,-1.0);
1307  gener->SetEnergyCMS(5500.);
1308  gener->SetNuclei(208,208);
1309  gener->SetForceDecay(kSemiElectronic);
1310  gener->SetYRange(-2,2);
1311  gener->SetFeedDownHigherFamily(kFALSE);
1312  gener->SetCountMode(AliGenPythia::kCountParents);
1313  gGener=gener;
1314  }
1315  break;
1316  case kCocktailTRD:
1317  {
1318  comment = comment.Append(" Cocktail for TRD at 5.5 TeV");
1319  AliGenCocktail *gener = new AliGenCocktail();
1320 
1321  AliGenParam *jpsi = new AliGenParam(10,
1322  new AliGenMUONlib(),
1323  AliGenMUONlib::kJpsiFamily,
1324  "Vogt PbPb");
1325 
1326  jpsi->SetPtRange(0, 100);
1327  jpsi->SetYRange(-1., +1.);
1328  jpsi->SetForceDecay(kDiElectron);
1329 
1330  AliGenParam *ups = new AliGenParam(10,
1331  new AliGenMUONlib(),
1332  AliGenMUONlib::kUpsilonFamily,
1333  "Vogt PbPb");
1334  ups->SetPtRange(0, 100);
1335  ups->SetYRange(-1., +1.);
1336  ups->SetForceDecay(kDiElectron);
1337 
1338  AliGenParam *charm = new AliGenParam(10,
1339  new AliGenMUONlib(),
1340  AliGenMUONlib::kCharm,
1341  "central");
1342  charm->SetPtRange(0, 100);
1343  charm->SetYRange(-1.5, +1.5);
1344  charm->SetForceDecay(kSemiElectronic);
1345 
1346 
1347  AliGenParam *beauty = new AliGenParam(10,
1348  new AliGenMUONlib(),
1349  AliGenMUONlib::kBeauty,
1350  "central");
1351  beauty->SetPtRange(0, 100);
1352  beauty->SetYRange(-1.5, +1.5);
1353  beauty->SetForceDecay(kSemiElectronic);
1354 
1355  gener->AddGenerator(jpsi,"J/psi",1);
1356  gener->AddGenerator(ups,"Upsilon",1);
1357  gener->AddGenerator(charm,"Charm",1);
1358  gener->AddGenerator(beauty,"Beauty",1);
1359  gGener=gener;
1360  }
1361  break;
1362  case kPyJJ:
1363  {
1364  comment = comment.Append(" Jet-jet at 5.5 TeV");
1365  AliGenPythia *gener = new AliGenPythia(-1);
1366  gener->SetEnergyCMS(5500.);
1367  gener->SetProcess(kPyJets);
1368  Double_t ptHardMin=10.0, ptHardMax=-1.0;
1369  gener->SetPtHard(ptHardMin,ptHardMax);
1370  gener->SetYHard(-0.7,0.7);
1371  gener->SetJetEtaRange(-0.2,0.2);
1372  gener->SetEventListRange(0,1);
1373  gGener=gener;
1374  }
1375  break;
1376  case kPyGJ:
1377  {
1378  comment = comment.Append(" Gamma-jet at 5.5 TeV");
1379  AliGenPythia *gener = new AliGenPythia(-1);
1380  gener->SetEnergyCMS(5500.);
1381  gener->SetProcess(kPyDirectGamma);
1382  Double_t ptHardMin=10.0, ptHardMax=-1.0;
1383  gener->SetPtHard(ptHardMin,ptHardMax);
1384  gener->SetYHard(-1.0,1.0);
1385  gener->SetGammaEtaRange(-0.13,0.13);
1386  gener->SetGammaPhiRange(210.,330.);
1387  gener->SetEventListRange(0,1);
1388  gGener=gener;
1389  }
1390  break;
1391  case kMuonCocktailCent1:
1392  {
1393  comment = comment.Append(" Muon Cocktail Cent1");
1394  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1395  gener->SetPtRange(1.0,100.); // Transverse momentum range
1396  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1397  gener->SetYRange(-4.0,-2.4);
1398  gener->SetMuonPtCut(0.8);
1399  gener->SetMuonThetaCut(171.,178.);
1400  gener->SetMuonMultiplicity(2);
1401  gener->SetNumberOfCollisions(1626.); //Centrality class Cent1 for PDC04
1402  gener->SetNumberOfParticipants(359.4);//Centrality class Cent1 for PDC04
1403  gGener=gener;
1404  }
1405  break;
1406  case kMuonCocktailPer1:
1407  {
1408  comment = comment.Append(" Muon Cocktail Per1");
1409  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1410  gener->SetPtRange(1.0,100.); // Transverse momentum range
1411  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1412  gener->SetYRange(-4.0,-2.4);
1413  gener->SetMuonPtCut(0.8);
1414  gener->SetMuonThetaCut(171.,178.);
1415  gener->SetMuonMultiplicity(2);
1416  gener->SetNumberOfCollisions(820.0);//Centrality class Per1 for PDC04
1417  gener->SetNumberOfParticipants(229.3);//Centrality class Per1 for PDC04
1418  gGener=gener;
1419  }
1420  break;
1421  case kMuonCocktailPer4:
1422  {
1423  comment = comment.Append(" Muon Cocktail Per4");
1424  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1425  gener->SetPtRange(1.0,100.); // Transverse momentum range
1426  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1427  gener->SetYRange(-4.0,-2.4);
1428  gener->SetMuonPtCut(0.8);
1429  gener->SetMuonThetaCut(171.,178.);
1430  gener->SetMuonMultiplicity(2);
1431  gener->SetNumberOfCollisions(13.6);//Centrality class Per4 for PDC04
1432  gener->SetNumberOfParticipants(13.3);//Centrality class Per4 for PDC04
1433  gGener=gener;
1434  }
1435  break;
1437  {
1438  comment = comment.Append(" Muon Cocktail HighPt Cent1");
1439  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1440  gener->SetPtRange(1.0,100.); // Transverse momentum range
1441  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1442  gener->SetYRange(-4.0,-2.4);
1443  gener->SetMuonPtCut(2.5);
1444  gener->SetMuonThetaCut(171.,178.);
1445  gener->SetMuonMultiplicity(2);
1446  gener->SetNumberOfCollisions(1626.); //Centrality class Cent1 for PDC04
1447  gener->SetNumberOfParticipants(359.4);//Centrality class Cent1 for PDC04
1448  gGener=gener;
1449  }
1450  break;
1452  {
1453  comment = comment.Append(" Muon Cocktail HighPt Per1");
1454  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1455  gener->SetPtRange(1.0,100.); // Transverse momentum range
1456  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1457  gener->SetYRange(-4.0,-2.4);
1458  gener->SetMuonPtCut(2.5);
1459  gener->SetMuonThetaCut(171.,178.);
1460  gener->SetMuonMultiplicity(2);
1461  gener->SetNumberOfCollisions(820.0);//Centrality class Per1 for PDC04
1462  gener->SetNumberOfParticipants(229.3);//Centrality class Per1 for PDC04
1463  gGener=gener;
1464  }
1465  break;
1467  {
1468  comment = comment.Append(" Muon Cocktail HighPt Per4");
1469  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1470  gener->SetPtRange(1.0,100.); // Transverse momentum range
1471  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1472  gener->SetYRange(-4.0,-2.4);
1473  gener->SetMuonPtCut(2.5);
1474  gener->SetMuonThetaCut(171.,178.);
1475  gener->SetMuonMultiplicity(2);
1476  gener->SetNumberOfCollisions(13.6);//Centrality class Per4 for PDC04
1477  gener->SetNumberOfParticipants(13.3);//Centrality class Per4 for PDC04
1478  gGener=gener;
1479  }
1480  break;
1482  {
1483  comment = comment.Append(" Muon Cocktail Single Cent1");
1484  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1485  gener->SetPtRange(1.0,100.); // Transverse momentum range
1486  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1487  gener->SetYRange(-4.0,-2.4);
1488  gener->SetMuonPtCut(0.8);
1489  gener->SetMuonThetaCut(171.,178.);
1490  gener->SetMuonMultiplicity(1);
1491  gener->SetNumberOfCollisions(1626.); //Centrality class Cent1 for PDC04
1492  gener->SetNumberOfParticipants(359.4);//Centrality class Cent1 for PDC04
1493  gGener=gener;
1494  }
1495  break;
1497  {
1498  comment = comment.Append(" Muon Cocktail Single Per1");
1499  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1500  gener->SetPtRange(1.0,100.); // Transverse momentum range
1501  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1502  gener->SetYRange(-4.0,-2.4);
1503  gener->SetMuonPtCut(0.8);
1504  gener->SetMuonThetaCut(171.,178.);
1505  gener->SetMuonMultiplicity(1);
1506  gener->SetNumberOfCollisions(820.0);//Centrality class Per1 for PDC04
1507  gener->SetNumberOfParticipants(229.3);//Centrality class Per1 for PDC04
1508  gGener=gener;
1509  }
1510  break;
1512  {
1513  comment = comment.Append(" Muon Cocktail Single Per4");
1514  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1515  gener->SetPtRange(1.0,100.); // Transverse momentum range
1516  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1517  gener->SetYRange(-4.0,-2.4);
1518  gener->SetMuonPtCut(0.8);
1519  gener->SetMuonThetaCut(171.,178.);
1520  gener->SetMuonMultiplicity(1);
1521  gener->SetNumberOfCollisions(13.6);//Centrality class Per4 for PDC04
1522  gener->SetNumberOfParticipants(13.3);//Centrality class Per4 for PDC04
1523  gGener=gener;
1524  }
1525  break;
1526  case kFMD1Flat:
1527  {
1528  comment = comment.Append(" Flat in FMD1 range");
1529  AliGenBox* gener = new AliGenBox(2000);
1530  gener->SetPart(211);
1531  gener->SetMomentumRange(3,4);
1532  gener->SetPhiRange(0, 360);
1533  gener->SetThetaRange(0.77, 3.08);
1534  gGener = gener;
1535  }
1536  break;
1537  case kFMD2Flat:
1538  {
1539  comment = comment.Append(" Flat in FMD2 range");
1540  AliGenBox* gener = new AliGenBox(2000);
1541  gener->SetPart(211);
1542  gener->SetMomentumRange(3,4);
1543  gener->SetPhiRange(0, 360);
1544  gener->SetThetaRange(2.95, 20.42);
1545  gGener = gener;
1546  }
1547  break;
1548  case kFMD3Flat:
1549  {
1550  comment = comment.Append(" Flat in FMD3 range");
1551  AliGenBox* gener = new AliGenBox(2000);
1552  gener->SetPart(211);
1553  gener->SetMomentumRange(3,4);
1554  gener->SetPhiRange(0, 360);
1555  gener->SetThetaRange(155.97, 176.73);
1556  gGener = gener;
1557  }
1558  break;
1559  case kFMDFlat:
1560  {
1561  comment = comment.Append(" Flat in FMD range");
1562  AliGenCocktail* gener = new AliGenCocktail();
1563  gener->SetMomentumRange(3,4);
1564  gener->SetPhiRange(0, 360);
1565  AliGenBox* gener3 = new AliGenBox(2000);
1566  gener3->SetThetaRange(155.97, 176.73);
1567  gener3->SetPart(211);
1568  gener->AddGenerator(gener3, "FMD3", .33);
1569  AliGenBox* gener2 = new AliGenBox(2000);
1570  gener2->SetThetaRange(2.95, 20.42);
1571  gener2->SetPart(211);
1572  gener->AddGenerator(gener2, "FMD2", .33);
1573  AliGenBox* gener1 = new AliGenBox(2000);
1574  gener1->SetThetaRange(0.77, 3.08);
1575  gener1->SetPart(211);
1576  gener->AddGenerator(gener1, "FMD1", .34);
1577  gGener = gener;
1578  }
1579  break;
1580 
1581  default: break;
1582  }
1583  return gGener;
1584 }
1585 
1586 //____________________________________________________________________
1587 AliGenHijing*
1589 {
1590  AliGenHijing *gener = new AliGenHijing(-1);
1591  // centre of mass energy
1592  gener->SetEnergyCMS(5500.);
1593  // reference frame
1594  gener->SetReferenceFrame("CMS");
1595  // projectile
1596  gener->SetProjectile("A", 208, 82);
1597  gener->SetTarget ("A", 208, 82);
1598  // tell hijing to keep the full parent child chain
1599  gener->KeepFullEvent();
1600  // enable jet quenching
1601  gener->SetJetQuenching(1);
1602  // enable shadowing
1603  gener->SetShadowing(1);
1604  // neutral pion and heavy particle decays switched off
1605  gener->SetDecaysOff(1);
1606  // Don't track spectators
1607  gener->SetSpectators(0);
1608  // kinematic selection
1609  gener->SetSelectAll(0);
1610  return gener;
1611 }
1612 
1613 
1614 //____________________________________________________________________
1615 void
1617 {
1618  // Run type
1619  if (gSystem->Getenv("CONFIG_RUN_TYPE")) {
1620  Int_t eg1 = LookupEG(gSystem->Getenv("CONFIG_RUN_TYPE"));
1621  if (eg1 >= 0) eg = EG_t(eg1);
1622  }
1623  // Random Number seed
1624  if (gSystem->Getenv("CONFIG_SEED")) {
1625  seed = atoi(gSystem->Getenv("CONFIG_SEED"));
1626  }
1627 }
1628 
1629 //____________________________________________________________________
1630 //
1631 // EOF
1632 //
void SetRunLoader(AliRunLoader *rloader)
Definition: AliRun.cxx:392
static const TString & GetDefaultEventFolderName()
Definition: AliConfig.h:58
Geo_t
Definition: Config.C:143
static TString comment
Definition: ConfigCosmic.C:131
TROOT * gROOT
Eg_t LookupEG(const Char_t *name)
Definition: DummyConfig.C:662
EG_t
Definition: DummyConfig.C:20
AliDetector class for MUON subsystem providing simulation data management.
Definition: AliMUON.h:37
Forward Multiplicity Detector based on Silicon wafers. This class is the driver for especially simula...
Definition: AliFMD.h:306
Forward Multiplicity Detector based on Silicon wafers.
Definition: AliFMDv1.h:40
static AliRunLoader * Open(const char *filename="galice.root", const char *eventfoldername=AliConfig::GetDefaultEventFolderName(), Option_t *option="READ")
BMap_t
Definition: AliMagF.h:23
virtual void SetCutVertexZ(Float_t cut=999999.)
Definition: AliGenerator.h:62
void Config()
Definition: DummyConfig.C:171
void SetCompressionLevel(Int_t cl)
virtual void SetOrigin(Float_t ox, Float_t oy, Float_t oz)
Float_t ptHardMax
Definition: pdc06_config.C:158
AliRun * gAlice
Definition: AliRun.cxx:62
Float_t ptHardMin
Definition: pdc06_config.C:157
Base Class for EMCAL description.
Definition: AliEMCAL.h:35
static UInt_t seed
Definition: pdc06_config.C:131
virtual void SetVertexSmear(VertexSmear_t smear)
Definition: AliGenerator.h:61
AliGenHijing * HijingStandard()
Definition: DummyConfig.C:1588
virtual void SetTrackingFlag(Int_t flag=1)
Definition: AliGenerator.h:75
void SetNumberOfEventsPerFile(Int_t nevpf)
Definition: AliRunLoader.h:153
static AliMagF::BMap_t mag
virtual void Init()
Rad_t
Definition: Config.C:149
void ProcessEnvironmentVars(EG_t &eg, Int_t &seed)
Definition: DummyConfig.C:1616
virtual void SetSigma(Float_t sx, Float_t sy, Float_t sz)
MC_t
Definition: Config.C:155
TCut cut
Definition: MakeGlobalFit.C:75
Float_t EtaToTheta(Float_t eta)
Definition: DummyConfig.C:655
const char * egName[kEgMax]
Definition: DummyConfig.C:83
EG_t
Definition: Config.C:21
AliGenerator * GeneratorFactory(EG_t eg, Rad_t rad, TString &comment)
Definition: DummyConfig.C:673