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