]>
Commit | Line | Data |
---|---|---|
dde0a601 | 1 | // $Id: g4ConfigCommon.C 30849 2009-02-01 11:42:22Z fca $ |
2 | // | |
3 | // AliRoot Configuration for running aliroot with Monte Carlo. | |
4 | // ConfigCommon2() includes the common setting for all MCs | |
5 | // which has to be called after MC is instantiated. | |
6 | // Called from g4Config.C | |
7 | // | |
8 | // By I. Hrivnacova, IPN Orsay | |
9 | ||
10 | // Functions | |
11 | Float_t EtaToTheta(Float_t arg); | |
12 | AliGenerator* GeneratorFactory(); | |
13 | ||
14 | void ConfigCommon2() | |
15 | { | |
16 | cout << "Running ConfigCommon2.C ... " << endl; | |
17 | ||
18 | //======================================================================= | |
19 | // Steering parameters for ALICE simulation | |
20 | //======================================================================= | |
21 | ||
22 | gMC->SetProcess("DCAY",1); | |
23 | gMC->SetProcess("PAIR",1); | |
24 | gMC->SetProcess("COMP",1); | |
25 | gMC->SetProcess("PHOT",1); | |
26 | gMC->SetProcess("PFIS",0); | |
27 | gMC->SetProcess("DRAY",0); | |
28 | gMC->SetProcess("ANNI",1); | |
29 | gMC->SetProcess("BREM",1); | |
30 | gMC->SetProcess("MUNU",1); | |
31 | gMC->SetProcess("CKOV",1); | |
32 | gMC->SetProcess("HADR",1); | |
33 | gMC->SetProcess("LOSS",2); | |
34 | gMC->SetProcess("MULS",1); | |
35 | //gMC->SetProcess("RAYL",1); | |
36 | ||
37 | Float_t cut = 1.e-3; // 1MeV cut by default | |
38 | Float_t tofmax = 1.e10; | |
39 | ||
40 | gMC->SetCut("CUTGAM", cut); | |
41 | gMC->SetCut("CUTELE", cut); | |
42 | gMC->SetCut("CUTNEU", cut); | |
43 | gMC->SetCut("CUTHAD", cut); | |
44 | gMC->SetCut("CUTMUO", cut); | |
45 | gMC->SetCut("BCUTE", cut); | |
46 | gMC->SetCut("BCUTM", cut); | |
47 | gMC->SetCut("DCUTE", cut); | |
48 | gMC->SetCut("DCUTM", cut); | |
49 | gMC->SetCut("PPCUTM", cut); | |
50 | gMC->SetCut("TOFMAX", tofmax); | |
51 | ||
52 | //======================================================================= | |
53 | // External decayer | |
54 | //======================================================================= | |
55 | ||
56 | TVirtualMCDecayer *decayer = new AliDecayerPythia(); | |
57 | decayer->SetForceDecay(kAll); | |
58 | decayer->Init(); | |
59 | ||
60 | //forbid some decays | |
61 | AliPythia * py= AliPythia::Instance(); | |
62 | py->SetMDME(737,1,0); //forbid D*+->D+ + pi0 | |
63 | py->SetMDME(738,1,0);//forbid D*+->D+ + gamma | |
64 | ||
65 | for(Int_t d=747; d<=762; d++){ | |
66 | py->SetMDME(d,1,0); | |
67 | } | |
68 | ||
69 | for(Int_t d=764; d<=807; d++){ | |
70 | py->SetMDME(d,1,0); | |
71 | } | |
72 | ||
73 | gMC->SetExternalDecayer(decayer); | |
74 | ||
75 | //======================================================================= | |
76 | // Event generator | |
77 | //======================================================================= | |
78 | ||
79 | // Set Random Number seed | |
80 | gRandom->SetSeed(123456); // Set 0 to use the currecnt time | |
81 | AliLog::Message(AliLog::kInfo, Form("Seed for random number generation = %d",gRandom->GetSeed()), "Config.C", "Config.C", "Config()","Config.C", __LINE__); | |
82 | ||
83 | int nParticles = 100; | |
84 | if (gSystem->Getenv("CONFIG_NPARTICLES")) { | |
85 | nParticles = atoi(gSystem->Getenv("CONFIG_NPARTICLES")); | |
86 | } | |
87 | ||
88 | AliGenCocktail *gener = new AliGenCocktail(); | |
89 | gener->SetPhiRange(0, 360); | |
90 | // Set pseudorapidity range from -8 to 8. | |
91 | Float_t thmin = EtaToTheta(8); // theta min. <---> eta max | |
92 | Float_t thmax = EtaToTheta(-8); // theta max. <---> eta min | |
93 | gener->SetThetaRange(thmin,thmax); | |
94 | gener->SetOrigin(0, 0, 0); //vertex position | |
95 | gener->SetSigma(0, 0, 0); //Sigma in (X,Y,Z) (cm) on IP position | |
96 | ||
97 | AliGenHIJINGpara *hijingparam = new AliGenHIJINGpara(nParticles); | |
98 | hijingparam->SetMomentumRange(0.2, 999); | |
99 | gener->AddGenerator(hijingparam,"HIJING PARAM",1); | |
100 | gener->Init(); | |
101 | ||
102 | // Activate this line if you want the vertex smearing to happen | |
103 | // track by track | |
104 | // | |
105 | //gener->SetVertexSmear(perTrack); | |
106 | ||
107 | /* | |
108 | // External generator configuration | |
109 | AliGenerator* gener = GeneratorFactory(); | |
110 | gener->SetOrigin(0, 0, 0); // vertex position | |
111 | gener->SetSigma(0, 0, 5.3); // Sigma in (X,Y,Z) (cm) on IP position | |
112 | gener->SetCutVertexZ(1.); // Truncate at 1 sigma | |
113 | gener->SetVertexSmear(kPerEvent); | |
114 | gener->SetTrackingFlag(1); | |
115 | gener->Init(); | |
116 | */ | |
117 | cout << "Running ConfigCommon2.C finished ... " << endl; | |
118 | } | |
119 | ||
120 | Float_t EtaToTheta(Float_t arg){ | |
121 | return (180./TMath::Pi())*2.*atan(exp(-arg)); | |
122 | } | |
123 | ||
124 | AliGenerator* GeneratorFactory() { | |
125 | ||
126 | AliGenExtFile *gener = new AliGenExtFile(-1); | |
127 | AliGenReaderTreeK * reader = new AliGenReaderTreeK(); | |
128 | ||
129 | reader->SetFileName("galice.root"); | |
130 | reader->AddDir("gen"); | |
131 | gener->SetReader(reader); | |
132 | ||
133 | return gener; | |
134 | } | |
135 |