1 enum gentype_t {hijing, hijingParam, gun, box, pythia,
2 param1, param2, param3, param4,
3 cocktail, fluka, halo, ntuple, scan, doublescan};
5 gentype_t gentype=param4;
12 new AliGeant3("C++ Interface to Geant3");
14 //=======================================================================
15 // Create the output file
17 TFile *rootfile = new TFile("galice.root","recreate");
18 rootfile->SetCompressionLevel(2);
19 TGeant3 *geant3 = (TGeant3*)gMC;
22 // Set External decayer
23 AliDecayer* decayer = new AliDecayerPythia();
24 decayer->SetForceDecay(kAll);
26 gMC->SetExternalDecayer(decayer);
28 //=======================================================================
29 // ******* GEANT STEERING parameters FOR ALICE SIMULATION *******
30 geant3->SetTRIG(1); //Number of events to be processed
31 geant3->SetSWIT(4,10);
32 geant3->SetDEBU(0,0,1);
33 //geant3->SetSWIT(2,2);
44 geant3->SetHADR(1); //Select pure GEANH (HADR 1) or GEANH/NUCRIN (HADR 3)
48 geant3->SetAUTO(1); //Select automatic STMIN etc... calc. (AUTO 1) or manual (AUTO 0)
49 geant3->SetABAN(0); //Restore 3.16 behaviour for abandoned tracks
50 geant3->SetOPTI(2); //Select optimisation level for GEANT geometry searches (0,1,2)
51 Float_t cut = 1.e-3; // 1MeV cut by default
52 Float_t tofmax = 1.e10;
53 // GAM ELEC NHAD CHAD MUON EBREM MUHAB EDEL MUDEL MUPA TOFMAX
54 geant3->SetCUTS(cut,cut, cut, cut, cut, cut, cut, cut, cut, cut, tofmax);
56 //=======================================================================
57 // ************* STEERING parameters FOR ALICE SIMULATION **************
58 // --- Specify event type to be tracked through the ALICE setup
59 // --- All positions are in cm, angles in degrees, and P and E in GeV
64 //*********************************************
65 // Example for Fixed Particle Gun
66 //*********************************************
67 AliGenFixed *gener = new AliGenFixed(ntracks);
68 gener->SetMomentum(50);
71 gener->SetOrigin(0,0,0); //vertex position
72 gener->SetPart(13); //GEANT particle type
75 //*********************************************
76 // Example for Moving Particle Gun *
77 //*********************************************
78 AliGenBox *gener = new AliGenBox(ntracks);
79 gener->SetMomentumRange(3,4);
80 gener->SetPhiRange(0,360);
81 gener->SetThetaRange(90, 180. );
82 gener->SetOrigin(0,0,0);
84 gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position
85 gener->SetPart(5); //GEANT particle type
88 //*********************************************
89 // Scanning on a grid *
90 //*********************************************
91 AliGenScan *gener = new AliGenScan(-1);
92 gener->SetMomentumRange(4,4);
93 gener->SetPhiRange(0,360);
94 gener->SetThetaRange(9,9);
96 gener->SetSigma(6,6,0); //Sigma in (X,Y,Z) (cm) on IP position
98 gener->SetRange(20, -100, 100, 20, -100, 100, 1, 500, 500);
102 AliGenHIJINGpara *gener = new AliGenHIJINGpara(ntracks);
103 gener->SetMomentumRange(0,999);
104 gener->SetPhiRange(0,360);
105 gener->SetThetaRange(2,10);
106 gener->SetOrigin(0,0,0); //vertex position
107 gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position
110 AliGenHijing *gener = new AliGenHijing(-1);
111 // centre of mass energy
112 gener->SetEnergyCMS(5500);
114 gener->SetReferenceFrame("CMS ");
116 gener->SetProjectile("A ", 208, 82);
117 gener->SetTarget ("A ", 208, 82);
118 // impact parameter range
119 gener->SetImpactParameterRange(0, 3.);
120 // evaluate cross section before run
121 gener->SetEvaluate(1);
122 // tell hijing to keep the full parent child chain
123 gener->KeepFullEvent();
124 // enable jet quenching
125 gener->SetJetQuenching(1);
127 gener->SetShadowing(1);
128 // neutral pion and heavy particle decays switched off
129 gener->SetDecaysOff(1);
131 gener->SetTrigger(0);
132 // kinematic selection
133 gener->SetSelectAll(0);
135 gener->SetMomentumRange(0,999);
137 gener->SetPhiRange(-180,180);
139 gener->SetThetaRange(0,180.);
140 // select flavor (0: no, 4: charm+beauty, 5:beauty)
143 gener->SetOrigin(0., 0.0 ,0);
144 gener->SetSigma(0,0,5.3);
145 gener->SetVertexSmear(kPerEvent);
147 gener->SetTrackingFlag(0);
151 //********************************************
152 // Example for Charm Production with Pythia *
153 //********************************************
154 AliGenPythia *gener = new AliGenPythia(-1);
155 // final state kinematic cuts
156 gener->SetMomentumRange(0,999);
157 gener->SetPhiRange(-180,180);
158 gener->SetThetaRange(0., 180.);
159 gener->SetYRange(-10,10);
160 gener->SetPtRange(0,100);
161 // vertex position and smearing
162 gener->SetOrigin(0,0,0); // vertex position
163 gener->SetVertexSmear(kPerEvent);
164 gener->SetSigma(0,0,5.6); // Sigma in (X,Y,Z) (cm) on IP position
165 // Structure function
174 gener->SetStrucFunc(kGRV_HO);
175 // Select corection for nuclear structure functions
176 // gener->SetNuclei(208,208);
179 // charm, beauty, charm_unforced, beauty_unforced, jpsi, jpsi_chi, mb
180 gener->SetProcess(kPyBeauty);
182 // Pt transfer of the hard scattering
183 gener->SetPtHard(0.,5.);
184 // Decay type (semielectronic, semimuonic, nodecay)
185 gener->SetForceDecay(kSemiElectronic);
186 // Centre of mass energy
187 gener->SetEnergyCMS(5500.);
189 gener->SetTrackingFlag(0);
193 //*******************************************************
194 // Example for J/psi Production from Parameterisation
195 // using default library (AliMUONlib)
196 //*******************************************************
198 new AliGenParam(ntracks, AliGenMUONlib::kUpsilon);
199 gener->SetMomentumRange(0,999);
200 gener->SetPtRange(0,999);
201 gener->SetPhiRange(-180, 180);
202 gener->SetYRange(2.5,4);
203 gener->SetCutOnChild(1);
204 gener->SetChildThetaRange(2,9);
205 gener->SetOrigin(0,0,0); //vertex position
206 gener->SetSigma(0,0,5.3); //Sigma in (X,Y,Z) (cm) on IP position
207 gener->SetForceDecay(kDiMuon);
208 gener->SetTrackingFlag(0);
212 //*******************************************************
213 // Example for Omega Production from Parameterisation
214 // specifying library.
215 //*******************************************************
216 AliGenParam *gener = new AliGenParam(1000,new AliGenPHOSlib(),
217 AliGenPHOSlib::kOmega);
218 gener->SetWeighting(kNonAnalog);
219 gener->SetForceDecay(kNoDecay);
220 gener->SetPtRange(0,100);
221 gener->SetThetaRange(45,135);
222 gener->SetTrackingFlag(0);
226 //*******************************************************
227 // Example for Upsilon Production from Parameterisation
228 // specifying library.
230 //*******************************************************
231 AliGenParam *gener = new AliGenParam(1000,new AliGenGSIlib(),
232 AliGenGSIlib::kUpsilon, "MUON");
233 gener->SetMomentumRange(0,999);
234 gener->SetPtRange(0,999);
235 gener->SetPhiRange(-180, 180);
236 gener->SetYRange(2.5,4);
237 gener->SetCutOnChild(1);
238 gener->SetChildThetaRange(2,9);
239 gener->SetOrigin(0,0,0); //vertex position
240 gener->SetSigma(0,0,5.3); //Sigma in (X,Y,Z) (cm) on IP position
241 gener->SetForceDecay(kDiMuon);
242 gener->SetTrackingFlag(0);
246 //*******************************************************
247 // Example for Omega Production from Parameterisation
248 // specifying library.
249 // The alternative way.
250 //*******************************************************
251 AliGenLib* Lib=new AliGenPHOSlib();
252 Int_t iOmega = AliGenPHOSlib::kOmega;
253 AliGenParam *gener = new AliGenParam(50, iOmega,
254 Lib->GetPt(iOmega, ""),
255 Lib->GetY (iOmega, ""),
256 Lib->GetIp(iOmega, ""));
257 gener->SetWeighting(kNonAnalog);
258 gener->SetForceDecay(kNoDecay);
259 gener->SetTrackingFlag(0);
263 //*******************************************************
264 // Example for a FLUKA Boundary Source *
265 //*******************************************************
266 AliGenFLUKAsource *gener = new AliGenFLUKAsource(-1);
267 gener->SetFileName("$(ALICE_ROOT)/data/all32.root");
268 gener->SetPartFlag(9);
269 gener->SetAgeMax(1.e-5);
271 gener->SetFraction(0.0315);
272 // gener->SetFraction(0.75*0.0315);
274 // gener->SetPartFlag(10);
275 gener->SetMomentumRange(0,999);
276 gener->SetPhiRange(0,360);
277 gener->SetThetaRange(0., 180.);
278 gener->SetAgeMax(1.e-5);
281 // gener->SetFraction(0.0315);
285 //*******************************************************
286 // Example for reading from a external file *
287 //*******************************************************
288 AliGenExtFile *gener = new AliGenExtFile(-1);
289 gener->SetFileName("$(ALICE_ROOT)/data/dtujet93.root");
290 gener->SetVertexSmear(kPerEvent);
291 gener->SetTrackingFlag(1);
295 //*******************************************************
296 // Example for Tunnel Halo Source *
297 //*******************************************************
298 AliGenHalo *gener = new AliGenHalo(ntracks);
299 gener->SetFileName("/h1/morsch/marsip/marsip5.mu");
303 //*******************************************************
304 // Example for a Cocktail *
305 //*******************************************************
307 AliGenCocktail *gener = new AliGenCocktail();
309 gener->SetPhiRange(0,360);
310 gener->SetYRange(2.5,4);
311 gener->SetThetaRange(2,9);
312 gener->SetPtRange(0,10);
313 gener->SetOrigin(0,0,0); //vertex position
314 gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position
315 gener->SetMomentumRange(0,999);
317 AliGenParam *jpsi = new AliGenParam(1,jpsi_p);
318 jpsi->SetForceDecay(dimuon);
319 jpsi->SetCutOnChild(1);
322 AliGenFLUKAsource *bg = new AliGenFLUKAsource(-1);
323 bg->AddFile("$(ALICE_ROOT)/data/all32.root");
326 bg->SetAgeMax(1.e-5);
328 // gener->SetFraction(0.0315);
329 bg->SetFraction(0.01*0.0315);
331 gener->AddGenerator(jpsi,"J/Psi", 1);
332 gener->AddGenerator(bg,"Background",1);
337 // Activate this line if you want the vertex smearing to happen
340 // gener->SetVertexSmear(kPerTrack);
344 gAlice->SetField(-999,2); //Specify maximum magnetic field in Tesla (neg. ==> default field)
348 //=================== Alice BODY parameters =============================
349 AliBODY *BODY = new AliBODY("BODY","Alice envelop");
353 //=================== MAG parameters ============================
354 // --- Start with Magnet since detector layouts may be depending ---
355 // --- on the selected Magnet dimensions ---
356 AliMAG *MAG = new AliMAG("MAG","Magnet");