AliRoot Core  edcc906 (edcc906)
ConfigCosmicBox.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 
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);
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",
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
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
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  //
483  //
484  //
485  AliGenCocktail *gener = new AliGenCocktail();
486  gGener=gener;
487 
488  for (Int_t ipart=0; ipart<500; ipart++){
489  AliGenFixed *generCosmic = new AliGenFixed(1);
490  //
491  Int_t sign = (gRandom->Rndm()>0.5)? 1:-1;
492  //Double_t xcosmic = (gRandom->Rndm()-0.5)*2.*370.;
493  //Double_t zcosmic = (gRandom->Rndm()-0.5)*2.*370.;
494  Double_t mom = gRandom->Exp(8.);
495  // Double_t theta = gRandom->Gaus(0.5*TMath::Pi(),0.42);
496  //Double_t phi = gRandom->Gaus(-0.5*TMath::Pi(),0.42);
497  Double_t theta = gRandom->Gaus(90,0.42*180/TMath::Pi()); // angle in degrees
498  Double_t phi = gRandom->Gaus(-90,0.42*180/TMath::Pi());
499  generCosmic->SetMomentum(mom);
500  generCosmic->SetPhi(phi);
501  generCosmic->SetTheta(theta);
502  generCosmic->SetVertex(xcosmic,700.,zcosmic); //vertex position - This is ignored
503 
504  generCosmic->SetVRange(-700,700,
505  700,701,
506  -700,700);
507  generCosmic->SetPart(13*sign);
508  generCosmic->SetVertexSmear(kPerEvent);
509  char gname[1000];
510  sprintf(gname,"G_%d",ipart);
511  gener->AddGenerator(generCosmic,gname,1);
512  }
513 
514  }
515  break;
516  case kParam_8000:
517  {
518  comment = comment.Append(":HIJINGparam N=8000");
519  AliGenHIJINGpara *gener = new AliGenHIJINGpara(86030);
520  gener->SetMomentumRange(0, 999999.);
521  gener->SetPhiRange(0., 360.);
522  // Set pseudorapidity range from -8 to 8.
523  Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
524  Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
525  gener->SetThetaRange(thmin,thmax);
526  gGener=gener;
527  }
528  break;
529  case kParam_4000:
530  {
531  comment = comment.Append("HIJINGparam N=4000");
532  AliGenHIJINGpara *gener = new AliGenHIJINGpara(43015);
533  gener->SetMomentumRange(0, 999999.);
534  gener->SetPhiRange(0., 360.);
535  // Set pseudorapidity range from -8 to 8.
536  Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
537  Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
538  gener->SetThetaRange(thmin,thmax);
539  gGener=gener;
540  }
541  break;
542  case kParam_2000:
543  {
544  comment = comment.Append("HIJINGparam N=2000");
545  AliGenHIJINGpara *gener = new AliGenHIJINGpara(21507);
546  gener->SetMomentumRange(0, 999999.);
547  gener->SetPhiRange(0., 360.);
548  // Set pseudorapidity range from -8 to 8.
549  Float_t thmin = EtaToTheta(8); // theta min. <---> eta max
550  Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min
551  gener->SetThetaRange(thmin,thmax);
552  gGener=gener;
553  }
554  break;
555 //
556 // Hijing Central
557 //
558  case kHijing_cent1:
559  {
560  comment = comment.Append("HIJING cent1");
561  AliGenHijing *gener = HijingStandard();
562 // impact parameter range
563  gener->SetImpactParameterRange(0., 5.);
564  gGener=gener;
565  }
566  break;
567  case kHijing_cent2:
568  {
569  comment = comment.Append("HIJING cent2");
570  AliGenHijing *gener = HijingStandard();
571 // impact parameter range
572  gener->SetImpactParameterRange(0., 2.);
573  gGener=gener;
574  }
575  break;
576 //
577 // Hijing Peripheral
578 //
579  case kHijing_per1:
580  {
581  comment = comment.Append("HIJING per1");
582  AliGenHijing *gener = HijingStandard();
583 // impact parameter range
584  gener->SetImpactParameterRange(5., 8.6);
585  gGener=gener;
586  }
587  break;
588  case kHijing_per2:
589  {
590  comment = comment.Append("HIJING per2");
591  AliGenHijing *gener = HijingStandard();
592 // impact parameter range
593  gener->SetImpactParameterRange(8.6, 11.2);
594  gGener=gener;
595  }
596  break;
597  case kHijing_per3:
598  {
599  comment = comment.Append("HIJING per3");
600  AliGenHijing *gener = HijingStandard();
601 // impact parameter range
602  gener->SetImpactParameterRange(11.2, 13.2);
603  gGener=gener;
604  }
605  break;
606  case kHijing_per4:
607  {
608  comment = comment.Append("HIJING per4");
609  AliGenHijing *gener = HijingStandard();
610 // impact parameter range
611  gener->SetImpactParameterRange(13.2, 15.);
612  gGener=gener;
613  }
614  break;
615  case kHijing_per5:
616  {
617  comment = comment.Append("HIJING per5");
618  AliGenHijing *gener = HijingStandard();
619 // impact parameter range
620  gener->SetImpactParameterRange(15., 100.);
621  gGener=gener;
622  }
623  break;
624 //
625 // Jet-Jet
626 //
627  case kHijing_jj25:
628  {
629  comment = comment.Append("HIJING Jet 25 GeV");
630  AliGenHijing *gener = HijingStandard();
631 // impact parameter range
632  gener->SetImpactParameterRange(0., 5.);
633  // trigger
634  gener->SetTrigger(1);
635  gener->SetPtJet(25.);
636  gener->SetRadiation(isw);
637  gener->SetSimpleJets(!isw);
638  gener->SetJetEtaRange(-0.3,0.3);
639  gener->SetJetPhiRange(75., 165.);
640  gGener=gener;
641  }
642  break;
643 
644  case kHijing_jj50:
645  {
646  comment = comment.Append("HIJING Jet 50 GeV");
647  AliGenHijing *gener = HijingStandard();
648 // impact parameter range
649  gener->SetImpactParameterRange(0., 5.);
650  // trigger
651  gener->SetTrigger(1);
652  gener->SetPtJet(50.);
653  gener->SetRadiation(isw);
654  gener->SetSimpleJets(!isw);
655  gener->SetJetEtaRange(-0.3,0.3);
656  gener->SetJetPhiRange(75., 165.);
657  gGener=gener;
658  }
659  break;
660 
661  case kHijing_jj75:
662  {
663  comment = comment.Append("HIJING Jet 75 GeV");
664  AliGenHijing *gener = HijingStandard();
665 // impact parameter range
666  gener->SetImpactParameterRange(0., 5.);
667  // trigger
668  gener->SetTrigger(1);
669  gener->SetPtJet(75.);
670  gener->SetRadiation(isw);
671  gener->SetSimpleJets(!isw);
672  gener->SetJetEtaRange(-0.3,0.3);
673  gener->SetJetPhiRange(75., 165.);
674  gGener=gener;
675  }
676  break;
677 
678  case kHijing_jj100:
679  {
680  comment = comment.Append("HIJING Jet 100 GeV");
681  AliGenHijing *gener = HijingStandard();
682 // impact parameter range
683  gener->SetImpactParameterRange(0., 5.);
684  // trigger
685  gener->SetTrigger(1);
686  gener->SetPtJet(100.);
687  gener->SetRadiation(isw);
688  gener->SetSimpleJets(!isw);
689  gener->SetJetEtaRange(-0.3,0.3);
690  gener->SetJetPhiRange(75., 165.);
691  gGener=gener;
692  }
693  break;
694 
695  case kHijing_jj200:
696  {
697  comment = comment.Append("HIJING Jet 200 GeV");
698  AliGenHijing *gener = HijingStandard();
699 // impact parameter range
700  gener->SetImpactParameterRange(0., 5.);
701  // trigger
702  gener->SetTrigger(1);
703  gener->SetPtJet(200.);
704  gener->SetRadiation(isw);
705  gener->SetSimpleJets(!isw);
706  gener->SetJetEtaRange(-0.3,0.3);
707  gener->SetJetPhiRange(75., 165.);
708  gGener=gener;
709  }
710  break;
711 //
712 // Gamma-Jet
713 //
714  case kHijing_gj25:
715  {
716  comment = comment.Append("HIJING Gamma 25 GeV");
717  AliGenHijing *gener = HijingStandard();
718 // impact parameter range
719  gener->SetImpactParameterRange(0., 5.);
720  // trigger
721  gener->SetTrigger(2);
722  gener->SetPtJet(25.);
723  gener->SetRadiation(isw);
724  gener->SetSimpleJets(!isw);
725  gener->SetJetEtaRange(-0.12, 0.12);
726  gener->SetJetPhiRange(220., 320.);
727  gGener=gener;
728  }
729  break;
730 
731  case kHijing_gj50:
732  {
733  comment = comment.Append("HIJING Gamma 50 GeV");
734  AliGenHijing *gener = HijingStandard();
735 // impact parameter range
736  gener->SetImpactParameterRange(0., 5.);
737  // trigger
738  gener->SetTrigger(2);
739  gener->SetPtJet(50.);
740  gener->SetRadiation(isw);
741  gener->SetSimpleJets(!isw);
742  gener->SetJetEtaRange(-0.12, 0.12);
743  gener->SetJetPhiRange(220., 320.);
744  gGener=gener;
745  }
746  break;
747 
748  case kHijing_gj75:
749  {
750  comment = comment.Append("HIJING Gamma 75 GeV");
751  AliGenHijing *gener = HijingStandard();
752 // impact parameter range
753  gener->SetImpactParameterRange(0., 5.);
754  // trigger
755  gener->SetTrigger(2);
756  gener->SetPtJet(75.);
757  gener->SetRadiation(isw);
758  gener->SetSimpleJets(!isw);
759  gener->SetJetEtaRange(-0.12, 0.12);
760  gener->SetJetPhiRange(220., 320.);
761  gGener=gener;
762  }
763  break;
764 
765  case kHijing_gj100:
766  {
767  comment = comment.Append("HIJING Gamma 100 GeV");
768  AliGenHijing *gener = HijingStandard();
769 // impact parameter range
770  gener->SetImpactParameterRange(0., 5.);
771  // trigger
772  gener->SetTrigger(2);
773  gener->SetPtJet(100.);
774  gener->SetRadiation(isw);
775  gener->SetSimpleJets(!isw);
776  gener->SetJetEtaRange(-0.12, 0.12);
777  gener->SetJetPhiRange(220., 320.);
778  gGener=gener;
779  }
780  break;
781 
782  case kHijing_gj200:
783  {
784  comment = comment.Append("HIJING Gamma 200 GeV");
785  AliGenHijing *gener = HijingStandard();
786 // impact parameter range
787  gener->SetImpactParameterRange(0., 5.);
788  // trigger
789  gener->SetTrigger(2);
790  gener->SetPtJet(200.);
791  gener->SetRadiation(isw);
792  gener->SetSimpleJets(!isw);
793  gener->SetJetEtaRange(-0.12, 0.12);
794  gener->SetJetPhiRange(220., 320.);
795  gGener=gener;
796  }
797  break;
798  case kHijing_pA:
799  {
800  comment = comment.Append("HIJING pA");
801 
802  AliGenCocktail *gener = new AliGenCocktail();
803 
804  AliGenHijing *hijing = new AliGenHijing(-1);
805 // centre of mass energy
806  hijing->SetEnergyCMS(TMath::Sqrt(82./208.) * 14000.);
807 // impact parameter range
808  hijing->SetImpactParameterRange(0., 15.);
809 // reference frame
810  hijing->SetReferenceFrame("CMS");
811  hijing->SetBoostLHC(1);
812 // projectile
813  hijing->SetProjectile("P", 1, 1);
814  hijing->SetTarget ("A", 208, 82);
815 // tell hijing to keep the full parent child chain
816  hijing->KeepFullEvent();
817 // enable jet quenching
818  hijing->SetJetQuenching(0);
819 // enable shadowing
820  hijing->SetShadowing(1);
821 // Don't track spectators
822  hijing->SetSpectators(0);
823 // kinematic selection
824  hijing->SetSelectAll(0);
825 //
826  AliGenSlowNucleons* gray = new AliGenSlowNucleons(1);
827  AliSlowNucleonModel* model = new AliSlowNucleonModelExp();
828  gray->SetSlowNucleonModel(model);
829  gray->SetDebug(1);
830  gener->AddGenerator(hijing,"Hijing pPb", 1);
831  gener->AddGenerator(gray, "Gray Particles",1);
832  gGener=gener;
833  }
834  break;
835  case kPythia6:
836  {
837  comment = comment.Append(":Pythia p-p @ 14 TeV");
838  AliGenPythia *gener = new AliGenPythia(-1);
839  gener->SetMomentumRange(0,999999);
840  gener->SetThetaRange(0., 180.);
841  gener->SetYRange(-12,12);
842  gener->SetPtRange(0,1000);
843  gener->SetProcess(kPyMb);
844  gener->SetEnergyCMS(14000.);
845  gGener=gener;
846  }
847  break;
848  case kPythia6Jets20_24:
849  {
850  comment = comment.Append(":Pythia jets 20-24 GeV @ 5.5 TeV");
851  AliGenPythia * gener = new AliGenPythia(-1);
852  gener->SetEnergyCMS(5500.);// Centre of mass energy
853  gener->SetProcess(kPyJets);// Process type
854  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
855  gener->SetJetPhiRange(0., 360.);
856  gener->SetJetEtRange(10., 1000.);
857  gener->SetGluonRadiation(1,1);
858  // gener->SetPtKick(0.);
859  // Structure function
860  gener->SetStrucFunc(kCTEQ4L);
861  gener->SetPtHard(20., 24.);// Pt transfer of the hard scattering
862  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
863  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
864  gGener=gener;
865  }
866  break;
867  case kPythia6Jets24_29:
868  {
869  comment = comment.Append(":Pythia jets 24-29 GeV @ 5.5 TeV");
870  AliGenPythia * gener = new AliGenPythia(-1);
871  gener->SetEnergyCMS(5500.);// Centre of mass energy
872  gener->SetProcess(kPyJets);// Process type
873  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
874  gener->SetJetPhiRange(0., 360.);
875  gener->SetJetEtRange(10., 1000.);
876  gener->SetGluonRadiation(1,1);
877  // gener->SetPtKick(0.);
878  // Structure function
879  gener->SetStrucFunc(kCTEQ4L);
880  gener->SetPtHard(24., 29.);// Pt transfer of the hard scattering
881  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
882  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
883  gGener=gener;
884  }
885  break;
886  case kPythia6Jets29_35:
887  {
888  comment = comment.Append(":Pythia jets 29-35 GeV @ 5.5 TeV");
889  AliGenPythia * gener = new AliGenPythia(-1);
890  gener->SetEnergyCMS(5500.);// Centre of mass energy
891  gener->SetProcess(kPyJets);// Process type
892  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
893  gener->SetJetPhiRange(0., 360.);
894  gener->SetJetEtRange(10., 1000.);
895  gener->SetGluonRadiation(1,1);
896  // gener->SetPtKick(0.);
897  // Structure function
898  gener->SetStrucFunc(kCTEQ4L);
899  gener->SetPtHard(29., 35.);// Pt transfer of the hard scattering
900  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
901  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
902  gGener=gener;
903  }
904  break;
905  case kPythia6Jets35_42:
906  {
907  comment = comment.Append(":Pythia jets 35-42 GeV @ 5.5 TeV");
908  AliGenPythia * gener = new AliGenPythia(-1);
909  gener->SetEnergyCMS(5500.);// Centre of mass energy
910  gener->SetProcess(kPyJets);// Process type
911  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
912  gener->SetJetPhiRange(0., 360.);
913  gener->SetJetEtRange(10., 1000.);
914  gener->SetGluonRadiation(1,1);
915  // gener->SetPtKick(0.);
916  // Structure function
917  gener->SetStrucFunc(kCTEQ4L);
918  gener->SetPtHard(35., 42.);// Pt transfer of the hard scattering
919  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
920  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
921  gGener=gener;
922  }
923  break;
924  case kPythia6Jets42_50:
925  {
926  comment = comment.Append(":Pythia jets 42-50 GeV @ 5.5 TeV");
927  AliGenPythia * gener = new AliGenPythia(-1);
928  gener->SetEnergyCMS(5500.);// Centre of mass energy
929  gener->SetProcess(kPyJets);// Process type
930  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
931  gener->SetJetPhiRange(0., 360.);
932  gener->SetJetEtRange(10., 1000.);
933  gener->SetGluonRadiation(1,1);
934  // gener->SetPtKick(0.);
935  // Structure function
936  gener->SetStrucFunc(kCTEQ4L);
937  gener->SetPtHard(42., 50.);// Pt transfer of the hard scattering
938  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
939  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
940  gGener=gener;
941  }
942  break;
943  case kPythia6Jets50_60:
944  {
945  comment = comment.Append(":Pythia jets 50-60 GeV @ 5.5 TeV");
946  AliGenPythia * gener = new AliGenPythia(-1);
947  gener->SetEnergyCMS(5500.);// Centre of mass energy
948  gener->SetProcess(kPyJets);// Process type
949  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
950  gener->SetJetPhiRange(0., 360.);
951  gener->SetJetEtRange(10., 1000.);
952  gener->SetGluonRadiation(1,1);
953  // gener->SetPtKick(0.);
954  // Structure function
955  gener->SetStrucFunc(kCTEQ4L);
956  gener->SetPtHard(50., 60.);// Pt transfer of the hard scattering
957  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
958  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
959  gGener=gener;
960  }
961  break;
962  case kPythia6Jets60_72:
963  {
964  comment = comment.Append(":Pythia jets 60-72 GeV @ 5.5 TeV");
965  AliGenPythia * gener = new AliGenPythia(-1);
966  gener->SetEnergyCMS(5500.);// Centre of mass energy
967  gener->SetProcess(kPyJets);// Process type
968  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
969  gener->SetJetPhiRange(0., 360.);
970  gener->SetJetEtRange(10., 1000.);
971  gener->SetGluonRadiation(1,1);
972  // gener->SetPtKick(0.);
973  // Structure function
974  gener->SetStrucFunc(kCTEQ4L);
975  gener->SetPtHard(60., 72.);// Pt transfer of the hard scattering
976  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
977  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
978  gGener=gener;
979  }
980  break;
981  case kPythia6Jets72_86:
982  {
983  comment = comment.Append(":Pythia jets 72-86 GeV @ 5.5 TeV");
984  AliGenPythia * gener = new AliGenPythia(-1);
985  gener->SetEnergyCMS(5500.);// Centre of mass energy
986  gener->SetProcess(kPyJets);// Process type
987  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
988  gener->SetJetPhiRange(0., 360.);
989  gener->SetJetEtRange(10., 1000.);
990  gener->SetGluonRadiation(1,1);
991  // gener->SetPtKick(0.);
992  // Structure function
993  gener->SetStrucFunc(kCTEQ4L);
994  gener->SetPtHard(72., 86.);// Pt transfer of the hard scattering
995  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
996  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
997  gGener=gener;
998  }
999  break;
1000  case kPythia6Jets86_104:
1001  {
1002  comment = comment.Append(":Pythia jets 86-104 GeV @ 5.5 TeV");
1003  AliGenPythia * gener = new AliGenPythia(-1);
1004  gener->SetEnergyCMS(5500.);// Centre of mass energy
1005  gener->SetProcess(kPyJets);// Process type
1006  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1007  gener->SetJetPhiRange(0., 360.);
1008  gener->SetJetEtRange(10., 1000.);
1009  gener->SetGluonRadiation(1,1);
1010  // gener->SetPtKick(0.);
1011  // Structure function
1012  gener->SetStrucFunc(kCTEQ4L);
1013  gener->SetPtHard(86., 104.);// Pt transfer of the hard scattering
1014  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1015  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1016  gGener=gener;
1017  }
1018  break;
1019  case kPythia6Jets104_125:
1020  {
1021  comment = comment.Append(":Pythia jets 105-125 GeV @ 5.5 TeV");
1022  AliGenPythia * gener = new AliGenPythia(-1);
1023  gener->SetEnergyCMS(5500.);// Centre of mass energy
1024  gener->SetProcess(kPyJets);// Process type
1025  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1026  gener->SetJetPhiRange(0., 360.);
1027  gener->SetJetEtRange(10., 1000.);
1028  gener->SetGluonRadiation(1,1);
1029  // gener->SetPtKick(0.);
1030  // Structure function
1031  gener->SetStrucFunc(kCTEQ4L);
1032  gener->SetPtHard(104., 125.);// Pt transfer of the hard scattering
1033  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1034  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1035  gGener=gener;
1036  }
1037  break;
1038  case kPythia6Jets125_150:
1039  {
1040  comment = comment.Append(":Pythia jets 125-150 GeV @ 5.5 TeV");
1041  AliGenPythia * gener = new AliGenPythia(-1);
1042  gener->SetEnergyCMS(5500.);// Centre of mass energy
1043  gener->SetProcess(kPyJets);// Process type
1044  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1045  gener->SetJetPhiRange(0., 360.);
1046  gener->SetJetEtRange(10., 1000.);
1047  gener->SetGluonRadiation(1,1);
1048  // gener->SetPtKick(0.);
1049  // Structure function
1050  gener->SetStrucFunc(kCTEQ4L);
1051  gener->SetPtHard(125., 150.);// Pt transfer of the hard scattering
1052  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1053  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1054  gGener=gener;
1055  }
1056  break;
1057  case kPythia6Jets150_180:
1058  {
1059  comment = comment.Append(":Pythia jets 150-180 GeV @ 5.5 TeV");
1060  AliGenPythia * gener = new AliGenPythia(-1);
1061  gener->SetEnergyCMS(5500.);// Centre of mass energy
1062  gener->SetProcess(kPyJets);// Process type
1063  gener->SetJetEtaRange(-0.5, 0.5);// Final state kinematic cuts
1064  gener->SetJetPhiRange(0., 360.);
1065  gener->SetJetEtRange(10., 1000.);
1066  gener->SetGluonRadiation(1,1);
1067  // gener->SetPtKick(0.);
1068  // Structure function
1069  gener->SetStrucFunc(kCTEQ4L);
1070  gener->SetPtHard(150., 180.);// Pt transfer of the hard scattering
1071  gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
1072  gener->SetForceDecay(kAll);// Decay type (semielectronic, etc.)
1073  gGener=gener;
1074  }
1075  break;
1076  case kD0PbPb5500:
1077  {
1078  comment = comment.Append(" D0 in Pb-Pb at 5.5 TeV");
1079  AliGenPythia * gener = new AliGenPythia(10);
1080  gener->SetProcess(kPyD0PbPbMNR);
1081  gener->SetStrucFunc(kCTEQ4L);
1082  gener->SetPtHard(2.1,-1.0);
1083  gener->SetEnergyCMS(5500.);
1084  gener->SetNuclei(208,208);
1085  gener->SetForceDecay(kHadronicD);
1086  gener->SetYRange(-2,2);
1087  gener->SetFeedDownHigherFamily(kFALSE);
1088  gener->SetStackFillOpt(AliGenPythia::kParentSelection);
1089  gener->SetCountMode(AliGenPythia::kCountParents);
1090  gGener=gener;
1091  }
1092  break;
1093  case kCharmSemiElPbPb5500:
1094  {
1095  comment = comment.Append(" Charm in Pb-Pb at 5.5 TeV");
1096  AliGenPythia * gener = new AliGenPythia(10);
1097  gener->SetProcess(kPyCharmPbPbMNR);
1098  gener->SetStrucFunc(kCTEQ4L);
1099  gener->SetPtHard(2.1,-1.0);
1100  gener->SetEnergyCMS(5500.);
1101  gener->SetNuclei(208,208);
1102  gener->SetForceDecay(kSemiElectronic);
1103  gener->SetYRange(-2,2);
1104  gener->SetFeedDownHigherFamily(kFALSE);
1105  gener->SetCountMode(AliGenPythia::kCountParents);
1106  gGener=gener;
1107  }
1108  break;
1109  case kBeautySemiElPbPb5500:
1110  {
1111  comment = comment.Append(" Beauty in Pb-Pb at 5.5 TeV");
1112  AliGenPythia *gener = new AliGenPythia(10);
1113  gener->SetProcess(kPyBeautyPbPbMNR);
1114  gener->SetStrucFunc(kCTEQ4L);
1115  gener->SetPtHard(2.75,-1.0);
1116  gener->SetEnergyCMS(5500.);
1117  gener->SetNuclei(208,208);
1118  gener->SetForceDecay(kSemiElectronic);
1119  gener->SetYRange(-2,2);
1120  gener->SetFeedDownHigherFamily(kFALSE);
1121  gener->SetCountMode(AliGenPythia::kCountParents);
1122  gGener=gener;
1123  }
1124  break;
1125  case kCocktailTRD:
1126  {
1127  comment = comment.Append(" Cocktail for TRD at 5.5 TeV");
1128  AliGenCocktail *gener = new AliGenCocktail();
1129 
1130  AliGenParam *phi = new AliGenParam(10,
1131  new AliGenMUONlib(),
1132  AliGenMUONlib::kPhi,
1133  "Vogt PbPb");
1134 
1135  phi->SetPtRange(0, 100);
1136  phi->SetYRange(-1., +1.);
1137  phi->SetForceDecay(kDiElectron);
1138 
1139  AliGenParam *omega = new AliGenParam(10,
1140  new AliGenMUONlib(),
1141  AliGenMUONlib::kOmega,
1142  "Vogt PbPb");
1143 
1144  omega->SetPtRange(0, 100);
1145  omega->SetYRange(-1., +1.);
1146  omega->SetForceDecay(kDiElectron);
1147 
1148  AliGenParam *jpsi = new AliGenParam(10,
1149  new AliGenMUONlib(),
1150  AliGenMUONlib::kJpsiFamily,
1151  "Vogt PbPb");
1152 
1153  jpsi->SetPtRange(0, 100);
1154  jpsi->SetYRange(-1., +1.);
1155  jpsi->SetForceDecay(kDiElectron);
1156 
1157  AliGenParam *ups = new AliGenParam(10,
1158  new AliGenMUONlib(),
1159  AliGenMUONlib::kUpsilonFamily,
1160  "Vogt PbPb");
1161  ups->SetPtRange(0, 100);
1162  ups->SetYRange(-1., +1.);
1163  ups->SetForceDecay(kDiElectron);
1164 
1165  AliGenParam *charm = new AliGenParam(10,
1166  new AliGenMUONlib(),
1167  AliGenMUONlib::kCharm,
1168  "central");
1169  charm->SetPtRange(0, 100);
1170  charm->SetYRange(-1.5, +1.5);
1171  charm->SetForceDecay(kSemiElectronic);
1172 
1173 
1174  AliGenParam *beauty = new AliGenParam(10,
1175  new AliGenMUONlib(),
1176  AliGenMUONlib::kBeauty,
1177  "central");
1178  beauty->SetPtRange(0, 100);
1179  beauty->SetYRange(-1.5, +1.5);
1180  beauty->SetForceDecay(kSemiElectronic);
1181 
1182  AliGenParam *beautyJ = new AliGenParam(10,
1183  new AliGenMUONlib(),
1184  AliGenMUONlib::kBeauty,
1185  "central");
1186  beautyJ->SetPtRange(0, 100);
1187  beautyJ->SetYRange(-1.5, +1.5);
1188  beautyJ->SetForceDecay(kBJpsiDiElectron);
1189 
1190  gener->AddGenerator(phi,"Phi",1);
1191  gener->AddGenerator(omega,"Omega",1);
1192  gener->AddGenerator(jpsi,"J/psi",1);
1193  gener->AddGenerator(ups,"Upsilon",1);
1194  gener->AddGenerator(charm,"Charm",1);
1195  gener->AddGenerator(beauty,"Beauty",1);
1196  gener->AddGenerator(beautyJ,"J/Psi from Beauty",1);
1197  gGener=gener;
1198  }
1199  break;
1200  case kPyJJ:
1201  {
1202  comment = comment.Append(" Jet-jet at 5.5 TeV");
1203  AliGenPythia *gener = new AliGenPythia(-1);
1204  gener->SetEnergyCMS(5500.);
1205  gener->SetProcess(kPyJets);
1206  Double_t ptHardMin=10.0, ptHardMax=-1.0;
1207  gener->SetPtHard(ptHardMin,ptHardMax);
1208  gener->SetYHard(-0.7,0.7);
1209  gener->SetJetEtaRange(-0.2,0.2);
1210  gener->SetEventListRange(0,1);
1211  gGener=gener;
1212  }
1213  break;
1214  case kPyGJ:
1215  {
1216  comment = comment.Append(" Gamma-jet at 5.5 TeV");
1217  AliGenPythia *gener = new AliGenPythia(-1);
1218  gener->SetEnergyCMS(5500.);
1219  gener->SetProcess(kPyDirectGamma);
1220  Double_t ptHardMin=10.0, ptHardMax=-1.0;
1221  gener->SetPtHard(ptHardMin,ptHardMax);
1222  gener->SetYHard(-1.0,1.0);
1223  gener->SetGammaEtaRange(-0.13,0.13);
1224  gener->SetGammaPhiRange(210.,330.);
1225  gener->SetEventListRange(0,1);
1226  gGener=gener;
1227  }
1228  break;
1229  case kMuonCocktailCent1:
1230  {
1231  comment = comment.Append(" Muon Cocktail Cent1");
1232  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1233  gener->SetPtRange(0.4,100.); // Transverse momentum range
1234  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1235  gener->SetYRange(-4.0,-2.4);
1236  gener->SetMuonPtCut(0.8);
1237  gener->SetMuonThetaCut(171.,178.);
1238  gener->SetMuonMultiplicity(2);
1239  gener->SetImpactParameterRange(0.,5.); //Centrality class Cent1 for PDC04
1240  gGener=gener;
1241  }
1242  break;
1243  case kMuonCocktailPer1:
1244  {
1245  comment = comment.Append(" Muon Cocktail Per1");
1246  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1247  gener->SetPtRange(0.0,100.); // Transverse momentum range
1248  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1249  gener->SetYRange(-4.0,-2.4);
1250  gener->SetMuonPtCut(0.8);
1251  gener->SetMuonThetaCut(171.,178.);
1252  gener->SetMuonMultiplicity(2);
1253  gener->SetImpactParameterRange(5.,8.6);//Centrality class Per1 for PDC04
1254  gGener=gener;
1255  }
1256  break;
1257  case kMuonCocktailPer4:
1258  {
1259  comment = comment.Append(" Muon Cocktail Per4");
1260  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1261  gener->SetPtRange(0.0,100.); // Transverse momentum range
1262  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1263  gener->SetYRange(-4.0,-2.4);
1264  gener->SetMuonPtCut(0.8);
1265  gener->SetMuonThetaCut(171.,178.);
1266  gener->SetMuonMultiplicity(2);
1267  gener->SetImpactParameterRange(13.2,15.0);//Centrality class Per4 for PDC04
1268  gGener=gener;
1269  }
1270  break;
1272  {
1273  comment = comment.Append(" Muon Cocktail HighPt Cent1");
1274  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1275  gener->SetPtRange(0.0,100.); // Transverse momentum range
1276  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1277  gener->SetYRange(-4.0,-2.4);
1278  gener->SetMuonPtCut(2.5);
1279  gener->SetMuonThetaCut(171.,178.);
1280  gener->SetMuonMultiplicity(2);
1281  gener->SetImpactParameterRange(0.,5.); //Centrality class Cent1 for PDC04
1282  gGener=gener;
1283  }
1284  break;
1286  {
1287  comment = comment.Append(" Muon Cocktail HighPt Per1");
1288  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1289  gener->SetPtRange(0.0,100.); // Transverse momentum range
1290  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1291  gener->SetYRange(-4.0,-2.4);
1292  gener->SetMuonPtCut(2.5);
1293  gener->SetMuonThetaCut(171.,178.);
1294  gener->SetMuonMultiplicity(2);
1295  gener->SetImpactParameterRange(5.,8.6);//Centrality class Per1 for PDC04
1296  gGener=gener;
1297  }
1298  break;
1300  {
1301  comment = comment.Append(" Muon Cocktail HighPt Per4");
1302  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1303  gener->SetPtRange(0.0,100.); // Transverse momentum range
1304  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1305  gener->SetYRange(-4.0,-2.4);
1306  gener->SetMuonPtCut(2.5);
1307  gener->SetMuonThetaCut(171.,178.);
1308  gener->SetMuonMultiplicity(2);
1309  gener->SetImpactParameterRange(13.2,15.0);//Centrality class Per4 for PDC04
1310  gGener=gener;
1311  }
1312  break;
1314  {
1315  comment = comment.Append(" Muon Cocktail Single Cent1");
1316  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1317  gener->SetPtRange(0.0,100.); // Transverse momentum range
1318  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1319  gener->SetYRange(-4.0,-2.4);
1320  gener->SetMuonPtCut(0.8);
1321  gener->SetMuonThetaCut(171.,178.);
1322  gener->SetMuonMultiplicity(1);
1323  gener->SetImpactParameterRange(0.,5.); //Centrality class Cent1 for PDC04
1324  gGener=gener;
1325  }
1326  break;
1328  {
1329  comment = comment.Append(" Muon Cocktail Single Per1");
1330  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1331  gener->SetPtRange(0.0,100.); // Transverse momentum range
1332  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1333  gener->SetYRange(-4.0,-2.4);
1334  gener->SetMuonPtCut(0.8);
1335  gener->SetMuonThetaCut(171.,178.);
1336  gener->SetMuonMultiplicity(1);
1337  gener->SetImpactParameterRange(5.,8.6);//Centrality class Per1 for PDC04
1338  gener->SetNumberOfParticipants(229.3);//Centrality class Per1 for PDC04
1339  gGener=gener;
1340  }
1341  break;
1343  {
1344  comment = comment.Append(" Muon Cocktail Single Per4");
1345  AliGenMUONCocktail * gener = new AliGenMUONCocktail();
1346  gener->SetPtRange(0.0,100.); // Transverse momentum range
1347  gener->SetPhiRange(0.,360.); // Azimuthal angle range
1348  gener->SetYRange(-4.0,-2.4);
1349  gener->SetMuonPtCut(0.8);
1350  gener->SetMuonThetaCut(171.,178.);
1351  gener->SetMuonMultiplicity(1);
1352  gener->SetImpactParameterRange(13.2,15.0);//Centrality class Per4 for PDC04
1353  gGener=gener;
1354  }
1355  break;
1356  case kFlow_2_2000:
1357  {
1358  comment = comment.Append(" Flow with dN/deta = 2000, vn = 2%");
1359  gGener = GeVSimStandard(2000., 2.);
1360  }
1361  break;
1362 
1363  case kFlow_10_2000:
1364  {
1365  comment = comment.Append(" Flow with dN/deta = 2000, vn = 10%");
1366  gGener = GeVSimStandard(2000., 10.);
1367  }
1368  break;
1369 
1370  case kFlow_6_2000:
1371  {
1372  comment = comment.Append(" Flow with dN/deta = 2000, vn = 6%");
1373  gGener = GeVSimStandard(2000., 6.);
1374  }
1375  break;
1376 
1377  case kFlow_6_5000:
1378  {
1379  comment = comment.Append(" Flow with dN/deta = 5000, vn = 6%");
1380  gGener = GeVSimStandard(5000., 6.);
1381  }
1382  break;
1383  case kHIJINGplus:
1384  {
1385  //
1386  // The cocktail
1387  AliGenCocktail *gener = new AliGenCocktail();
1388 
1389  //
1390  // Charm production by Pythia
1391  AliGenPythia * genpyc = new AliGenPythia(230);
1392  genpyc->SetProcess(kPyCharmPbPbMNR);
1393  genpyc->SetStrucFunc(kCTEQ4L);
1394  genpyc->SetPtHard(2.1,-1.0);
1395  genpyc->SetEnergyCMS(5500.);
1396  genpyc->SetNuclei(208,208);
1397  genpyc->SetYRange(-999,999);
1398  genpyc->SetForceDecay(kAll);
1399  genpyc->SetFeedDownHigherFamily(kFALSE);
1400  genpyc->SetCountMode(AliGenPythia::kCountParents);
1401  //
1402  // Beauty production by Pythia
1403  AliGenPythia * genpyb = new AliGenPythia(9);
1404  genpyb->SetProcess(kPyBeautyPbPbMNR);
1405  genpyb->SetStrucFunc(kCTEQ4L);
1406  genpyb->SetPtHard(2.75,-1.0);
1407  genpyb->SetEnergyCMS(5500.);
1408  genpyb->SetNuclei(208,208);
1409  genpyb->SetYRange(-999,999);
1410  genpyb->SetForceDecay(kAll);
1411  genpyb->SetFeedDownHigherFamily(kFALSE);
1412  genpyb->SetCountMode(AliGenPythia::kCountParents);
1413  //
1414  // Hyperons
1415  //
1416  AliGenSTRANGElib *lib = new AliGenSTRANGElib();
1417  Int_t particle;
1418  // Xi
1419  particle = kXiMinus;
1420  AliGenParam *genXi = new AliGenParam(16,particle,lib->GetPt(particle),lib->GetY(particle),lib->GetIp(particle));
1421  genXi->SetPtRange(0., 12.);
1422  genXi->SetYRange(-1.1, 1.1);
1423  genXi->SetForceDecay(kNoDecay);
1424 
1425  //
1426  // Omega
1427  particle = kOmegaMinus;
1428  AliGenParam *genOmega = new AliGenParam(10,particle,lib->GetPt(particle),lib->GetY(particle),lib->GetIp(particle));
1429  genOmega->SetPtRange(0, 12.);
1430  genOmega->SetYRange(-1.1, 1.1);
1431  genOmega->SetForceDecay(kNoDecay);
1432 
1433  //
1434  // Central Hijing
1435  AliGenHijing *genHi = HijingStandard();
1436  genHi->SwitchOffHeavyQuarks(kTRUE);
1437  genHi->SetImpactParameterRange(0.,5.);
1438  //
1439  // Add everything to the cocktail and shake ...
1440  gener->AddGenerator(genHi, "Hijing cent1", 1);
1441  gener->AddGenerator(genpyc, "Extra charm", 1);
1442  gener->AddGenerator(genpyb, "Extra beauty", 1);
1443  gener->AddGenerator(genXi, "Xi" , 1);
1444  gener->AddGenerator(genOmega, "Omega", 1);
1445  gGener = gener;
1446  }
1447  break;
1448  default: break;
1449  }
1450 
1451  return gGener;
1452 }
1453 
1454 AliGenHijing* HijingStandard()
1455 {
1456  AliGenHijing *gener = new AliGenHijing(-1);
1457 // centre of mass energy
1458  gener->SetEnergyCMS(5500.);
1459 // reference frame
1460  gener->SetReferenceFrame("CMS");
1461 // projectile
1462  gener->SetProjectile("A", 208, 82);
1463  gener->SetTarget ("A", 208, 82);
1464 // tell hijing to keep the full parent child chain
1465  gener->KeepFullEvent();
1466 // enable jet quenching
1467  gener->SetJetQuenching(1);
1468 // enable shadowing
1469  gener->SetShadowing(1);
1470 // neutral pion and heavy particle decays switched off
1471  gener->SetDecaysOff(1);
1472 // Don't track spectators
1473  gener->SetSpectators(0);
1474 // kinematic selection
1475  gener->SetSelectAll(0);
1476  return gener;
1477 }
1478 
1479 AliGenGeVSim* GeVSimStandard(Float_t mult, Float_t vn)
1480 {
1481  AliGenGeVSim* gener = new AliGenGeVSim(0);
1482 //
1483 // Mult is the number of charged particles in |eta| < 0.5
1484 // Vn is in (%)
1485 //
1486 // Sigma of the Gaussian dN/deta
1487  Float_t sigma_eta = 2.75;
1488 //
1489 // Maximum eta
1490  Float_t etamax = 7.00;
1491 //
1492 //
1493 // Scale from multiplicity in |eta| < 0.5 to |eta| < |etamax|
1494  Float_t mm = mult * (TMath::Erf(etamax/sigma_eta/sqrt(2.)) / TMath::Erf(0.5/sigma_eta/sqrt(2.)));
1495 //
1496 // Scale from charged to total multiplicity
1497 //
1498  mm *= 1.587;
1499 //
1500 // Vn
1501  vn /= 100.;
1502 //
1503 // Define particles
1504 //
1505 //
1506 // 78% Pions (26% pi+, 26% pi-, 26% p0) T = 250 MeV
1507  AliGeVSimParticle *pp = new AliGeVSimParticle(kPiPlus, 1, 0.26 * mm, 0.25, sigma_eta) ;
1508  AliGeVSimParticle *pm = new AliGeVSimParticle(kPiMinus, 1, 0.26 * mm, 0.25, sigma_eta) ;
1509  AliGeVSimParticle *p0 = new AliGeVSimParticle(kPi0, 1, 0.26 * mm, 0.25, sigma_eta) ;
1510 //
1511 // 12% Kaons (3% K0short, 3% K0long, 3% K+, 3% K-) T = 300 MeV
1512  AliGeVSimParticle *ks = new AliGeVSimParticle(kK0Short, 1, 0.03 * mm, 0.30, sigma_eta) ;
1513  AliGeVSimParticle *kl = new AliGeVSimParticle(kK0Long, 1, 0.03 * mm, 0.30, sigma_eta) ;
1514  AliGeVSimParticle *kp = new AliGeVSimParticle(kKPlus, 1, 0.03 * mm, 0.30, sigma_eta) ;
1515  AliGeVSimParticle *km = new AliGeVSimParticle(kKMinus, 1, 0.03 * mm, 0.30, sigma_eta) ;
1516 //
1517 // 10% Protons / Neutrons (5% Protons, 5% Neutrons) T = 250 MeV
1518  AliGeVSimParticle *pr = new AliGeVSimParticle(kProton, 1, 0.05 * mm, 0.25, sigma_eta) ;
1519  AliGeVSimParticle *ne = new AliGeVSimParticle(kNeutron, 1, 0.05 * mm, 0.25, sigma_eta) ;
1520 //
1521 // Set Elliptic Flow properties
1522 
1523  Float_t pTsaturation = 2. ;
1524 
1525  pp->SetEllipticParam(vn,pTsaturation,0.) ;
1526  pm->SetEllipticParam(vn,pTsaturation,0.) ;
1527  p0->SetEllipticParam(vn,pTsaturation,0.) ;
1528  pr->SetEllipticParam(vn,pTsaturation,0.) ;
1529  ne->SetEllipticParam(vn,pTsaturation,0.) ;
1530  ks->SetEllipticParam(vn,pTsaturation,0.) ;
1531  kl->SetEllipticParam(vn,pTsaturation,0.) ;
1532  kp->SetEllipticParam(vn,pTsaturation,0.) ;
1533  km->SetEllipticParam(vn,pTsaturation,0.) ;
1534 //
1535 // Set Direct Flow properties
1536  pp->SetDirectedParam(vn,1.0,0.) ;
1537  pm->SetDirectedParam(vn,1.0,0.) ;
1538  p0->SetDirectedParam(vn,1.0,0.) ;
1539  pr->SetDirectedParam(vn,1.0,0.) ;
1540  ne->SetDirectedParam(vn,1.0,0.) ;
1541  ks->SetDirectedParam(vn,1.0,0.) ;
1542  kl->SetDirectedParam(vn,1.0,0.) ;
1543  kp->SetDirectedParam(vn,1.0,0.) ;
1544  km->SetDirectedParam(vn,1.0,0.) ;
1545 //
1546 // Add particles to the list
1547  gener->AddParticleType(pp) ;
1548  gener->AddParticleType(pm) ;
1549  gener->AddParticleType(p0) ;
1550  gener->AddParticleType(pr) ;
1551  gener->AddParticleType(ne) ;
1552  gener->AddParticleType(ks) ;
1553  gener->AddParticleType(kl) ;
1554  gener->AddParticleType(kp) ;
1555  gener->AddParticleType(km) ;
1556 //
1557 // Random Ev.Plane ----------------------------------
1558  TF1 *rpa = new TF1("gevsimPsiRndm","1", 0, 360);
1559 // --------------------------------------------------
1560  gener->SetPtRange(0., 9.) ; // Use a resonable range! (used for bin size in numerical integration)
1561  gener->SetPhiRange(0, 360);
1562  //
1563  // Set pseudorapidity range
1564  Float_t thmin = EtaToTheta(+etamax);
1565  Float_t thmax = EtaToTheta(-etamax);
1566  gener->SetThetaRange(thmin,thmax);
1567  return gener;
1568 }
1569 
1570 
1571 
1573 {
1575 
1576  if (gSystem->Getenv("CONFIG_RUN_TYPE")) {
1577  for (Int_t iRun = 0; iRun < kRunMax; iRun++) {
1578  if (strcmp(gSystem->Getenv("CONFIG_RUN_TYPE"), pprRunName[iRun])==0) {
1579  srun = (PprRun_t)iRun;
1580  cout<<"Run type set to "<<pprRunName[iRun]<<endl;
1581  }
1582  }
1583  }
1584 
1585  // Random Number seed
1586  if (gSystem->Getenv("CONFIG_SEED")) {
1587  sseed = atoi(gSystem->Getenv("CONFIG_SEED"));
1588  }
1589 }
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
PprRad_t
Definition: ConfigCosmic.C:108
static TString comment
static PprRad_t srad
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
AliDetector class for MUON subsystem providing simulation data management.
Definition: AliMUON.h:37
void ProcessEnvironmentVars()
Forward Multiplicity Detector based on Silicon wafers. This class is the driver for especially simula...
Definition: AliFMD.h:306
Forward Multiplicity Detector based on Silicon wafers.
Definition: AliFMDv1.h:40
static AliRunLoader * Open(const char *filename="galice.root", const char *eventfoldername=AliConfig::GetDefaultEventFolderName(), Option_t *option="READ")
BMap_t
Definition: AliMagF.h:23
virtual void SetCutVertexZ(Float_t cut=999999.)
Definition: AliGenerator.h:62
static AliMagF::BMap_t smag
AliGenerator * GeneratorFactory(PprRun_t srun)
Float_t EtaToTheta(Float_t arg)
void SetTriggerConfig(TString conf)
Definition: AliSimulation.h:73
const char * pprTrigConfName[]
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
const char * pprRunName[]
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
AliGenGeVSim * GeVSimStandard(Float_t, Float_t)
Base Class for EMCAL description.
Definition: AliEMCAL.h:35
void Config()
virtual void SetVertexSmear(VertexSmear_t smear)
Definition: AliGenerator.h:61
AliGenHijing * HijingStandard()
virtual void SetTrackingFlag(Int_t flag=1)
Definition: AliGenerator.h:75
static PprRun_t srun
void SetNumberOfEventsPerFile(Int_t nevpf)
Definition: AliRunLoader.h:153
static Int_t sseed
virtual void Init()
virtual void SetSigma(Float_t sx, Float_t sy, Float_t sz)
TCut cut
Definition: MakeGlobalFit.C:75
static PprTrigConf_t strig
EMCal simulation manager class v2.
Definition: AliEMCALv2.h:30
PprRun_t