Changes for Root6 (Mikolaj)
[u/mrichter/AliRoot.git] / macros / MUONConfig.C
1 void Config()
2 {
3
4 new TGeant3("C++ Interface to Geant3");
5
6 //=======================================================================
7 //  Create the output file
8    
9 TFile *rootfile = new TFile("galice.root","recreate");
10 rootfile->SetCompressionLevel(2);
11 TGeant3 *geant3 = (TGeant3*)gMC;
12
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);
19 geant3->SetDCAY(0);
20 geant3->SetPAIR(0);
21 geant3->SetCOMP(0);
22 geant3->SetPHOT(0);
23 geant3->SetPFIS(0);
24 geant3->SetDRAY(0);
25 geant3->SetANNI(0);
26 geant3->SetBREM(0);
27 geant3->SetMUNU(1);
28 geant3->SetCKOV(1);
29 geant3->SetHADR(0); //Select pure GEANH (HADR 1) or GEANH/NUCRIN (HADR 3)
30 geant3->SetLOSS(1);
31 geant3->SetMULS(1);
32 geant3->SetRAYL(1);
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);
40 //
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
45 //
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);
55
56 //*********************************************
57 // Example for Moving Particle Gun            *
58 //*********************************************
59 /*
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);   
65        //vertex position
66 gener->SetSigma(0,0,5.6);           //Sigma in (X,Y,Z) (cm) on IP position
67 gener->SetPart(kProton);
68  */
69 //**************************************
70 // Example for HIJING Parameterisation *
71 //**************************************
72 /*
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
79 /*
80 //********************************************
81 // Example for Charm  Production with Pythia *
82 //********************************************
83 */
84 /*
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);       
94
95 //*******************************************************
96 // Example for J/psi  Production from  Parameterisation *
97 //*******************************************************
98 /*
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
106
107 //*******************************************************
108 // Example for a FLUKA Boundary Source                  *
109 //*******************************************************
110 /*
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.);      
116  */
117 //*******************************************************
118 // Example for a Cocktail                               *
119 //*******************************************************
120
121 AliGenCocktail *gener = new AliGenCocktail(); 
122
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
129 //
130  AliGenPythia *jpsi = new AliGenPythia(200);
131  
132  jpsi->SetProcess(AliGenPythia::jpsi);       
133  jpsi->ForceDecay(AliGenPythia::dimuon);
134
135  AliGenPythia *beauty = new AliGenPythia(200);
136  beauty->SetProcess(AliGenPythia::beauty_unforced);       
137  beauty->ForceDecay(AliGenPythia::semielectronic);
138
139  AliGenPythia *charm = new AliGenPythia(200);
140  charm->SetProcess(AliGenPythia::charm_unforced);       
141  charm->ForceDecay(AliGenPythia::semimuonic);
142  charm->SetPtHard(5,10);
143
144  AliGenParam *jpsi_to_muons = new AliGenParam(100,443);
145  jpsi_to_muons->ForceDecay(AliGenParam::dimuon);
146
147  AliGenParam *jpsi_to_electrons = new AliGenParam(100,443);
148  jpsi_to_electrons->ForceDecay(AliGenParam::dielectron);
149
150  AliGenParam *phi_to_electrons = new AliGenParam(100,333);
151  phi_to_electrons->ForceDecay(AliGenParam::dielectron);
152
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.);
159 //
160 gener->Init();
161 //**************************************************************************
162 // Specify maximum magnetic field in Tesla (neg. ==> default field)
163 gAlice->SetField(-999,2);    
164 // gAlice->TrackingLimits(2000.,200);
165
166 //=================== Alice BODY parameters =============================
167
168 AliBODY *BODY = new AliBODY("BODY","Alice envelop");
169 /*
170 AliFRAME *FRAME = new AliFRAMEv0("FRAME", "Space Frame");
171  
172 /*
173 //=================== ABSO parameters ============================
174
175 AliABSO *ABSO  = new AliABSO("ABSO","Muon Absorber");
176
177 //=================== DIPO parameters ============================
178
179 AliDIPO *DIPO  = new AliDIPOv2("DIPO","Dipole version 2");
180
181 //=================== SHIL parameters ============================
182
183 AliSHIL *SHIL  = new AliSHIL("SHIL","Shielding");
184
185 //=================== PIPE parameters ============================
186 */
187 // AliPIPE *PIPE  = new AliPIPEv0("PIPE","Beam Pipe");
188 /*
189 */
190 //=================== MUON parameters ===========================
191
192
193 AliMUON *MUON  = new AliMUONv0("MUON","normal MUON");
194
195 MUON->SetSMAXAR(0.03);
196 MUON->SetSMAXAL(-1);
197 //
198 // Version 0
199 //
200 // First define the number of planes that are segmented (1 or 2) by a call
201 // to SetNsec. 
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.
206 //
207 //  
208  Int_t chamber;
209  Int_t station;
210 // Default Segmentation
211  AliMUONsegmentationV0* segV0 = new AliMUONsegmentationV0;
212 // Default response
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};
230
231  chamber=1;
232 //^^^^^^^^^
233  MUON->SetNsec(chamber-1,2);
234 //
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);
240 //
241  AliMUONsegmentationV01 *seg12=new AliMUONsegmentationV01;
242  seg12->SetSegRadii(rseg); 
243  seg12->SetPADSIZ(2.032, 0.762);
244  seg12->SetPadDivision(nseg);
245
246  MUON->SetSegmentationModel(chamber-1, 2, seg12);
247
248  chamber=2;
249 //^^^^^^^^^
250  MUON->SetNsec(chamber-1,2);
251  MUON->SetSegmentationModel(chamber-1, 1, seg11);
252  MUON->SetSegmentationModel(chamber-1, 2, seg12);
253
254  station=1;
255 //^^^^^^^^^ 
256  MUON->SetResponseModel(0, response0);      
257  MUON->SetResponseModel(1, response0);      
258 //
259 //--------------------------------------------------------
260 // Configuration for Chamber TC3/4 -----------------------
261 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
262
263  chamber=3;
264  MUON->SetNsec(chamber-1,1);
265  AliMUONsegmentationV0 *seg34=new AliMUONsegmentationV0;
266  seg34->SetDAnod(0.51/3.);
267  
268  MUON->SetSegmentationModel(chamber-1, 1, seg34);
269  MUON->SetResponseModel(chamber-1, response0);      
270
271  chamber=4;
272  MUON->SetNsec(chamber-1,1);
273  MUON->SetSegmentationModel(chamber-1, 1, seg34);
274  MUON->SetResponseModel(chamber-1, response0);      
275 //
276 // Station 2
277  station=2;
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);
283
284 //
285 //--------------------------------------------------------
286 // Configuration for Chamber TC5/6 -----------------------
287 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
288
289  seg5 =  new AliMUONsegmentationV1;
290  AliMUONresponseV0* response5 =  new AliMUONresponseV0;
291  // K3 = 0.62
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)
295  // K3 = 0.55
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);
304
305  chamber=5;
306  MUON->SetNsec(chamber-1,1);
307  MUON->SetSegmentationModel(chamber-1, 1, seg5);
308  MUON->SetResponseModel(chamber-1, response5);      
309
310  chamber=6;
311  MUON->SetNsec(chamber-1,1);
312  MUON->SetSegmentationModel(chamber-1, 1, seg5);
313  MUON->SetResponseModel(chamber-1, response5);      
314 //
315 // Station 3
316  station=3;
317  MUON->SetPADSIZ(station, 1, 0.975, 0.55);
318
319 //
320 //--------------------------------------------------------
321 // Configuration for Chamber TC7/8/9/10-------------------
322 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
323
324  chamber=7;
325  MUON->SetNsec(chamber-1,1);
326  AliMUONsegmentationV0 *seg78=new AliMUONsegmentationV0;
327  seg78->SetDAnod(0.51/3.);
328
329  MUON->SetSegmentationModel(chamber-1, 1, seg78);
330  MUON->SetResponseModel(chamber-1, response0);      
331
332  chamber=8;
333  MUON->SetNsec(chamber-1,1);
334  MUON->SetSegmentationModel(chamber-1, 1, seg78);
335  MUON->SetResponseModel(chamber-1, response0);      
336 //
337 // Station 4
338  station=4;
339  MUON->SetPADSIZ(station, 1, 0.75, 0.5);
340
341  chamber=9;
342  MUON->SetNsec(chamber-1,1);
343  AliMUONsegmentationV0 *seg910=new AliMUONsegmentationV0;
344  seg910->SetDAnod(0.51/3.);
345
346  MUON->SetSegmentationModel(chamber-1, 1, seg910);
347  MUON->SetResponseModel(chamber-1, response0);      
348
349  chamber=10;
350  MUON->SetNsec(chamber-1,1);
351  MUON->SetSegmentationModel(chamber-1, 1, seg910);
352  MUON->SetResponseModel(chamber-1, response0);      
353 //
354 // Station 5
355  station=5;
356  MUON->SetPADSIZ(station, 1, 0.75, 0.5);
357
358  chamber=11;
359  MUON->SetNsec(chamber-1,1);
360  AliMUONsegmentationV0 *seg1112=new AliMUONsegmentationV0;
361  seg1112->SetDAnod(0.51/3.);
362
363  MUON->SetSegmentationModel(chamber-1, 1, seg1112);
364  MUON->SetResponseModel(chamber-1, response0);      
365
366  chamber=12;
367  MUON->SetNsec(chamber-1,1);
368  MUON->SetSegmentationModel(chamber-1, 1, seg1112);
369  MUON->SetResponseModel(chamber-1, response0);      
370 //
371 // Trigger Station 1
372  station=6;
373  MUON->SetPADSIZ(station, 1, 0.75, 0.5);
374
375  chamber=13;
376  MUON->SetNsec(chamber-1,1);
377  AliMUONsegmentationV0 *seg1314=new AliMUONsegmentationV0;
378  seg1314->SetDAnod(0.51/3.);
379
380  MUON->SetSegmentationModel(chamber-1, 1, seg1314);
381  MUON->SetResponseModel(chamber-1, response0);      
382
383  chamber=14;
384  MUON->SetNsec(chamber-1,1);
385  MUON->SetSegmentationModel(chamber-1, 1, seg1314);
386  MUON->SetResponseModel(chamber-1, response0);      
387 //
388 // Trigger Station 2
389  station=7;
390  MUON->SetPADSIZ(station, 1, 0.75, 0.5);
391 }
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412