1 enum gentype_t {hijing, gun, box, pythia, param, cocktail, fluka, halo, ntuple, scan, doublescan, hijing_g};
3 gentype_t gentype=param;
9 new AliGeant3("C++ Interface to Geant3");
11 //=======================================================================
12 // Create the output file
14 TFile *rootfile = new TFile("galice.root","recreate");
15 rootfile->SetCompressionLevel(2);
16 TGeant3 *geant3 = (TGeant3*)gMC;
17 AliDecayer* decayer = new AliDecayerPythia();
18 decayer->SetForceDecay(kAll);
20 gMC->SetExternalDecayer(decayer);
22 //=======================================================================
23 // ******* GEANT STEERING parameters FOR ALICE SIMULATION *******
24 geant3->SetTRIG(1); //Number of events to be processed
25 geant3->SetSWIT(4,100);
26 geant3->SetDEBU(0,0,1);
37 geant3->SetHADR(4); //Select pure GEANH (HADR 1) or GEANH/NUCRIN (HADR 3)
41 geant3->SetAUTO(1); //Select automatic STMIN etc... calc. (AUTO 1) or manual (AUTO 0)
42 geant3->SetABAN(1); //Restore 3.16 behaviour for abandoned tracks
43 geant3->SetOPTI(2); //Select optimisation level for GEANT geometry searches (0,1,2)
44 Float_t cut = 1.e-4; // 100MeV cut by default
45 Float_t tofmax = 1.e10;
46 // GAM ELEC NHAD CHAD MUON EBREM MUHAB EDEL MUDEL MUPA TOFMAX
47 geant3->SetCUTS(1.e-4, 1.e-4, 1.e-3, 1.e-4, 1.e-3, cut, cut, cut, cut, cut, 1.e-5);
49 gAlice->TrackingLimits(700, 2000);
52 //=======================================================================
53 // ************* STEERING parameters FOR ALICE SIMULATION **************
54 // --- Specify event type to be tracked through the ALICE setup
55 // --- All positions are in cm, angles in degrees, and P and E in GeV
60 //*********************************************
61 // Example for Fixed Particle Gun *
62 //*********************************************
63 AliGenFixed *gener = new AliGenFixed(ntracks);
64 gener->SetMomentum(10);
65 gener->SetPhiRange(0);
66 gener->SetThetaRange(0.);
67 gener->SetOrigin(30,30,1200); //vertex position
68 gener->SetPart(kProton); //GEANT particle type
71 //*********************************************
72 // Example for Moving Particle Gun *
73 //*********************************************
74 AliGenBox *gener = new AliGenBox(ntracks);
75 gener->SetMomentumRange(33,34);
76 gener->SetPhiRange(-180,180);
77 gener->SetThetaRange(2., 9.);
78 gener->SetOrigin(0,0,0);
79 gener->SetVertexSmear(kPerTrack);
81 gener->SetSigma(0, 0, 0); // Sigma in (X,Y,Z) (cm) on IP position
82 gener->SetPart(kMuonPlus); // GEANT particle type
85 //*********************************************
86 // Scanning on a grid *
87 //*********************************************
88 AliGenScan *gener = new AliGenScan(-1);
89 gener->SetMomentumRange(20,20);
90 gener->SetPhiRange(90,90);
91 gener->SetThetaRange(0,0);
93 gener->SetSigma(1,1,0); //Sigma in (X,Y,Z) (cm) on IP position
94 gener->SetPart(kMuonMinus);
95 gener->SetRange(100, -300., 300., 100, -300., 300., 1, 900, 900);
98 //*********************************************
99 // Scanning on a grid *
100 //*********************************************
101 AliGenDoubleScan *gener = new AliGenDoubleScan(-1);
102 gener->SetMomentumRange(4,4);
103 gener->SetPhiRange(0,360);
104 gener->SetThetaRange(0,0);
106 gener->SetSigma(3,3,0); //Sigma in (X,Y,Z) (cm) on IP position
108 gener->SetRange(20, -100, 100, 20, -100, 100, 1, 500, 500);
109 gener->SetDistance(1);
113 AliGenHIJINGpara *gener = new AliGenHIJINGpara(ntracks);
114 gener->SetMomentumRange(0,999);
115 gener->SetPtRange(0,999);
116 gener->SetPhiRange(0,360);
117 // gener->SetThetaRange(0.104,33.52);
118 gener->SetThetaRange(0.104,90.0);
119 // gener->SetThetaRange(2.,9.);
120 gener->SetOrigin(0., 0.0 ,0); // vertex position
121 gener->SetSigma(0,0,5.3); // Sigma in (X,Y,Z) (cm) on IP position
122 gener->SetVertexSmear(kPerTrack);
123 gener->SetTrackingFlag(0);
126 AliGenHijing *gener = new AliGenHijing(-1);
128 gener->SetEnergyCMS(5600.);
129 gener->SetReferenceFrame("CMS");
130 gener->SetProjectile("A", 208, 82);
131 gener->SetTarget ("A", 208, 82);
132 gener->SetImpactParameterRange(0, 5.);
133 gener->SetEvaluate(0);
134 gener->KeepFullEvent();
135 gener->SetJetQuenching(1);
136 gener->SetShadowing(1);
137 gener->SetDecaysOff(1);
138 gener->SetTrigger(0);
139 gener->SetSelectAll(1);
140 gener->SetMomentumRange(0,9999);
141 gener->SetPhiRange(-180,180);
142 gener->SetThetaRange(0.104,90.0);
143 // gener->SetFlavor(4);
144 gener->SetOrigin(0., 0.0 ,0);
145 gener->SetSigma(0,0,5.3);
146 gener->SetVertexSmear(kPerEvent);
147 gener->SetTrackingFlag(0);
152 //********************************************
153 // Example for Charm Production with Pythia *
154 //********************************************
155 AliGenPythia *gener = new AliGenPythia(ntracks);
156 gener->SetMomentumRange(0,999);
157 gener->SetPhiRange(0,360);
158 gener->SetThetaRange(0., 180.);
159 gener->SetYRange(-10,10);
160 gener->SetPtRange(0,100);
161 //gener->SetOrigin(0,0,0); // vertex position
162 //gener->SetVertexSmear(kPerEvent);
163 //gener->SetSigma(0,0,5.6); // Sigma in (X,Y,Z) (cm) on IP
165 gener->SetStrucFunc(kDO_Set_1);
166 gener->SetProcess(kPyCharm);
167 gener->SetEnergyCMS(5500.);
170 AliGenPythia *gener = new AliGenPythia(ntracks);
171 gener->SetMomentumRange(0,999);
172 gener->SetPhiRange(0,360);
173 gener->SetThetaRange(0., 180.);
174 gener->SetYRange(-10,10);
175 gener->SetPtRange(0,100);
176 gener->SetOrigin(0,0,0); // vertex position
177 gener->SetVertexSmear(kPerEvent);
178 gener->SetSigma(0,0,5.6); // Sigma in (X,Y,Z) (cm) on IP position
179 gener->SetStrucFunc(DO_Set_1);
180 gener->SetProcess(charm);
181 gener->SetForceDecay(dimuon);
182 gener->SetEnergyCMS(5500.);
183 gener->SetTrackingFlag(0);
188 //*******************************************************
189 // Example for J/psi or Upsilon Production from Parameterisation *
190 //*******************************************************
191 AliGenParam *gener = new AliGenParam(ntracks, AliGenMUONlib::kUpsilon);
192 gener->SetMomentumRange(0,999);
193 gener->SetPhiRange(-180, 180);
194 gener->SetYRange(2.5,4);
195 gener->SetCutOnChild(1);
196 gener->SetChildThetaRange(2.0,9);
197 gener->SetOrigin(0,0,0); //vertex position
198 gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position
199 gener->SetForceDecay(kDiMuon);
200 gener->SetTrackingFlag(1);
205 //*******************************************************
206 // Example for a FLUKA Boundary Source *
207 //*******************************************************
208 AliGenFLUKAsource *gener = new AliGenFLUKAsource(-1);
209 gener->AddFile("$(ALICE_ROOT)/data/alice.root");
211 gener->SetPartFlag(7);
212 gener->SetMomentumRange(0,999);
213 gener->SetPhiRange(0,360);
214 gener->SetThetaRange(0., 180.);
215 gener->SetAgeMax(1.e-5);
218 gener->SetFraction(1.);
222 //*******************************************************
223 // Example for reading from a external file *
224 //*******************************************************
225 AliGenExtFileCH *gener = new AliGenExtFileCH(-1);
226 gener->SetFileName("$(ALICE_ROOT)/data/pbpb.root");
227 gener->SetThetaRange(0.104,90.);
228 gener->SetOrigin(0,0,0); //vertex position
229 gener->SetSigma(0,0,5.6); //Sigma in (X,Y,Z) (cm) on IP position
230 gener->SetVertexSmear(kPerTrack);
231 gener->SetTrackingFlag(1);
235 //*******************************************************
236 // Example for Tunnel Halo Source *
237 //*******************************************************
238 AliGenHalo *gener = new AliGenHalo(ntracks);
239 gener->SetFileName("/h1/morsch/marsip/marsip5.mu");
243 //*******************************************************
244 // Example for a Cocktail *
245 //*******************************************************
246 AliGenCocktail *gener = new AliGenCocktail();
247 gener->SetMomentumRange(0,10);
248 gener->SetPhiRange(0,360);
249 gener->SetThetaRange(2.,9.);
250 gener->SetTrackingFlag(0);
251 AliGenParam *Pi0 = new AliGenParam(100, new AliGenPMDlib(), AliGenPMDlib::kPion);
252 AliGenParam *Eta = new AliGenParam( 10, new AliGenPMDlib(), AliGenPMDlib::kEta);
253 gener->AddGenerator(Pi0, "neutral pions" , 1.);
254 gener->AddGenerator(Eta, "neutral etas" , 1.);
260 gAlice->SetField(2,1); //Specify maximum magnetic field in Tesla (neg. ==> default field)
273 //=================== Alice BODY parameters =============================
274 AliBODY *BODY = new AliBODY("BODY","Alice envelop");
277 //=================== FRAME parameters ============================
278 AliFRAME *FRAME = new AliFRAMEv0("FRAME","Space Frame");
282 //=================== MAG parameters ============================
283 // --- Start with Magnet since detector layouts may be depending ---
284 // --- on the selected Magnet dimensions ---
285 AliMAG *MAG = new AliMAG("MAG","Magnet");
289 //=================== ABSO parameters ============================
290 AliABSO *ABSO = new AliABSOv0("ABSO","Muon Absorber");
294 //=================== DIPO parameters ============================
296 AliDIPO *DIPO = new AliDIPOv2("DIPO","Dipole version 2");
300 //=================== HALL parameters ============================
301 AliHALL *HALL = new AliHALL("HALL","Alice Hall");
307 //=================== SHIL parameters ============================
308 // AliSHIL *SHIL = new AliSAROV("SHIL","Shielding");
309 AliSHILvF *SHIL = new AliSHILvF("SHIL","Shielding");
311 // AliSAROV *SHIL = new AliSAROV("SHIL","Shielding");
316 //=================== PIPE parameters ============================
317 AliPIPE *PIPE = new AliPIPEv0("PIPE","Beam Pipe");
322 //=================== FMD parameters ============================
323 AliFMD *FMD = new AliFMDv1("FMD","normal FMD");
327 //=================== MUON parameters ===========================
329 AliMUON *MUON = new AliMUONv1("MUON","default");