4 new TGeant3("C++ Interface to Geant3");
6 //=======================================================================
7 // Create the output file
9 TFile *rootfile = new TFile("galice.root","recreate");
10 rootfile->SetCompressionLevel(2);
11 TGeant3 *geant3 = (TGeant3*)gMC;
13 //=======================================================================
14 // ******* GEANT STEERING parameters FOR ALICE SIMULATION *******
15 geant3->SetTRIG(1); //Number of events to be processed
16 geant3->SetSWIT(4,10);
17 geant3->SetDEBU(0,0,1);
18 //geant3->SetSWIT(2,2);
29 geant3->SetHADR(0); //Select pure GEANH (HADR 1) or GEANH/NUCRIN (HADR 3)
33 geant3->SetAUTO(1); //Select automatic STMIN etc... calc. (AUTO 1) or manual (AUTO 0)
34 geant3->SetABAN(0); //Restore 3.16 behaviour for abandoned tracks
35 geant3->SetOPTI(2); //Select optimisation level for GEANT geometry searches (0,1,2)
36 Float_t cut = 1.e-3; // 1MeV cut by default
37 Float_t tofmax = 1.e10;
38 // GAM ELEC NHAD CHAD MUON EBREM MUHAB EDEL MUDEL MUPA TOFMAX
39 geant3->SetCUTS(cut,cut, cut, cut, cut, cut, cut, cut, cut, cut, tofmax);
41 //=======================================================================
42 // ************* STEERING parameters FOR ALICE SIMULATION **************
43 // --- Specify event type to be tracked through the ALICE setup
44 // --- All positions are in cm, angles in degrees, and P and E in GeV
46 //*********************************************
47 // Example for Fixed Particle Gun *
48 //*********************************************
49 //AliGenFixed *gener = new AliGenFixed(200);
50 //gener->SetMomentumRange(0,999);
51 //gener->SetPhiRange(0,0);
52 //gener->SetThetaRange(5., 5.);
53 //gener->SetOrigin(0,0,0); //vertex position
54 //gener->SetPart(kProton);
56 //*********************************************
57 // Example for Moving Particle Gun *
58 //*********************************************
60 AliGenBox *gener = new AliGenBox(500);
61 gener->SetMomentumRange(0,10);
62 gener->SetPhiRange(0,360);
63 gener->SetThetaRange(2., 10.);
64 gener->SetOrigin(0,0,0);
66 gener->SetSigma(0,0,5.6); //Sigma in (X,Y,Z) (cm) on IP position
67 gener->SetPart(kProton);
69 //**************************************
70 // Example for HIJING Parameterisation *
71 //**************************************
73 AliGenHIJINGpara *gener = new AliGenHIJINGpara(84210);
74 gener->SetMomentumRange(0,999);
75 gener->SetPhiRange(0,360);
76 gener->SetThetaRange(0.28,179.72);
77 gener->SetOrigin(0,0,0); //vertex position
78 gener->SetSigma(0,0,0); //Sigma in (X,Y,Z) (cm) on IP position
80 //********************************************
81 // Example for Charm Production with Pythia *
82 //********************************************
85 AliGenPythia *gener = new AliGenPythia(200);
86 gener->SetMomentumRange(0,999);
87 gener->SetPhiRange(0,360);
88 gener->SetThetaRange(0., 180.);
89 gener->SetYRange(2,5);
90 gener->SetOrigin(0,0,0); // vertex position
91 gener->SetSigma(0,0,5.6); // Sigma in (X,Y,Z) (cm) on IP position
92 gener->SetProcess(AliGenPythia::jpsi);
93 gener->ForceDecay(AliGenPythia::dimuon);
95 //*******************************************************
96 // Example for J/psi Production from Parameterisation *
97 //*******************************************************
99 AliGenParam *gener = new AliGenParam(1000, 443);
100 gener->SetMomentumRange(0,999);
101 gener->SetPhiRange(0,360);
102 gener->SetYRange(2,4);
103 gener->SetPtRange(1,10);
104 gener->SetOrigin(0,0,0); //vertex position
105 gener->SetSigma(0,0,5.6); //Sigma in (X,Y,Z) (cm) on IP position
107 //*******************************************************
108 // Example for a FLUKA Boundary Source *
109 //*******************************************************
111 AliGenFLUKAsource *gener = new AliGenFLUKAsource(1000);
112 gener->SetPartFlag(9);
113 gener->SetMomentumRange(0,999);
114 gener->SetPhiRange(0,360);
115 gener->SetThetaRange(0., 180.);
117 //*******************************************************
118 // Example for a Cocktail *
119 //*******************************************************
121 AliGenCocktail *gener = new AliGenCocktail();
123 gener->SetMomentumRange(0,999);
124 gener->SetPhiRange(0,360);
125 gener->SetYRange(-4,4);
126 gener->SetPtRange(0,10);
127 gener->SetOrigin(0,0,0); //vertex position
128 gener->SetSigma(0,0,5.6); //Sigma in (X,Y,Z) (cm) on IP position
130 AliGenPythia *jpsi = new AliGenPythia(200);
132 jpsi->SetProcess(AliGenPythia::jpsi);
133 jpsi->ForceDecay(AliGenPythia::dimuon);
135 AliGenPythia *beauty = new AliGenPythia(200);
136 beauty->SetProcess(AliGenPythia::beauty_unforced);
137 beauty->ForceDecay(AliGenPythia::semielectronic);
139 AliGenPythia *charm = new AliGenPythia(200);
140 charm->SetProcess(AliGenPythia::charm_unforced);
141 charm->ForceDecay(AliGenPythia::semimuonic);
142 charm->SetPtHard(5,10);
144 AliGenParam *jpsi_to_muons = new AliGenParam(100,443);
145 jpsi_to_muons->ForceDecay(AliGenParam::dimuon);
147 AliGenParam *jpsi_to_electrons = new AliGenParam(100,443);
148 jpsi_to_electrons->ForceDecay(AliGenParam::dielectron);
150 AliGenParam *phi_to_electrons = new AliGenParam(100,333);
151 phi_to_electrons->ForceDecay(AliGenParam::dielectron);
153 // gener->AddGenerator(jpsi,"Jpsi",1.);
154 // gener->AddGenerator(beauty,"Beauty",1.);
155 // gener->AddGenerator(charm,"Charm",1.);
156 // gener->AddGenerator(jpsi_to_muons,"Jpsi_to_Muons",1.);
157 gener->AddGenerator(jpsi_to_electrons,"Jpsi_to_Electrons",1.);
158 // gener->AddGenerator(phi_to_electrons,"Phi_to_Electrons",1.);
161 //**************************************************************************
162 // Specify maximum magnetic field in Tesla (neg. ==> default field)
163 gAlice->SetField(-999,2);
164 // gAlice->TrackingLimits(2000.,200);
166 //=================== Alice BODY parameters =============================
168 AliBODY *BODY = new AliBODY("BODY","Alice envelop");
170 AliFRAME *FRAME = new AliFRAMEv0("FRAME", "Space Frame");
173 //=================== ABSO parameters ============================
175 AliABSO *ABSO = new AliABSO("ABSO","Muon Absorber");
177 //=================== DIPO parameters ============================
179 AliDIPO *DIPO = new AliDIPOv2("DIPO","Dipole version 2");
181 //=================== SHIL parameters ============================
183 AliSHIL *SHIL = new AliSHIL("SHIL","Shielding");
185 //=================== PIPE parameters ============================
187 // AliPIPE *PIPE = new AliPIPEv0("PIPE","Beam Pipe");
190 //=================== MUON parameters ===========================
193 AliMUON *MUON = new AliMUONv0("MUON","normal MUON");
195 MUON->SetSMAXAR(0.03);
200 // First define the number of planes that are segmented (1 or 2) by a call
202 // Then chose for each chamber (chamber plane) the segmentation
203 // and response model.
204 // They should be equal for the two chambers of each station. In a future
205 // version this will be enforced.
210 // Default Segmentation
211 AliMUONsegmentationV0* segV0 = new AliMUONsegmentationV0;
213 AliMUONresponseV0* response0 = new AliMUONresponseV0;
214 response0->SetSqrtKx3(0.761577);
215 response0->SetKx2(0.972655);
216 response0->SetKx4(0.3841);
217 response0->SetSqrtKy3(0.714143);
218 response0->SetKy2(1.0099);
219 response0->SetKy4(0.403);
220 response0->SetPitch(0.25);
221 response0->SetRSIGM(10.);
222 response0->SetMUCHSP(5.);
223 response0->SetMUSIGM(0.18, 0.18);
224 response0->SetMAXADC( 1024);
225 //--------------------------------------------------------
226 // Configuration for Chamber TC1/2 (Station 1) ----------
227 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
228 Float_t rseg[4]={17.5, 55.2, 71.3, 95.5};
229 Int_t nseg[4]={4, 4, 2, 1};
233 MUON->SetNsec(chamber-1,2);
235 AliMUONsegmentationV01 *seg11=new AliMUONsegmentationV01;
236 seg11->SetSegRadii(rseg);
237 seg11->SetPADSIZ(3.048, 0.508);
238 seg11->SetPadDivision(nseg);
239 MUON->SetSegmentationModel(chamber-1, 1, seg11);
241 AliMUONsegmentationV01 *seg12=new AliMUONsegmentationV01;
242 seg12->SetSegRadii(rseg);
243 seg12->SetPADSIZ(2.032, 0.762);
244 seg12->SetPadDivision(nseg);
246 MUON->SetSegmentationModel(chamber-1, 2, seg12);
250 MUON->SetNsec(chamber-1,2);
251 MUON->SetSegmentationModel(chamber-1, 1, seg11);
252 MUON->SetSegmentationModel(chamber-1, 2, seg12);
256 MUON->SetResponseModel(0, response0);
257 MUON->SetResponseModel(1, response0);
259 //--------------------------------------------------------
260 // Configuration for Chamber TC3/4 -----------------------
261 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
264 MUON->SetNsec(chamber-1,1);
265 AliMUONsegmentationV0 *seg34=new AliMUONsegmentationV0;
266 seg34->SetDAnod(0.51/3.);
268 MUON->SetSegmentationModel(chamber-1, 1, seg34);
269 MUON->SetResponseModel(chamber-1, response0);
272 MUON->SetNsec(chamber-1,1);
273 MUON->SetSegmentationModel(chamber-1, 1, seg34);
274 MUON->SetResponseModel(chamber-1, response0);
278 MUON->SetPADSIZ(station, 1, 0.75, 0.51);
279 MUON->SetMUCHSP(station, 5.);
280 MUON->SetMUSIGM(station, 0.18, 0.18);
281 MUON->SetRSIGM(station, 10.);
282 MUON->SetMAXADC(station, 1024);
285 //--------------------------------------------------------
286 // Configuration for Chamber TC5/6 -----------------------
287 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
289 seg5 = new AliMUONsegmentationV1;
290 AliMUONresponseV0* response5 = new AliMUONresponseV0;
292 response5->SetSqrtKx3(0.78740079);
293 response5->SetKx2(0.95237319); // 0.5 * kPI * (1- 0.5*sqrtky3 )
294 response5->SetKx4(0.37480633); // 0.25/TMath::ATan(sqrtkx3)
296 response5->SetSqrtKy3(0.74161985);
297 response5->SetKy2(0.98832946);
298 response5->SetKy4(0.39177817);
299 response5->SetPitch(0.325);
300 response5->SetRSIGM(10.);
301 response5->SetMUCHSP(5.);
302 response5->SetMUSIGM( 0.4, 0.4);
303 response5->SetMAXADC( 1024);
306 MUON->SetNsec(chamber-1,1);
307 MUON->SetSegmentationModel(chamber-1, 1, seg5);
308 MUON->SetResponseModel(chamber-1, response5);
311 MUON->SetNsec(chamber-1,1);
312 MUON->SetSegmentationModel(chamber-1, 1, seg5);
313 MUON->SetResponseModel(chamber-1, response5);
317 MUON->SetPADSIZ(station, 1, 0.975, 0.55);
320 //--------------------------------------------------------
321 // Configuration for Chamber TC7/8/9/10-------------------
322 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
325 MUON->SetNsec(chamber-1,1);
326 AliMUONsegmentationV0 *seg78=new AliMUONsegmentationV0;
327 seg78->SetDAnod(0.51/3.);
329 MUON->SetSegmentationModel(chamber-1, 1, seg78);
330 MUON->SetResponseModel(chamber-1, response0);
333 MUON->SetNsec(chamber-1,1);
334 MUON->SetSegmentationModel(chamber-1, 1, seg78);
335 MUON->SetResponseModel(chamber-1, response0);
339 MUON->SetPADSIZ(station, 1, 0.75, 0.5);
342 MUON->SetNsec(chamber-1,1);
343 AliMUONsegmentationV0 *seg910=new AliMUONsegmentationV0;
344 seg910->SetDAnod(0.51/3.);
346 MUON->SetSegmentationModel(chamber-1, 1, seg910);
347 MUON->SetResponseModel(chamber-1, response0);
350 MUON->SetNsec(chamber-1,1);
351 MUON->SetSegmentationModel(chamber-1, 1, seg910);
352 MUON->SetResponseModel(chamber-1, response0);
356 MUON->SetPADSIZ(station, 1, 0.75, 0.5);
359 MUON->SetNsec(chamber-1,1);
360 AliMUONsegmentationV0 *seg1112=new AliMUONsegmentationV0;
361 seg1112->SetDAnod(0.51/3.);
363 MUON->SetSegmentationModel(chamber-1, 1, seg1112);
364 MUON->SetResponseModel(chamber-1, response0);
367 MUON->SetNsec(chamber-1,1);
368 MUON->SetSegmentationModel(chamber-1, 1, seg1112);
369 MUON->SetResponseModel(chamber-1, response0);
373 MUON->SetPADSIZ(station, 1, 0.75, 0.5);
376 MUON->SetNsec(chamber-1,1);
377 AliMUONsegmentationV0 *seg1314=new AliMUONsegmentationV0;
378 seg1314->SetDAnod(0.51/3.);
380 MUON->SetSegmentationModel(chamber-1, 1, seg1314);
381 MUON->SetResponseModel(chamber-1, response0);
384 MUON->SetNsec(chamber-1,1);
385 MUON->SetSegmentationModel(chamber-1, 1, seg1314);
386 MUON->SetResponseModel(chamber-1, response0);
390 MUON->SetPADSIZ(station, 1, 0.75, 0.5);