AliRoot Core  edcc906 (edcc906)
ConfigHPT.C
Go to the documentation of this file.
1 
10 #if !defined(__CINT__) || defined(__MAKECINT__)
11 #include <Riostream.h>
12 #include <TRandom.h>
13 #include <TSystem.h>
14 #include <TVirtualMC.h>
15 #include <TGeant3TGeo.h>
16 #include <TPDGCode.h>
17 #include <TF1.h>
18 #include "STEER/AliRunLoader.h"
19 #include "STEER/AliRun.h"
20 #include "STEER/AliConfig.h"
21 #include "STEER/AliGenerator.h"
22 #include "STEER/AliLog.h"
23 #include "PYTHIA6/AliDecayerPythia.h"
24 #include "EVGEN/AliGenHIJINGpara.h"
25 #include "THijing/AliGenHijing.h"
26 #include "EVGEN/AliGenCocktail.h"
27 #include "EVGEN/AliGenSlowNucleons.h"
28 #include "EVGEN/AliSlowNucleonModelExp.h"
29 #include "EVGEN/AliGenParam.h"
30 #include "EVGEN/AliGenMUONlib.h"
31 #include "EVGEN/AliGenSTRANGElib.h"
32 #include "EVGEN/AliGenMUONCocktail.h"
33 #include "EVGEN/AliGenCocktail.h"
34 #include "EVGEN/AliGenGeVSim.h"
35 #include "EVGEN/AliGeVSimParticle.h"
36 #include "PYTHIA6/AliGenPythia.h"
37 #include "STEER/AliMagF.h"
38 #include "STRUCT/AliBODY.h"
39 #include "STRUCT/AliMAG.h"
40 #include "STRUCT/AliABSOv3.h"
41 #include "STRUCT/AliDIPOv3.h"
42 #include "STRUCT/AliHALLv3.h"
43 #include "STRUCT/AliFRAMEv2.h"
44 #include "STRUCT/AliSHILv3.h"
45 #include "STRUCT/AliPIPEv3.h"
46 #include "ITS/AliITSv11.h"
47 #include "TPC/AliTPCv2.h"
48 #include "TOF/AliTOFv6T0.h"
49 #include "HMPID/AliHMPIDv3.h"
50 #include "ZDC/AliZDCv3.h"
51 #include "TRD/AliTRDv1.h"
52 #include "FMD/AliFMDv1.h"
53 #include "MUON/AliMUONv1.h"
54 #include "PHOS/AliPHOSv1.h"
55 #include "PMD/AliPMDv1.h"
56 #include "T0/AliT0v1.h"
57 #include "EMCAL/AliEMCALv2.h"
58 #include "ACORDE/AliACORDEv1.h"
59 #include "VZERO/AliVZEROv7.h"
60 #endif
61 
62 enum PprRun_t
63 {
82 };
83 
84 const char* pprRunName[] = {
85  "test50",
86  "kParam_8000", "kParam_4000", "kParam_2000",
87  "kHijing_cent1", "kHijing_cent2",
88  "kHijing_per1", "kHijing_per2", "kHijing_per3", "kHijing_per4",
89  "kHijing_per5",
90  "kHijing_jj25", "kHijing_jj50", "kHijing_jj75", "kHijing_jj100",
91  "kHijing_jj200",
92  "kHijing_gj25", "kHijing_gj50", "kHijing_gj75", "kHijing_gj100",
93  "kHijing_gj200", "kHijing_pA", "kPythia6",
94  "kPythia6Jets20_24", "kPythia6Jets24_29", "kPythia6Jets29_35",
95  "kPythia6Jets35_42", "kPythia6Jets42_50", "kPythia6Jets50_60",
96  "kPythia6Jets60_72", "kPythia6Jets72_86", "kPythia6Jets86_104",
97  "kPythia6Jets104_125", "kPythia6Jets125_150", "kPythia6Jets150_180",
98  "kD0PbPb5500", "kCharmSemiElPbPb5500", "kBeautySemiElPbPb5500",
99  "kCocktailTRD", "kPyJJ", "kPyGJ",
100  "kMuonCocktailCent1", "kMuonCocktailPer1", "kMuonCocktailPer4",
101  "kMuonCocktailCent1HighPt", "kMuonCocktailPer1HighPt", "kMuonCocktailPer4HighPt",
102  "kMuonCocktailCent1Single", "kMuonCocktailPer1Single", "kMuonCocktailPer4Single",
103  "kFlow_2_2000", "kFlow_10_2000", "kFlow_6_2000", "kFlow_6_5000", "kHIJINGplus"
104 };
105 
107 {
109 };
110 
112 {
114 };
115 
117 {
119 };
120 
121 const char * pprTrigConfName[] = {
122  "p-p","Pb-Pb"
123 };
124 
125 // This part for configuration
126 
129 static PprMag_t smag = k5kG;
130 static Int_t sseed = 0; //Set 0 to use the current time
131 static PprTrigConf_t strig = kDefaultPPTrig; // default pp trigger configuration
132 
133 // Comment line
134 static TString comment;
135 
136 // Functions
137 Float_t EtaToTheta(Float_t arg);
139 AliGenHijing* HijingStandard();
140 AliGenGeVSim* GeVSimStandard(Float_t, Float_t);
142 
143 void Config()
144 {
147 
148  // Get settings from environment variables
150 
151  // Set Random Number seed
152  gRandom->SetSeed(sseed);
153  cout<<"Seed for random number generation= "<<gRandom->GetSeed()<<endl;
154 
155 
156  // libraries required by geant321
157 #if defined(__CINT__)
158  gSystem->Load("liblhapdf");
159  gSystem->Load("libEGPythia6");
160  gSystem->Load("libpythia6");
161  gSystem->Load("libAliPythia6");
162  gSystem->Load("libgeant321");
163 #endif
164 
165  new TGeant3TGeo("C++ Interface to Geant3");
166 
167  // Output every 100 tracks
168  ((TGeant3*)gMC)->SetSWIT(4,100);
169 
170  AliRunLoader* rl=0x0;
171 
172  AliLog::Message(AliLog::kInfo, "Creating Run Loader", "", "", "Config()"," ConfigPPR.C", __LINE__);
173 
174  rl = AliRunLoader::Open("galice.root",
176  "recreate");
177  if (rl == 0x0)
178  {
179  gAlice->Fatal("Config.C","Can not instatiate the Run Loader");
180  return;
181  }
182  rl->SetCompressionLevel(2);
183  rl->SetNumberOfEventsPerFile(100);
184  gAlice->SetRunLoader(rl);
185 
186  // Set the trigger configuration
188  cout<<"Trigger configuration is set to "<<pprTrigConfName[strig]<<endl;
189 
190  //
191  // Set External decayer
192  AliDecayer *decayer = new AliDecayerPythia();
193 
194 
195  switch (srun) {
196  case kD0PbPb5500:
197  decayer->SetForceDecay(kHadronicD);
198  break;
200  decayer->SetForceDecay(kSemiElectronic);
201  break;
203  decayer->SetForceDecay(kSemiElectronic);
204  break;
205  default:
206  decayer->SetForceDecay(kAll);
207  break;
208  }
209  decayer->Init();
210  gMC->SetExternalDecayer(decayer);
211  //
212  //
213  //=======================================================================
214  //
215  //=======================================================================
216  // ************* STEERING parameters FOR ALICE SIMULATION **************
217  // --- Specify event type to be tracked through the ALICE setup
218  // --- All positions are in cm, angles in degrees, and P and E in GeV
219 
220  gMC->SetProcess("DCAY",1);
221  gMC->SetProcess("PAIR",1);
222  gMC->SetProcess("COMP",1);
223  gMC->SetProcess("PHOT",1);
224  gMC->SetProcess("PFIS",0);
225  gMC->SetProcess("DRAY",0);
226  gMC->SetProcess("ANNI",1);
227  gMC->SetProcess("BREM",1);
228  gMC->SetProcess("MUNU",1);
229  gMC->SetProcess("CKOV",1);
230  gMC->SetProcess("HADR",1);
231  gMC->SetProcess("LOSS",2);
232  gMC->SetProcess("MULS",1);
233  gMC->SetProcess("RAYL",1);
234 
235  Float_t cut = 1.e-3; // 1MeV cut by default
236  Float_t tofmax = 1.e10;
237 
238  gMC->SetCut("CUTGAM", cut);
239  gMC->SetCut("CUTELE", cut);
240  gMC->SetCut("CUTNEU", cut);
241  gMC->SetCut("CUTHAD", cut);
242  gMC->SetCut("CUTMUO", cut);
243  gMC->SetCut("BCUTE", cut);
244  gMC->SetCut("BCUTM", cut);
245  gMC->SetCut("DCUTE", cut);
246  gMC->SetCut("DCUTM", cut);
247  gMC->SetCut("PPCUTM", cut);
248  gMC->SetCut("TOFMAX", tofmax);
249 
250  // Generator Configuration
252  gener->SetOrigin(0, 0, 0); // vertex position
253  gener->SetSigma(0, 0, 5.3); // Sigma in (X,Y,Z) (cm) on IP position
254  gener->SetCutVertexZ(1.); // Truncate at 1 sigma
255  gener->SetVertexSmear(kPerEvent);
256  gener->SetTrackingFlag(1);
257  gener->Init();
258 
259  if (smag == k2kG) {
260  comment = comment.Append(" | L3 field 0.2 T");
261  } else if (smag == k4kG) {
262  comment = comment.Append(" | L3 field 0.4 T");
263  } else if (smag == k5kG) {
264  comment = comment.Append(" | L3 field 0.5 T");
265  }
266 
267 
268  if (srad == kGluonRadiation)
269  {
270  comment = comment.Append(" | Gluon Radiation On");
271 
272  } else {
273  comment = comment.Append(" | Gluon Radiation Off");
274  }
275 
276  printf("\n \n Comment: %s \n \n", comment.Data());
277 
278 
279 // Field
280  TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 1., 1., AliMagF::k5kG));
281  rl->CdGAFile();
282 
283 //
284  Int_t iABSO = 1;
285  Int_t iDIPO = 1;
286  Int_t iFMD = 0;
287  Int_t iFRAME = 1;
288  Int_t iHALL = 1;
289  Int_t iITS = 1;
290  Int_t iMAG = 1;
291  Int_t iMUON = 0;
292  Int_t iPHOS = 0;
293  Int_t iPIPE = 1;
294  Int_t iPMD = 0;
295  Int_t iHMPID = 0;
296  Int_t iSHIL = 1;
297  Int_t iT0 = 0;
298  Int_t iTOF = 1;
299  Int_t iTPC = 1;
300  Int_t iTRD = 1;
301  Int_t iZDC = 0;
302  Int_t iEMCAL = 0;
303  Int_t iVZERO = 0;
304  Int_t iACORDE = 0;
305 
306  //=================== Alice BODY parameters =============================
307  AliBODY *BODY = new AliBODY("BODY", "Alice envelop");
308 
309 
310  if (iMAG)
311  {
312  //=================== MAG parameters ============================
313  // --- Start with Magnet since detector layouts may be depending ---
314  // --- on the selected Magnet dimensions ---
315  AliMAG *MAG = new AliMAG("MAG", "Magnet");
316  }
317 
318 
319  if (iABSO)
320  {
321  //=================== ABSO parameters ============================
322  AliABSO *ABSO = new AliABSOv3("ABSO", "Muon Absorber");
323  }
324 
325  if (iDIPO)
326  {
327  //=================== DIPO parameters ============================
328 
329  AliDIPO *DIPO = new AliDIPOv3("DIPO", "Dipole version 3");
330  }
331 
332  if (iHALL)
333  {
334  //=================== HALL parameters ============================
335 
336  AliHALL *HALL = new AliHALLv3("HALL", "Alice Hall");
337  }
338 
339 
340  if (iFRAME)
341  {
342  //=================== FRAME parameters ============================
343 
344  AliFRAMEv2 *FRAME = new AliFRAMEv2("FRAME", "Space Frame");
345  FRAME->SetHoles(1);
346  }
347 
348  if (iSHIL)
349  {
350  //=================== SHIL parameters ============================
351 
352  AliSHIL *SHIL = new AliSHILv3("SHIL", "Shielding Version 3");
353  }
354 
355 
356  if (iPIPE)
357  {
358  //=================== PIPE parameters ============================
359 
360  AliPIPE *PIPE = new AliPIPEv3("PIPE", "Beam Pipe");
361  }
362 
363  if (iITS)
364  {
365  //=================== ITS parameters ============================
366 
367  AliITS *ITS = new AliITSv11("ITS","ITS v11");
368  }
369 
370  if (iTPC)
371  {
372  //============================ TPC parameters =====================
373  AliTPC *TPC = new AliTPCv2("TPC", "Default");
374  }
375 
376 
377  if (iTOF) {
378  //=================== TOF parameters ============================
379  AliTOF *TOF = new AliTOFv6T0("TOF", "normal TOF");
380  }
381 
382 
383  if (iHMPID)
384  {
385  //=================== HMPID parameters ===========================
386  AliHMPID *HMPID = new AliHMPIDv3("HMPID", "normal HMPID");
387 
388  }
389 
390 
391  if (iZDC)
392  {
393  //=================== ZDC parameters ============================
394 
395  AliZDC *ZDC = new AliZDCv3("ZDC", "normal ZDC");
396  }
397 
398  if (iTRD)
399  {
400  //=================== TRD parameters ============================
401 
402  AliTRD *TRD = new AliTRDv1("TRD", "TRD slow simulator");
403  }
404 
405  if (iFMD)
406  {
407  //=================== FMD parameters ============================
408  AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
409  }
410 
411  if (iMUON)
412  {
413  //=================== MUON parameters ===========================
414  // New MUONv1 version (geometry defined via builders)
415  AliMUON *MUON = new AliMUONv1("MUON", "default");
416  }
417  //=================== PHOS parameters ===========================
418 
419  if (iPHOS)
420  {
421  AliPHOS *PHOS = new AliPHOSv1("PHOS", "IHEP");
422  }
423 
424 
425  if (iPMD)
426  {
427  //=================== PMD parameters ============================
428  AliPMD *PMD = new AliPMDv1("PMD", "normal PMD");
429  }
430 
431  if (iT0)
432  {
433  //=================== T0 parameters ============================
434  AliT0 *T0 = new AliT0v1("T0", "T0 Detector");
435  }
436 
437  if (iEMCAL)
438  {
439  //=================== EMCAL parameters ============================
440  AliEMCAL *EMCAL = new AliEMCALv2("EMCAL", "EMCAL_COMPLETE");
441  }
442 
443  if (iACORDE)
444  {
445  //=================== ACORDE parameters ============================
446  AliACORDE *ACORDE = new AliACORDEv1("ACORDE", "normal ACORDE");
447  }
448 
449  if (iVZERO)
450  {
451  //=================== VZERO parameters ============================
452  AliVZERO *VZERO = new AliVZEROv7("VZERO", "normal VZERO");
453  }
454 
455 
456 }
457 
458 Float_t EtaToTheta(Float_t arg){
459  return (180./TMath::Pi())*2.*atan(exp(-arg));
460 }
461 
462 
463 
465  Int_t isw = 3;
466  if (srad == kNoGluonRadiation) isw = 0;
467 
468 
469  AliGenerator * gGener = 0x0;
470  switch (srun) {
471  case test50:
472  {
473 // comment = comment.Append(":HIJINGparam test 50 particles");
474 // AliGenHIJINGpara *gener = new AliGenHIJINGpara(50);
475 // gener->SetMomentumRange(0, 999999.);
476 // gener->SetPhiRange(0., 360.);
477 // // Set pseudorapidity range from -8 to 8.
478 // Float_t thmin = EtaToTheta(1.4); // theta min. <---> eta max
479 // Float_t thmax = EtaToTheta(-1.4); // theta max. <---> eta min
480 // gener->SetThetaRange(thmin,thmax);
481 // gGener=gener;
482  Int_t nParticles = 100;
483  AliGenCocktail *gener = new AliGenCocktail();
484  gener->SetPhiRange(0, 360);
485  // Set pseudorapidity range from -8 to 8.
486  Float_t thmin = EtaToTheta(1.4); // theta min. <---> eta max
487  Float_t thmax = EtaToTheta(-1.4); // theta max. <---> eta min
488  gener->SetThetaRange(thmin,thmax);
489  gener->SetOrigin(0, 0, 0); //vertex position
490  gener->SetSigma(0, 0, 3); //Sigma in (X,Y,Z) (cm) on IP position
491 
492  AliGenHIJINGpara *hijingparam = new AliGenHIJINGpara(nParticles);
493  hijingparam->SetMomentumRange(0.2, 999);
494  gener->AddGenerator(hijingparam,"HIJING PARAM",1);
495  //
496  for (Float_t imom=0;imom<5;imom+=5){
497  Float_t pmom = imom*20;
498  Int_t nParticles2 =(imom+1);
499  //
500  //PIONS
501  AliGenBox *genboxPIP = new AliGenBox(nParticles2);
502  genboxPIP->SetPart(211);
503  genboxPIP->SetPtRange(0.2, pmom);
504  AliGenBox *genboxPIM = new AliGenBox(nParticles2);
505  genboxPIM->SetPart(-211);
506  genboxPIM->SetPtRange(0.2, pmom);
507  //Electrons
508  AliGenBox *genboxEP = new AliGenBox(nParticles2);
509  genboxEP->SetPart(11);
510  genboxEP->SetPtRange(0.1, pmom);
511  AliGenBox *genboxEM = new AliGenBox(nParticles2);
512  genboxEM->SetPart(-11);
513  genboxEM->SetPtRange(0.1, pmom);
514  //Kaons
515  AliGenBox *genboxKP = new AliGenBox(nParticles2);
516  genboxKP->SetPart(321);
517  genboxKP->SetPtRange(0.2, pmom);
518  AliGenBox *genboxKM = new AliGenBox(nParticles2);
519  genboxKM->SetPart(-321);
520  genboxKM->SetPtRange(0.2, pmom);
521  // mu
522  AliGenBox *genboxMP = new AliGenBox(nParticles2);
523  genboxMP->SetPart(13);
524  genboxMP->SetPtRange(0.2, pmom);
525  AliGenBox *genboxMM = new AliGenBox(nParticles2);
526  genboxMM->SetPart(-13);
527  genboxMM->SetPtRange(0.2, pmom);
528  // Protons
529  AliGenBox *genboxPP = new AliGenBox(nParticles2);
530  genboxPP->SetPart(2212);
531  genboxPP->SetPtRange(0.2, pmom);
532  AliGenBox *genboxPM = new AliGenBox(nParticles2);
533  genboxPM->SetPart(-2212);
534  genboxPM->SetPtRange(0.2, pmom);
535  gener->AddGenerator(genboxPIP,"GENBOX",1);
536  gener->AddGenerator(genboxPIM,"GENBOX",1);
537  gener->AddGenerator(genboxEM,"GENBOX",1);
538  gener->AddGenerator(genboxEP,"GENBOX",1);
539  gener->AddGenerator(genboxKM,"GENBOX",1);
540  gener->AddGenerator(genboxKP,"GENBOX",1);
541  gener->AddGenerator(genboxMM,"GENBOX",1);
542  gener->AddGenerator(genboxMP,"GENBOX",1);
543  gener->AddGenerator(genboxPM,"GENBOX",1);
544  gener->AddGenerator(genboxPP,"GENBOX",1);
545  }
546 
547  gGener=gener;
548 
549 
550  }
551  break;
552  case kParam_8000:
553  {
554  comment = comment.Append(":HIJINGparam N=8000");
555  AliGenHIJINGpara *gener = new AliGenHIJINGpara(86030);
556  gener->SetMomentumRange(0, 999999.);
557  gener->SetPhiRange(0., 360.);
558  // Set pseudorapidity range from -8 to 8.
559  Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
560  Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
561  gener->SetThetaRange(thmin,thmax);
562  gGener=gener;
563  }
564  break;
565  case kParam_4000:
566  {
567  comment = comment.Append("HIJINGparam N=4000");
568  AliGenHIJINGpara *gener = new AliGenHIJINGpara(43015);
569  gener->SetMomentumRange(0, 999999.);
570  gener->SetPhiRange(0., 360.);
571  // Set pseudorapidity range from -8 to 8.
572  Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
573  Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
574  gener->SetThetaRange(thmin,thmax);
575  gGener=gener;
576  }
577  break;
578  case kParam_2000:
579  {
580  comment = comment.Append("HIJINGparam N=2000");
581  AliGenHIJINGpara *gener = new AliGenHIJINGpara(21507);
582  gener->SetMomentumRange(0, 999999.);
583  gener->SetPhiRange(0., 360.);
584  // Set pseudorapidity range from -8 to 8.
585  Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
586  Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
587  gener->SetThetaRange(thmin,thmax);
588  gGener=gener;
589  }
590  break;
591 //
592 // Hijing Central
593 //
594  case kHijing_cent1:
595  {
596  comment = comment.Append("HIJING cent1");
597  AliGenHijing *gener = HijingStandard();
598 // impact parameter range
599  gener->SetImpactParameterRange(0., 5.);
600  gGener=gener;
601  }
602  break;
603  case kHijing_cent2:
604  {
605  comment = comment.Append("HIJING cent2");
606  AliGenHijing *gener = HijingStandard();
607 // impact parameter range
608  gener->SetImpactParameterRange(0., 2.);
609  gGener=gener;
610  }
611  break;
612 //
613 // Hijing Peripheral
614 //
615  case kHijing_per1:
616  {
617  comment = comment.Append("HIJING per1");
618  AliGenHijing *gener = HijingStandard();
619 // impact parameter range
620  gener->SetImpactParameterRange(5., 8.6);
621  gGener=gener;
622  }
623  break;
624  case kHijing_per2:
625  {
626  comment = comment.Append("HIJING per2");
627  AliGenHijing *gener = HijingStandard();
628 // impact parameter range
629  gener->SetImpactParameterRange(8.6, 11.2);
630  gGener=gener;
631  }
632  break;
633  case kHijing_per3:
634  {
635  comment = comment.Append("HIJING per3");
636  AliGenHijing *gener = HijingStandard();
637 // impact parameter range
638  gener->SetImpactParameterRange(11.2, 13.2);
639  gGener=gener;
640  }
641  break;
642  case kHijing_per4:
643  {
644  comment = comment.Append("HIJING per4");
645  AliGenHijing *gener = HijingStandard();
646 // impact parameter range
647  gener->SetImpactParameterRange(13.2, 15.);
648  gGener=gener;
649  }
650  break;
651  case kHijing_per5:
652  {
653  comment = comment.Append("HIJING per5");
654  AliGenHijing *gener = HijingStandard();
655 // impact parameter range
656  gener->SetImpactParameterRange(15., 100.);
657  gGener=gener;
658  }
659  break;
660 //
661 // Jet-Jet
662 //
663  case kHijing_jj25:
664  {
665  comment = comment.Append("HIJING Jet 25 GeV");
666  AliGenHijing *gener = HijingStandard();
667 // impact parameter range
668  gener->SetImpactParameterRange(0., 5.);
669  // trigger
670  gener->SetTrigger(1);
671  gener->SetPtJet(25.);
672  gener->SetRadiation(isw);
673  gener->SetSimpleJets(!isw);
674  gener->SetJetEtaRange(-0.3,0.3);
675  gener->SetJetPhiRange(75., 165.);
676  gGener=gener;
677  }
678  break;
679 
680  case kHijing_jj50:
681  {
682  comment = comment.Append("HIJING Jet 50 GeV");
683  AliGenHijing *gener = HijingStandard();
684 // impact parameter range
685  gener->SetImpactParameterRange(0., 5.);
686  // trigger
687  gener->SetTrigger(1);
688  gener->SetPtJet(50.);
689  gener->SetRadiation(isw);
690  gener->SetSimpleJets(!isw);
691  gener->SetJetEtaRange(-0.3,0.3);
692  gener->SetJetPhiRange(75., 165.);
693  gGener=gener;
694  }
695  break;
696 
697  case kHijing_jj75:
698  {
699  comment = comment.Append("HIJING Jet 75 GeV");
700  AliGenHijing *gener = HijingStandard();
701 // impact parameter range
702  gener->SetImpactParameterRange(0., 5.);
703  // trigger
704  gener->SetTrigger(1);
705  gener->SetPtJet(75.);
706  gener->SetRadiation(isw);
707  gener->SetSimpleJets(!isw);
708  gener->SetJetEtaRange(-0.3,0.3);
709  gener->SetJetPhiRange(75., 165.);
710  gGener=gener;
711  }
712  break;
713 
714  case kHijing_jj100:
715  {
716  comment = comment.Append("HIJING Jet 100 GeV");
717  AliGenHijing *gener = HijingStandard();
718 // impact parameter range
719  gener->SetImpactParameterRange(0., 5.);
720  // trigger
721  gener->SetTrigger(1);
722  gener->SetPtJet(100.);
723  gener->SetRadiation(isw);
724  gener->SetSimpleJets(!isw);
725  gener->SetJetEtaRange(-0.3,0.3);
726  gener->SetJetPhiRange(75., 165.);
727  gGener=gener;
728  }
729  break;
730 
731  case kHijing_jj200:
732  {
733  comment = comment.Append("HIJING Jet 200 GeV");
734  AliGenHijing *gener = HijingStandard();
735 // impact parameter range
736  gener->SetImpactParameterRange(0., 5.);
737  // trigger
738  gener->SetTrigger(1);
739  gener->SetPtJet(200.);
740  gener->SetRadiation(isw);
741  gener->SetSimpleJets(!isw);
742  gener->SetJetEtaRange(-0.3,0.3);
743  gener->SetJetPhiRange(75., 165.);
744  gGener=gener;
745  }
746  break;
747 //
748 // Gamma-Jet
749 //
750  case kHijing_gj25:
751  {
752  comment = comment.Append("HIJING Gamma 25 GeV");
753  AliGenHijing *gener = HijingStandard();
754 // impact parameter range
755  gener->SetImpactParameterRange(0., 5.);
756  // trigger
757  gener->SetTrigger(2);
758  gener->SetPtJet(25.);
759  gener->SetRadiation(isw);
760  gener->SetSimpleJets(!isw);
761  gener->SetJetEtaRange(-0.12, 0.12);
762  gener->SetJetPhiRange(220., 320.);
763  gGener=gener;
764  }
765  break;
766 
767  case kHijing_gj50:
768  {
769  comment = comment.Append("HIJING Gamma 50 GeV");
770  AliGenHijing *gener = HijingStandard();
771 // impact parameter range
772  gener->SetImpactParameterRange(0., 5.);
773  // trigger
774  gener->SetTrigger(2);
775  gener->SetPtJet(50.);
776  gener->SetRadiation(isw);
777  gener->SetSimpleJets(!isw);
778  gener->SetJetEtaRange(-0.12, 0.12);
779  gener->SetJetPhiRange(220., 320.);
780  gGener=gener;
781  }
782  break;
783 
784  case kHijing_gj75:
785  {
786  comment = comment.Append("HIJING Gamma 75 GeV");
787  AliGenHijing *gener = HijingStandard();
788 // impact parameter range
789  gener->SetImpactParameterRange(0., 5.);
790  // trigger
791  gener->SetTrigger(2);
792  gener->SetPtJet(75.);
793  gener->SetRadiation(isw);
794  gener->SetSimpleJets(!isw);
795  gener->SetJetEtaRange(-0.12, 0.12);
796  gener->SetJetPhiRange(220., 320.);
797  gGener=gener;
798  }
799  break;
800 
801  case kHijing_gj100:
802  {
803  comment = comment.Append("HIJING Gamma 100 GeV");
804  AliGenHijing *gener = HijingStandard();
805 // impact parameter range
806  gener->SetImpactParameterRange(0., 5.);
807  // trigger
808  gener->SetTrigger(2);
809  gener->SetPtJet(100.);
810  gener->SetRadiation(isw);
811  gener->SetSimpleJets(!isw);
812  gener->SetJetEtaRange(-0.12, 0.12);
813  gener->SetJetPhiRange(220., 320.);
814  gGener=gener;
815  }
816  break;
817 
818  case kHijing_gj200:
819  {
820  comment = comment.Append("HIJING Gamma 200 GeV");
821  AliGenHijing *gener = HijingStandard();
822 // impact parameter range
823  gener->SetImpactParameterRange(0., 5.);
824  // trigger
825  gener->SetTrigger(2);
826  gener->SetPtJet(200.);
827  gener->SetRadiation(isw);
828  gener->SetSimpleJets(!isw);
829  gener->SetJetEtaRange(-0.12, 0.12);
830  gener->SetJetPhiRange(220., 320.);
831  gGener=gener;
832  }
833  break;
834  case kHijing_pA:
835  {
836  comment = comment.Append("HIJING pA");
837 
838  AliGenCocktail *gener = new AliGenCocktail();
839 
840  AliGenHijing *hijing = new AliGenHijing(-1);
841 // centre of mass energy
842  hijing->SetEnergyCMS(TMath::Sqrt(82./208.) * 14000.);
843 // impact parameter range
844  hijing->SetImpactParameterRange(0., 15.);
845 // reference frame
846  hijing->SetReferenceFrame("CMS");
847  hijing->SetBoostLHC(1);
848 // projectile
849  hijing->SetProjectile("P", 1, 1);
850  hijing->SetTarget ("A", 208, 82);
851 // tell hijing to keep the full parent child chain
852  hijing->KeepFullEvent();
853 // enable jet quenching
854  hijing->SetJetQuenching(0);
855 // enable shadowing
856  hijing->SetShadowing(1);
857 // Don't track spectators
858  hijing->SetSpectators(0);
859 // kinematic selection
860  hijing->SetSelectAll(0);
861 //
862  AliGenSlowNucleons* gray = new AliGenSlowNucleons(1);
863  AliSlowNucleonModel* model = new AliSlowNucleonModelExp();
864  gray->SetSlowNucleonModel(model);
865  gray->SetDebug(1);
866  gener->AddGenerator(hijing,"Hijing pPb", 1);
867  gener->AddGenerator(gray, "Gray Particles",1);
868  gGener=gener;
869  }
870  break;
871  case kPythia6:
872  {
873  comment = comment.Append(":Pythia p-p @ 14 TeV");
874  AliGenPythia *gener = new AliGenPythia(-1);
875  gener->SetMomentumRange(0,999999);
876  gener->SetThetaRange(0., 180.);
877  gener->SetYRange(-12,12);
878  gener->SetPtRange(0,1000);
879  gener->SetProcess(kPyMb);
880  gener->SetEnergyCMS(14000.);
881  gGener=gener;
882  }
883  break;
884  case kPythia6Jets20_24:
885  {
886  comment = comment.Append(":Pythia jets 20-24 GeV @ 5.5 TeV");
887  AliGenPythia * gener = new AliGenPythia(-1);
888  gener->SetEnergyCMS(5500.);// Centre of mass energy
889  gener->SetProcess(kPyJets);// Process type
890  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
891  gener->SetJetPhiRange(0., 360.);
892  gener->SetJetEtRange(10., 1000.);
893  gener->SetGluonRadiation(1,1);
894  // gener->SetPtKick(0.);
895  // Structure function
896  gener->SetStrucFunc(kCTEQ4L);
897  gener->SetPtHard(20., 24.);// Pt transfer of the hard scattering
898  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
899  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
900  gGener=gener;
901  }
902  break;
903  case kPythia6Jets24_29:
904  {
905  comment = comment.Append(":Pythia jets 24-29 GeV @ 5.5 TeV");
906  AliGenPythia * gener = new AliGenPythia(-1);
907  gener->SetEnergyCMS(5500.);// Centre of mass energy
908  gener->SetProcess(kPyJets);// Process type
909  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
910  gener->SetJetPhiRange(0., 360.);
911  gener->SetJetEtRange(10., 1000.);
912  gener->SetGluonRadiation(1,1);
913  // gener->SetPtKick(0.);
914  // Structure function
915  gener->SetStrucFunc(kCTEQ4L);
916  gener->SetPtHard(24., 29.);// Pt transfer of the hard scattering
917  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
918  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
919  gGener=gener;
920  }
921  break;
922  case kPythia6Jets29_35:
923  {
924  comment = comment.Append(":Pythia jets 29-35 GeV @ 5.5 TeV");
925  AliGenPythia * gener = new AliGenPythia(-1);
926  gener->SetEnergyCMS(5500.);// Centre of mass energy
927  gener->SetProcess(kPyJets);// Process type
928  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
929  gener->SetJetPhiRange(0., 360.);
930  gener->SetJetEtRange(10., 1000.);
931  gener->SetGluonRadiation(1,1);
932  // gener->SetPtKick(0.);
933  // Structure function
934  gener->SetStrucFunc(kCTEQ4L);
935  gener->SetPtHard(29., 35.);// Pt transfer of the hard scattering
936  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
937  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
938  gGener=gener;
939  }
940  break;
941  case kPythia6Jets35_42:
942  {
943  comment = comment.Append(":Pythia jets 35-42 GeV @ 5.5 TeV");
944  AliGenPythia * gener = new AliGenPythia(-1);
945  gener->SetEnergyCMS(5500.);// Centre of mass energy
946  gener->SetProcess(kPyJets);// Process type
947  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
948  gener->SetJetPhiRange(0., 360.);
949  gener->SetJetEtRange(10., 1000.);
950  gener->SetGluonRadiation(1,1);
951  // gener->SetPtKick(0.);
952  // Structure function
953  gener->SetStrucFunc(kCTEQ4L);
954  gener->SetPtHard(35., 42.);// Pt transfer of the hard scattering
955  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
956  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
957  gGener=gener;
958  }
959  break;
960  case kPythia6Jets42_50:
961  {
962  comment = comment.Append(":Pythia jets 42-50 GeV @ 5.5 TeV");
963  AliGenPythia * gener = new AliGenPythia(-1);
964  gener->SetEnergyCMS(5500.);// Centre of mass energy
965  gener->SetProcess(kPyJets);// Process type
966  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
967  gener->SetJetPhiRange(0., 360.);
968  gener->SetJetEtRange(10., 1000.);
969  gener->SetGluonRadiation(1,1);
970  // gener->SetPtKick(0.);
971  // Structure function
972  gener->SetStrucFunc(kCTEQ4L);
973  gener->SetPtHard(42., 50.);// Pt transfer of the hard scattering
974  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
975  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
976  gGener=gener;
977  }
978  break;
979  case kPythia6Jets50_60:
980  {
981  comment = comment.Append(":Pythia jets 50-60 GeV @ 5.5 TeV");
982  AliGenPythia * gener = new AliGenPythia(-1);
983  gener->SetEnergyCMS(5500.);// Centre of mass energy
984  gener->SetProcess(kPyJets);// Process type
985  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
986  gener->SetJetPhiRange(0., 360.);
987  gener->SetJetEtRange(10., 1000.);
988  gener->SetGluonRadiation(1,1);
989  // gener->SetPtKick(0.);
990  // Structure function
991  gener->SetStrucFunc(kCTEQ4L);
992  gener->SetPtHard(50., 60.);// Pt transfer of the hard scattering
993  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
994  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
995  gGener=gener;
996  }
997  break;
998  case kPythia6Jets60_72:
999  {
1000  comment = comment.Append(":Pythia jets 60-72 GeV @ 5.5 TeV");
1001  AliGenPythia * gener = new AliGenPythia(-1);
1002  gener->SetEnergyCMS(5500.);// Centre of mass energy
1003  gener->SetProcess(kPyJets);// Process type
1004  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1005  gener->SetJetPhiRange(0., 360.);
1006  gener->SetJetEtRange(10., 1000.);
1007  gener->SetGluonRadiation(1,1);
1008  // gener->SetPtKick(0.);
1009  // Structure function
1010  gener->SetStrucFunc(kCTEQ4L);
1011  gener->SetPtHard(60., 72.);// Pt transfer of the hard scattering
1012  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1013  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1014  gGener=gener;
1015  }
1016  break;
1017  case kPythia6Jets72_86:
1018  {
1019  comment = comment.Append(":Pythia jets 72-86 GeV @ 5.5 TeV");
1020  AliGenPythia * gener = new AliGenPythia(-1);
1021  gener->SetEnergyCMS(5500.);// Centre of mass energy
1022  gener->SetProcess(kPyJets);// Process type
1023  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1024  gener->SetJetPhiRange(0., 360.);
1025  gener->SetJetEtRange(10., 1000.);
1026  gener->SetGluonRadiation(1,1);
1027  // gener->SetPtKick(0.);
1028  // Structure function
1029  gener->SetStrucFunc(kCTEQ4L);
1030  gener->SetPtHard(72., 86.);// Pt transfer of the hard scattering
1031  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1032  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1033  gGener=gener;
1034  }
1035  break;
1036  case kPythia6Jets86_104:
1037  {
1038  comment = comment.Append(":Pythia jets 86-104 GeV @ 5.5 TeV");
1039  AliGenPythia * gener = new AliGenPythia(-1);
1040  gener->SetEnergyCMS(5500.);// Centre of mass energy
1041  gener->SetProcess(kPyJets);// Process type
1042  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1043  gener->SetJetPhiRange(0., 360.);
1044  gener->SetJetEtRange(10., 1000.);
1045  gener->SetGluonRadiation(1,1);
1046  // gener->SetPtKick(0.);
1047  // Structure function
1048  gener->SetStrucFunc(kCTEQ4L);
1049  gener->SetPtHard(86., 104.);// Pt transfer of the hard scattering
1050  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1051  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1052  gGener=gener;
1053  }
1054  break;
1055  case kPythia6Jets104_125:
1056  {
1057  comment = comment.Append(":Pythia jets 105-125 GeV @ 5.5 TeV");
1058  AliGenPythia * gener = new AliGenPythia(-1);
1059  gener->SetEnergyCMS(5500.);// Centre of mass energy
1060  gener->SetProcess(kPyJets);// Process type
1061  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1062  gener->SetJetPhiRange(0., 360.);
1063  gener->SetJetEtRange(10., 1000.);
1064  gener->SetGluonRadiation(1,1);
1065  // gener->SetPtKick(0.);
1066  // Structure function
1067  gener->SetStrucFunc(kCTEQ4L);
1068  gener->SetPtHard(104., 125.);// Pt transfer of the hard scattering
1069  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1070  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1071  gGener=gener;
1072  }
1073  break;
1074  case kPythia6Jets125_150:
1075  {
1076  comment = comment.Append(":Pythia jets 125-150 GeV @ 5.5 TeV");
1077  AliGenPythia * gener = new AliGenPythia(-1);
1078  gener->SetEnergyCMS(5500.);// Centre of mass energy
1079  gener->SetProcess(kPyJets);// Process type
1080  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1081  gener->SetJetPhiRange(0., 360.);
1082  gener->SetJetEtRange(10., 1000.);
1083  gener->SetGluonRadiation(1,1);
1084  // gener->SetPtKick(0.);
1085  // Structure function
1086  gener->SetStrucFunc(kCTEQ4L);
1087  gener->SetPtHard(125., 150.);// Pt transfer of the hard scattering
1088  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1089  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1090  gGener=gener;
1091  }
1092  break;
1093  case kPythia6Jets150_180:
1094  {
1095  comment = comment.Append(":Pythia jets 150-180 GeV @ 5.5 TeV");
1096  AliGenPythia * gener = new AliGenPythia(-1);
1097  gener->SetEnergyCMS(5500.);// Centre of mass energy
1098  gener->SetProcess(kPyJets);// Process type
1099  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1100  gener->SetJetPhiRange(0., 360.);
1101  gener->SetJetEtRange(10., 1000.);
1102  gener->SetGluonRadiation(1,1);
1103  // gener->SetPtKick(0.);
1104  // Structure function
1105  gener->SetStrucFunc(kCTEQ4L);
1106  gener->SetPtHard(150., 180.);// Pt transfer of the hard scattering
1107  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1108  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1109  gGener=gener;
1110  }
1111  break;
1112  case kD0PbPb5500:
1113  {
1114  comment = comment.Append(" D0 in Pb-Pb at 5.5 TeV");
1115  AliGenPythia * gener = new AliGenPythia(10);
1116  gener->SetProcess(kPyD0PbPbMNR);
1117  gener->SetStrucFunc(kCTEQ4L);
1118  gener->SetPtHard(2.1,-1.0);
1119  gener->SetEnergyCMS(5500.);
1120  gener->SetNuclei(208,208);
1121  gener->SetForceDecay(kHadronicD);
1122  gener->SetYRange(-2,2);
1123  gener->SetFeedDownHigherFamily(kFALSE);
1124  gener->SetStackFillOpt(AliGenPythia::kParentSelection);
1125  gener->SetCountMode(AliGenPythia::kCountParents);
1126  gGener=gener;
1127  }
1128  break;
1129  case kCharmSemiElPbPb5500:
1130  {
1131  comment = comment.Append(" Charm in Pb-Pb at 5.5 TeV");
1132  AliGenPythia * gener = new AliGenPythia(10);
1133  gener->SetProcess(kPyCharmPbPbMNR);
1134  gener->SetStrucFunc(kCTEQ4L);
1135  gener->SetPtHard(2.1,-1.0);
1136  gener->SetEnergyCMS(5500.);
1137  gener->SetNuclei(208,208);
1138  gener->SetForceDecay(kSemiElectronic);
1139  gener->SetYRange(-2,2);
1140  gener->SetFeedDownHigherFamily(kFALSE);
1141  gener->SetCountMode(AliGenPythia::kCountParents);
1142  gGener=gener;
1143  }
1144  break;
1145  case kBeautySemiElPbPb5500:
1146  {
1147  comment = comment.Append(" Beauty in Pb-Pb at 5.5 TeV");
1148  AliGenPythia *gener = new AliGenPythia(10);
1149  gener->SetProcess(kPyBeautyPbPbMNR);
1150  gener->SetStrucFunc(kCTEQ4L);
1151  gener->SetPtHard(2.75,-1.0);
1152  gener->SetEnergyCMS(5500.);
1153  gener->SetNuclei(208,208);
1154  gener->SetForceDecay(kSemiElectronic);
1155  gener->SetYRange(-2,2);
1156  gener->SetFeedDownHigherFamily(kFALSE);
1157  gener->SetCountMode(AliGenPythia::kCountParents);
1158  gGener=gener;
1159  }
1160  break;
1161  case kCocktailTRD:
1162  {
1163  comment = comment.Append(" Cocktail for TRD at 5.5 TeV");
1164  AliGenCocktail *gener = new AliGenCocktail();
1165 
1166  AliGenParam *phi = new AliGenParam(10,
1167  new AliGenMUONlib(),
1168  AliGenMUONlib::kPhi,
1169  "Vogt PbPb");
1170 
1171  phi->SetPtRange(0, 100);
1172  phi->SetYRange(-1., +1.);
1173  phi->SetForceDecay(kDiElectron);
1174 
1175  AliGenParam *omega = new AliGenParam(10,
1176  new AliGenMUONlib(),
1177  AliGenMUONlib::kOmega,
1178  "Vogt PbPb");
1179 
1180  omega->SetPtRange(0, 100);
1181  omega->SetYRange(-1., +1.);
1182  omega->SetForceDecay(kDiElectron);
1183 
1184  AliGenParam *jpsi = new AliGenParam(10,
1185  new AliGenMUONlib(),
1186  AliGenMUONlib::kJpsiFamily,
1187  "Vogt PbPb");
1188 
1189  jpsi->SetPtRange(0, 100);
1190  jpsi->SetYRange(-1., +1.);
1191  jpsi->SetForceDecay(kDiElectron);
1192 
1193  AliGenParam *ups = new AliGenParam(10,
1194  new AliGenMUONlib(),
1195  AliGenMUONlib::kUpsilonFamily,
1196  "Vogt PbPb");
1197  ups->SetPtRange(0, 100);
1198  ups->SetYRange(-1., +1.);
1199  ups->SetForceDecay(kDiElectron);
1200 
1201  AliGenParam *charm = new AliGenParam(10,
1202  new AliGenMUONlib(),
1203  AliGenMUONlib::kCharm,
1204  "central");
1205  charm->SetPtRange(0, 100);
1206  charm->SetYRange(-1.5, +1.5);
1207  charm->SetForceDecay(kSemiElectronic);
1208 
1209 
1210  AliGenParam *beauty = new AliGenParam(10,
1211  new AliGenMUONlib(),
1212  AliGenMUONlib::kBeauty,
1213  "central");
1214  beauty->SetPtRange(0, 100);
1215  beauty->SetYRange(-1.5, +1.5);
1216  beauty->SetForceDecay(kSemiElectronic);
1217 
1218  AliGenParam *beautyJ = new AliGenParam(10,
1219  new AliGenMUONlib(),
1220  AliGenMUONlib::kBeauty,
1221  "central");
1222  beautyJ->SetPtRange(0, 100);
1223  beautyJ->SetYRange(-1.5, +1.5);
1224  beautyJ->SetForceDecay(kBJpsiDiElectron);
1225 
1226  gener->AddGenerator(phi,"Phi",1);
1227  gener->AddGenerator(omega,"Omega",1);
1228  gener->AddGenerator(jpsi,"J/psi",1);
1229  gener->AddGenerator(ups,"Upsilon",1);
1230  gener->AddGenerator(charm,"Charm",1);
1231  gener->AddGenerator(beauty,"Beauty",1);
1232  gener->AddGenerator(beautyJ,"J/Psi from Beauty",1);
1233  gGener=gener;
1234  }
1235  break;
1236  case kPyJJ:
1237  {
1238  comment = comment.Append(" Jet-jet at 5.5 TeV");
1239  AliGenPythia *gener = new AliGenPythia(-1);
1240  gener->SetEnergyCMS(5500.);
1241  gener->SetProcess(kPyJets);
1242  Double_t ptHardMin=10.0, ptHardMax=-1.0;
1243  gener->SetPtHard(ptHardMin,ptHardMax);
1244  gener->SetYHard(-0.7,0.7);
1245  gener->SetJetEtaRange(-0.2,0.2);
1246  gener->SetEventListRange(0,1);
1247  gGener=gener;
1248  }
1249  break;
1250  case kPyGJ:
1251  {
1252  comment = comment.Append(" Gamma-jet at 5.5 TeV");
1253  AliGenPythia *gener = new AliGenPythia(-1);
1254  gener->SetEnergyCMS(5500.);
1255  gener->SetProcess(kPyDirectGamma);
1256  Double_t ptHardMin=10.0, ptHardMax=-1.0;
1257  gener->SetPtHard(ptHardMin,ptHardMax);
1258  gener->SetYHard(-1.0,1.0);
1259  gener->SetGammaEtaRange(-0.13,0.13);
1260  gener->SetGammaPhiRange(210.,330.);
1261  gener->SetEventListRange(0,1);
1262  gGener=gener;
1263  }
1264  break;
1265  case kMuonCocktailCent1:
1266  {
1267  comment = comment.Append(" Muon Cocktail Cent1");
1268  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1269  gener->SetPtRange(0.4,100.); // Transverse momentum range
1270  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1271  gener->SetYRange(-4.0,-2.4);
1272  gener->SetMuonPtCut(0.8);
1273  gener->SetMuonThetaCut(171.,178.);
1274  gener->SetMuonMultiplicity(2);
1275  gener->SetImpactParameterRange(0.,5.); //Centrality class Cent1 for PDC04
1276  gGener=gener;
1277  }
1278  break;
1279  case kMuonCocktailPer1:
1280  {
1281  comment = comment.Append(" Muon Cocktail Per1");
1282  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1283  gener->SetPtRange(0.0,100.); // Transverse momentum range
1284  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1285  gener->SetYRange(-4.0,-2.4);
1286  gener->SetMuonPtCut(0.8);
1287  gener->SetMuonThetaCut(171.,178.);
1288  gener->SetMuonMultiplicity(2);
1289  gener->SetImpactParameterRange(5.,8.6);//Centrality class Per1 for PDC04
1290  gGener=gener;
1291  }
1292  break;
1293  case kMuonCocktailPer4:
1294  {
1295  comment = comment.Append(" Muon Cocktail Per4");
1296  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1297  gener->SetPtRange(0.0,100.); // Transverse momentum range
1298  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1299  gener->SetYRange(-4.0,-2.4);
1300  gener->SetMuonPtCut(0.8);
1301  gener->SetMuonThetaCut(171.,178.);
1302  gener->SetMuonMultiplicity(2);
1303  gener->SetImpactParameterRange(13.2,15.0);//Centrality class Per4 for PDC04
1304  gGener=gener;
1305  }
1306  break;
1308  {
1309  comment = comment.Append(" Muon Cocktail HighPt Cent1");
1310  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1311  gener->SetPtRange(0.0,100.); // Transverse momentum range
1312  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1313  gener->SetYRange(-4.0,-2.4);
1314  gener->SetMuonPtCut(2.5);
1315  gener->SetMuonThetaCut(171.,178.);
1316  gener->SetMuonMultiplicity(2);
1317  gener->SetImpactParameterRange(0.,5.); //Centrality class Cent1 for PDC04
1318  gGener=gener;
1319  }
1320  break;
1322  {
1323  comment = comment.Append(" Muon Cocktail HighPt Per1");
1324  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1325  gener->SetPtRange(0.0,100.); // Transverse momentum range
1326  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1327  gener->SetYRange(-4.0,-2.4);
1328  gener->SetMuonPtCut(2.5);
1329  gener->SetMuonThetaCut(171.,178.);
1330  gener->SetMuonMultiplicity(2);
1331  gener->SetImpactParameterRange(5.,8.6);//Centrality class Per1 for PDC04
1332  gGener=gener;
1333  }
1334  break;
1336  {
1337  comment = comment.Append(" Muon Cocktail HighPt Per4");
1338  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1339  gener->SetPtRange(0.0,100.); // Transverse momentum range
1340  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1341  gener->SetYRange(-4.0,-2.4);
1342  gener->SetMuonPtCut(2.5);
1343  gener->SetMuonThetaCut(171.,178.);
1344  gener->SetMuonMultiplicity(2);
1345  gener->SetImpactParameterRange(13.2,15.0);//Centrality class Per4 for PDC04
1346  gGener=gener;
1347  }
1348  break;
1350  {
1351  comment = comment.Append(" Muon Cocktail Single Cent1");
1352  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1353  gener->SetPtRange(0.0,100.); // Transverse momentum range
1354  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1355  gener->SetYRange(-4.0,-2.4);
1356  gener->SetMuonPtCut(0.8);
1357  gener->SetMuonThetaCut(171.,178.);
1358  gener->SetMuonMultiplicity(1);
1359  gener->SetImpactParameterRange(0.,5.); //Centrality class Cent1 for PDC04
1360  gGener=gener;
1361  }
1362  break;
1364  {
1365  comment = comment.Append(" Muon Cocktail Single Per1");
1366  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1367  gener->SetPtRange(0.0,100.); // Transverse momentum range
1368  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1369  gener->SetYRange(-4.0,-2.4);
1370  gener->SetMuonPtCut(0.8);
1371  gener->SetMuonThetaCut(171.,178.);
1372  gener->SetMuonMultiplicity(1);
1373  gener->SetImpactParameterRange(5.,8.6);//Centrality class Per1 for PDC04
1374  gener->SetNumberOfParticipants(229.3);//Centrality class Per1 for PDC04
1375  gGener=gener;
1376  }
1377  break;
1379  {
1380  comment = comment.Append(" Muon Cocktail Single Per4");
1381  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1382  gener->SetPtRange(0.0,100.); // Transverse momentum range
1383  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1384  gener->SetYRange(-4.0,-2.4);
1385  gener->SetMuonPtCut(0.8);
1386  gener->SetMuonThetaCut(171.,178.);
1387  gener->SetMuonMultiplicity(1);
1388  gener->SetImpactParameterRange(13.2,15.0);//Centrality class Per4 for PDC04
1389  gGener=gener;
1390  }
1391  break;
1392  case kFlow_2_2000:
1393  {
1394  comment = comment.Append(" Flow with dN/deta = 2000, vn = 2%");
1395  gGener = GeVSimStandard(2000., 2.);
1396  }
1397  break;
1398 
1399  case kFlow_10_2000:
1400  {
1401  comment = comment.Append(" Flow with dN/deta = 2000, vn = 10%");
1402  gGener = GeVSimStandard(2000., 10.);
1403  }
1404  break;
1405 
1406  case kFlow_6_2000:
1407  {
1408  comment = comment.Append(" Flow with dN/deta = 2000, vn = 6%");
1409  gGener = GeVSimStandard(2000., 6.);
1410  }
1411  break;
1412 
1413  case kFlow_6_5000:
1414  {
1415  comment = comment.Append(" Flow with dN/deta = 5000, vn = 6%");
1416  gGener = GeVSimStandard(5000., 6.);
1417  }
1418  break;
1419  case kHIJINGplus:
1420  {
1421  //
1422  // The cocktail
1423  AliGenCocktail *gener = new AliGenCocktail();
1424 
1425  //
1426  // Charm production by Pythia
1427  AliGenPythia * genpyc = new AliGenPythia(230);
1428  genpyc->SetProcess(kPyCharmPbPbMNR);
1429  genpyc->SetStrucFunc(kCTEQ4L);
1430  genpyc->SetPtHard(2.1,-1.0);
1431  genpyc->SetEnergyCMS(5500.);
1432  genpyc->SetNuclei(208,208);
1433  genpyc->SetYRange(-999,999);
1434  genpyc->SetForceDecay(kAll);
1435  genpyc->SetFeedDownHigherFamily(kFALSE);
1436  genpyc->SetCountMode(AliGenPythia::kCountParents);
1437  //
1438  // Beauty production by Pythia
1439  AliGenPythia * genpyb = new AliGenPythia(9);
1440  genpyb->SetProcess(kPyBeautyPbPbMNR);
1441  genpyb->SetStrucFunc(kCTEQ4L);
1442  genpyb->SetPtHard(2.75,-1.0);
1443  genpyb->SetEnergyCMS(5500.);
1444  genpyb->SetNuclei(208,208);
1445  genpyb->SetYRange(-999,999);
1446  genpyb->SetForceDecay(kAll);
1447  genpyb->SetFeedDownHigherFamily(kFALSE);
1448  genpyb->SetCountMode(AliGenPythia::kCountParents);
1449  //
1450  // Hyperons
1451  //
1452  AliGenSTRANGElib *lib = new AliGenSTRANGElib();
1453  Int_t particle;
1454  // Xi
1455  particle = kXiMinus;
1456  AliGenParam *genXi = new AliGenParam(16,particle,lib->GetPt(particle),lib->GetY(particle),lib->GetIp(particle));
1457  genXi->SetPtRange(0., 12.);
1458  genXi->SetYRange(-1.1, 1.1);
1459  genXi->SetForceDecay(kNoDecay);
1460 
1461  //
1462  // Omega
1463  particle = kOmegaMinus;
1464  AliGenParam *genOmega = new AliGenParam(10,particle,lib->GetPt(particle),lib->GetY(particle),lib->GetIp(particle));
1465  genOmega->SetPtRange(0, 12.);
1466  genOmega->SetYRange(-1.1, 1.1);
1467  genOmega->SetForceDecay(kNoDecay);
1468 
1469  //
1470  // Central Hijing
1471  AliGenHijing *genHi = HijingStandard();
1472  genHi->SwitchOffHeavyQuarks(kTRUE);
1473  genHi->SetImpactParameterRange(0.,5.);
1474  //
1475  // Add everything to the cocktail and shake ...
1476  gener->AddGenerator(genHi, "Hijing cent1", 1);
1477  gener->AddGenerator(genpyc, "Extra charm", 1);
1478  gener->AddGenerator(genpyb, "Extra beauty", 1);
1479  gener->AddGenerator(genXi, "Xi" , 1);
1480  gener->AddGenerator(genOmega, "Omega", 1);
1481  gGener = gener;
1482  }
1483  break;
1484  default: break;
1485  }
1486 
1487  return gGener;
1488 }
1489 
1490 AliGenHijing* HijingStandard()
1491 {
1492  AliGenHijing *gener = new AliGenHijing(-1);
1493 // centre of mass energy
1494  gener->SetEnergyCMS(5500.);
1495 // reference frame
1496  gener->SetReferenceFrame("CMS");
1497 // projectile
1498  gener->SetProjectile("A", 208, 82);
1499  gener->SetTarget ("A", 208, 82);
1500 // tell hijing to keep the full parent child chain
1501  gener->KeepFullEvent();
1502 // enable jet quenching
1503  gener->SetJetQuenching(1);
1504 // enable shadowing
1505  gener->SetShadowing(1);
1506 // neutral pion and heavy particle decays switched off
1507  gener->SetDecaysOff(1);
1508 // Don't track spectators
1509  gener->SetSpectators(0);
1510 // kinematic selection
1511  gener->SetSelectAll(0);
1512  return gener;
1513 }
1514 
1515 AliGenGeVSim* GeVSimStandard(Float_t mult, Float_t vn)
1516 {
1517  AliGenGeVSim* gener = new AliGenGeVSim(0);
1518 //
1519 // Mult is the number of charged particles in |eta| < 0.5
1520 // Vn is in (%)
1521 //
1522 // Sigma of the Gaussian dN/deta
1523  Float_t sigma_eta = 2.75;
1524 //
1525 // Maximum eta
1526  Float_t etamax = 7.00;
1527 //
1528 //
1529 // Scale from multiplicity in |eta| < 0.5 to |eta| < |etamax|
1530  Float_t mm = mult * (TMath::Erf(etamax/sigma_eta/sqrt(2.)) / TMath::Erf(0.5/sigma_eta/sqrt(2.)));
1531 //
1532 // Scale from charged to total multiplicity
1533 //
1534  mm *= 1.587;
1535 //
1536 // Vn
1537  vn /= 100.;
1538 //
1539 // Define particles
1540 //
1541 //
1542 // 78% Pions (26% pi+, 26% pi-, 26% p0) T = 250 MeV
1543  AliGeVSimParticle *pp = new AliGeVSimParticle(kPiPlus, 1, 0.26 * mm, 0.25, sigma_eta) ;
1544  AliGeVSimParticle *pm = new AliGeVSimParticle(kPiMinus, 1, 0.26 * mm, 0.25, sigma_eta) ;
1545  AliGeVSimParticle *p0 = new AliGeVSimParticle(kPi0, 1, 0.26 * mm, 0.25, sigma_eta) ;
1546 //
1547 // 12% Kaons (3% K0short, 3% K0long, 3% K+, 3% K-) T = 300 MeV
1548  AliGeVSimParticle *ks = new AliGeVSimParticle(kK0Short, 1, 0.03 * mm, 0.30, sigma_eta) ;
1549  AliGeVSimParticle *kl = new AliGeVSimParticle(kK0Long, 1, 0.03 * mm, 0.30, sigma_eta) ;
1550  AliGeVSimParticle *kp = new AliGeVSimParticle(kKPlus, 1, 0.03 * mm, 0.30, sigma_eta) ;
1551  AliGeVSimParticle *km = new AliGeVSimParticle(kKMinus, 1, 0.03 * mm, 0.30, sigma_eta) ;
1552 //
1553 // 10% Protons / Neutrons (5% Protons, 5% Neutrons) T = 250 MeV
1554  AliGeVSimParticle *pr = new AliGeVSimParticle(kProton, 1, 0.05 * mm, 0.25, sigma_eta) ;
1555  AliGeVSimParticle *ne = new AliGeVSimParticle(kNeutron, 1, 0.05 * mm, 0.25, sigma_eta) ;
1556 //
1557 // Set Elliptic Flow properties
1558 
1559  Float_t pTsaturation = 2. ;
1560 
1561  pp->SetEllipticParam(vn,pTsaturation,0.) ;
1562  pm->SetEllipticParam(vn,pTsaturation,0.) ;
1563  p0->SetEllipticParam(vn,pTsaturation,0.) ;
1564  pr->SetEllipticParam(vn,pTsaturation,0.) ;
1565  ne->SetEllipticParam(vn,pTsaturation,0.) ;
1566  ks->SetEllipticParam(vn,pTsaturation,0.) ;
1567  kl->SetEllipticParam(vn,pTsaturation,0.) ;
1568  kp->SetEllipticParam(vn,pTsaturation,0.) ;
1569  km->SetEllipticParam(vn,pTsaturation,0.) ;
1570 //
1571 // Set Direct Flow properties
1572  pp->SetDirectedParam(vn,1.0,0.) ;
1573  pm->SetDirectedParam(vn,1.0,0.) ;
1574  p0->SetDirectedParam(vn,1.0,0.) ;
1575  pr->SetDirectedParam(vn,1.0,0.) ;
1576  ne->SetDirectedParam(vn,1.0,0.) ;
1577  ks->SetDirectedParam(vn,1.0,0.) ;
1578  kl->SetDirectedParam(vn,1.0,0.) ;
1579  kp->SetDirectedParam(vn,1.0,0.) ;
1580  km->SetDirectedParam(vn,1.0,0.) ;
1581 //
1582 // Add particles to the list
1583  gener->AddParticleType(pp) ;
1584  gener->AddParticleType(pm) ;
1585  gener->AddParticleType(p0) ;
1586  gener->AddParticleType(pr) ;
1587  gener->AddParticleType(ne) ;
1588  gener->AddParticleType(ks) ;
1589  gener->AddParticleType(kl) ;
1590  gener->AddParticleType(kp) ;
1591  gener->AddParticleType(km) ;
1592 //
1593 // Random Ev.Plane ----------------------------------
1594  TF1 *rpa = new TF1("gevsimPsiRndm","1", 0, 360);
1595 // --------------------------------------------------
1596  gener->SetPtRange(0., 9.) ; // Use a resonable range! (used for bin size in numerical integration)
1597  gener->SetPhiRange(0, 360);
1598  //
1599  // Set pseudorapidity range
1600  Float_t thmin = EtaToTheta(+etamax);
1601  Float_t thmax = EtaToTheta(-etamax);
1602  gener->SetThetaRange(thmin,thmax);
1603  return gener;
1604 }
1605 
1606 
1607 
1609 {
1611 
1612  if (gSystem->Getenv("CONFIG_RUN_TYPE")) {
1613  for (Int_t iRun = 0; iRun < kRunMax; iRun++) {
1614  if (strcmp(gSystem->Getenv("CONFIG_RUN_TYPE"), pprRunName[iRun])==0) {
1615  srun = (PprRun_t)iRun;
1616  cout<<"Run type set to "<<pprRunName[iRun]<<endl;
1617  }
1618  }
1619  }
1620 
1621  // Random Number seed
1622  if (gSystem->Getenv("CONFIG_SEED")) {
1623  sseed = atoi(gSystem->Getenv("CONFIG_SEED"));
1624  }
1625 }
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
void SetRunLoader(AliRunLoader *rloader)
Definition: AliRun.cxx:392
static const TString & GetDefaultEventFolderName()
Definition: AliConfig.h:58
static Int_t sseed
Definition: ConfigHPT.C:130
static PprRun_t srun
Definition: ConfigHPT.C:127
const char * pprRunName[]
Definition: ConfigHPT.C:84
PprRad_t
Definition: ConfigCosmic.C:108
Float_t EtaToTheta(Float_t arg)
Definition: ConfigHPT.C:458
const char * pprTrigConfName[]
Definition: ConfigHPT.C:121
AliGenHijing * HijingStandard()
Definition: ConfigHPT.C:1490
PprTrigConf_t
Definition: ConfigCosmic.C:113
static void Message(UInt_t level, const char *message, const char *module, const char *className, const char *function, const char *file, Int_t line)
Definition: AliLog.cxx:929
PprRun_t
Definition: ConfigHPT.C:62
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
PprMag_t
Definition: ConfigHPT.C:111
static AliRunLoader * Open(const char *filename="galice.root", const char *eventfoldername=AliConfig::GetDefaultEventFolderName(), Option_t *option="READ")
AliGenerator * GeneratorFactory(PprRun_t srun)
Definition: ConfigHPT.C:464
virtual void SetCutVertexZ(Float_t cut=999999.)
Definition: AliGenerator.h:62
static TString comment
Definition: ConfigHPT.C:134
static PprTrigConf_t strig
Definition: ConfigHPT.C:131
void SetTriggerConfig(TString conf)
Definition: AliSimulation.h:73
AliDetector class for MUON subsystem which implements functions for simulation.
Definition: AliMUONv1.h:24
void SetCompressionLevel(Int_t cl)
virtual void SetOrigin(Float_t ox, Float_t oy, Float_t oz)
static AliSimulation * Instance()
Definition: AliSimulation.h:38
Float_t ptHardMax
Definition: pdc06_config.C:158
PprRun_t
Definition: ConfigCosmic.C:64
AliRun * gAlice
Definition: AliRun.cxx:62
Float_t ptHardMin
Definition: pdc06_config.C:157
Base Class for EMCAL description.
Definition: AliEMCAL.h:35
virtual void SetVertexSmear(VertexSmear_t smear)
Definition: AliGenerator.h:61
static PprRad_t srad
Definition: ConfigHPT.C:128
virtual void SetTrackingFlag(Int_t flag=1)
Definition: AliGenerator.h:75
void Config()
Definition: ConfigHPT.C:143
void SetNumberOfEventsPerFile(Int_t nevpf)
Definition: AliRunLoader.h:153
virtual void Init()
virtual void SetSigma(Float_t sx, Float_t sy, Float_t sz)
TCut cut
Definition: MakeGlobalFit.C:75
AliGenGeVSim * GeVSimStandard(Float_t, Float_t)
Definition: ConfigHPT.C:1515
void ProcessEnvironmentVars()
Definition: ConfigHPT.C:1608
EMCal simulation manager class v2.
Definition: AliEMCALv2.h:30
static PprMag_t smag
Definition: ConfigHPT.C:129