]> git.uio.no Git - u/mrichter/AliRoot.git/blob - macros/Config_gener.C
Coding convention corrections + few minor bug fixes
[u/mrichter/AliRoot.git] / macros / Config_gener.C
1 enum gentype_t {hijing, hijing_p, gun, box, pythia, 
2                 param1, param2, param3, 
3                 cocktail, fluka, halo, ntuple, scan, doublescan};
4
5 gentype_t gentype=param1;
6
7
8 ntracks=1;
9
10 void Config()
11 {
12
13 new AliGeant3("C++ Interface to Geant3");
14
15 //=======================================================================
16 //  Create the output file
17    
18 TFile *rootfile = new TFile("galice.root","recreate");
19 rootfile->SetCompressionLevel(2);
20 TGeant3 *geant3 = (TGeant3*)gMC;
21
22 //=======================================================================
23 // ******* GEANT STEERING parameters FOR ALICE SIMULATION *******
24 geant3->SetTRIG(1); //Number of events to be processed 
25 geant3->SetSWIT(4,10);
26 geant3->SetDEBU(0,0,1);
27 //geant3->SetSWIT(2,2);
28 geant3->SetDCAY(1);
29 geant3->SetPAIR(1);
30 geant3->SetCOMP(1);
31 geant3->SetPHOT(1);
32 geant3->SetPFIS(0);
33 geant3->SetDRAY(0);
34 geant3->SetANNI(1);
35 geant3->SetBREM(1);
36 geant3->SetMUNU(1);
37 geant3->SetCKOV(1);
38 geant3->SetHADR(1); //Select pure GEANH (HADR 1) or GEANH/NUCRIN (HADR 3)
39 geant3->SetLOSS(2);
40 geant3->SetMULS(1);
41 geant3->SetRAYL(1);
42 geant3->SetAUTO(1); //Select automatic STMIN etc... calc. (AUTO 1) or manual (AUTO 0)
43 geant3->SetABAN(0); //Restore 3.16 behaviour for abandoned tracks
44 geant3->SetOPTI(2); //Select optimisation level for GEANT geometry searches (0,1,2)
45 Float_t cut    = 1.e-3; // 1MeV cut by default
46 Float_t tofmax = 1.e10;
47 //             GAM ELEC NHAD CHAD MUON EBREM MUHAB EDEL MUDEL MUPA TOFMAX
48 geant3->SetCUTS(cut,cut, cut, cut, cut, cut,  cut,  cut, cut,  cut, tofmax);
49 //
50 //=======================================================================
51 // ************* STEERING parameters FOR ALICE SIMULATION **************
52 // --- Specify event type to be tracked through the ALICE setup
53 // --- All positions are in cm, angles in degrees, and P and E in GeV
54
55  switch(gentype)
56  {
57  case gun:
58 //*********************************************
59 // Example for Fixed Particle Gun             
60 //*********************************************
61      AliGenFixed *gener = new AliGenFixed(ntracks);
62      gener->SetMomentum(50);
63      gener->SetPhi(180.);
64      gener->SetTheta(5.);
65      gener->SetOrigin(0,0,0);          //vertex position
66      gener->SetPart(13);                //GEANT particle type
67      break;
68  case box:  
69 //*********************************************
70 // Example for Moving Particle Gun            *
71 //*********************************************
72      AliGenBox *gener = new AliGenBox(ntracks);
73      gener->SetMomentumRange(3,4);
74      gener->SetPhiRange(0,360);
75      gener->SetThetaRange(90, 180. );
76      gener->SetOrigin(0,0,0);   
77      //vertex position
78      gener->SetSigma(0,0,0);           //Sigma in (X,Y,Z) (cm) on IP position
79      gener->SetPart(5);                //GEANT particle type
80      break;
81  case scan:  
82 //*********************************************
83 // Scanning on a grid                         *
84 //*********************************************
85      AliGenScan *gener = new AliGenScan(-1);
86      gener->SetMomentumRange(4,4);
87      gener->SetPhiRange(0,360);
88      gener->SetThetaRange(9,9);
89      //vertex position
90      gener->SetSigma(6,6,0);           //Sigma in (X,Y,Z) (cm) on IP position
91      gener->SetPart(5); 
92      gener->SetRange(20, -100, 100, 20, -100, 100, 1, 500, 500);
93      break;
94      
95  case hijingParam:
96      AliGenHIJINGpara *gener = new AliGenHIJINGpara(ntracks);
97      gener->SetMomentumRange(0,999);
98      gener->SetPhiRange(0,360);
99      gener->SetThetaRange(2,10);
100      gener->SetOrigin(0,0,0);        //vertex position
101      gener->SetSigma(0,0,0);         //Sigma in (X,Y,Z) (cm) on IP position
102      break;
103  case hijing:
104       case hijing:
105      AliGenHijing *gener = new AliGenHijing(-1);
106 // centre of mass energy 
107      gener->SetEnergyCMS(5500);
108 // reference frame
109      gener->SetReferenceFrame("CMS     ");
110 // projectile
111      gener->SetProjectile("A       ", 208, 82);
112      gener->SetTarget    ("A       ", 208, 82);
113 // impact parameter range
114      gener->SetImpactParameterRange(0, 3.);
115 // evaluate cross section before run
116      gener->SetEvaluate(1);
117 // tell hijing to keep the full parent child chain
118      gener->KeepFullEvent();
119 // enable jet quenching
120      gener->SetJetQuenching(1);
121 // enable shadowing
122      gener->SetShadowing(1);
123 // neutral pion and heavy particle decays switched off
124      gener->SetDecaysOff(1);
125 // trigger
126      gener->SetTrigger(0);
127 // kinematic selection
128      gener->SetSelectAll(0);
129 // momentum range
130      gener->SetMomentumRange(0,999);
131 // phi range
132      gener->SetPhiRange(-180,180);
133 // theta range 
134      gener->SetThetaRange(0,180.);
135 // select flavor (0: no, 4: charm+beauty, 5:beauty)
136      gener->SetFlavor(4);
137 //     
138      gener->SetOrigin(0., 0.0 ,0);
139      gener->SetSigma(0,0,5.3);
140      gener->SetVertexSmear(kPerEvent); 
141 // no tracking
142      gener->SetTrackingFlag(0);
143  case pythia:
144 //********************************************
145 // Example for Charm  Production with Pythia *
146 //********************************************
147
148      AliGenPythia *gener = new AliGenPythia(ntracks);
149      gener->SetMomentumRange(0,999);
150      gener->SetPhiRange(0,360);
151      gener->SetThetaRange(0., 180.);
152      gener->SetYRange(-10,10);
153      gener->SetPtRange(0,100);
154      gener->SetOrigin(0,0,0);          // vertex position
155      gener->SetVertexSmear(kPerEvent); 
156      gener->SetSigma(0,0,5.6);         // Sigma in (X,Y,Z) (cm) on IP position
157 //     gener->SetStrucFunc(DO_Set_1);
158      gener->SetProcess(mb); 
159      gener->SetEnergyCMS(5500.);
160      break;
161      
162
163  case param1:
164 //*******************************************************
165 // Example for J/psi  Production from  Parameterisation 
166 // using default library (AliMUONlib)                                       
167 //*******************************************************
168      AliGenParam *gener =
169          new AliGenParam(ntracks,upsilon_p);
170      gener->SetMomentumRange(0,999);
171      gener->SetPtRange(0,999);     
172      gener->SetPhiRange(-180, 180);
173      gener->SetYRange(2.5,4);
174      gener->SetCutOnChild(1);
175      gener->SetChildThetaRange(2,9);
176      gener->SetOrigin(0,0,0);          //vertex position
177      gener->SetSigma(0,0,5.3);         //Sigma in (X,Y,Z) (cm) on IP position
178      gener->SetForceDecay(dimuon);
179      gener->SetTrackingFlag(0);
180      break;
181
182  case param2:
183 //*******************************************************
184 // Example for Omega  Production from  Parameterisation 
185 // specifying library.                                       
186 //*******************************************************
187      AliGenParam *gener = new AliGenParam(1000,new AliGenPHOSlib(), Omega);
188      gener->SetWeighting(non_analog);
189      gener->SetForceDecay(nodecay);
190      gener->SetPtRange(0,100);
191      gener->SetThetaRange(45,135);
192      gener->SetTrackingFlag(0);
193      break;
194
195  case param3:
196 //*******************************************************
197 // Example for Upsilon  Production from  Parameterisation 
198 // specifying library.                                       
199 // GSI style
200 //*******************************************************
201      AliGenParam *gener = new AliGenParam(1000,new AliGenGSIlib(), upsilon_p, "MUON");
202      gener->SetMomentumRange(0,999);
203      gener->SetPtRange(0,999);     
204      gener->SetPhiRange(-180, 180);
205      gener->SetYRange(2.5,4);
206      gener->SetCutOnChild(1);
207      gener->SetChildThetaRange(2,9);
208      gener->SetOrigin(0,0,0);          //vertex position
209      gener->SetSigma(0,0,5.3);         //Sigma in (X,Y,Z) (cm) on IP position
210      gener->SetForceDecay(dimuon);
211      gener->SetTrackingFlag(0);
212      break;
213      
214  case param4:
215 //*******************************************************
216 // Example for Omega  Production from  Parameterisation 
217 // specifying library.
218 // The alternative way.                                       
219 //*******************************************************
220      AliGenLib* Lib=new AliGenPHOSlib();
221      AliGenParam *gener = new AliGenParam(50,Omega,            
222                                                Lib->GetPt(Omega),
223                                                Lib->GetY(Omega),
224                                                Lib->GetIp(Omega));
225      gener->SetWeighting(non_analog);
226      gener->SetForceDecay(nodecay);
227      gener->SetTrackingFlag(0);
228      break;
229      
230  case fluka:
231 //*******************************************************
232 // Example for a FLUKA Boundary Source                  *
233 //*******************************************************
234      AliGenFLUKAsource *gener = new AliGenFLUKAsource(-1);
235      gener->SetFileName("$(ALICE_ROOT)/data/all32.root"); 
236      gener->SetPartFlag(9);
237      gener->SetAgeMax(1.e-5);
238 //  31.7 events     
239      gener->SetFraction(0.0315);     
240 //     gener->SetFraction(0.75*0.0315);     
241      rootfile->cd();
242 //     gener->SetPartFlag(10);
243      gener->SetMomentumRange(0,999);
244      gener->SetPhiRange(0,360);
245      gener->SetThetaRange(0., 180.); 
246      gener->SetAgeMax(1.e-5);
247      
248 //  31.7 events     
249 //     gener->SetFraction(0.0315);     
250      break;
251
252  case ntuple:
253 //*******************************************************
254 // Example for reading from a external file                  *
255 //*******************************************************
256      AliGenExtFile *gener = new AliGenExtFile(-1); 
257      gener->SetFileName("$(ALICE_ROOT)/data/dtujet93.root");
258      gener->SetVertexSmear(kPerEvent); 
259      gener->SetTrackingFlag(1);
260      break;
261
262  case halo:
263 //*******************************************************
264 // Example for Tunnel Halo Source                       *
265 //*******************************************************
266      AliGenHalo *gener = new AliGenHalo(ntracks); 
267      gener->SetFileName("/h1/morsch/marsip/marsip5.mu");
268      break;
269      
270  case cocktail:
271 //*******************************************************
272 // Example for a Cocktail                               *
273 //*******************************************************
274      
275      AliGenCocktail *gener = new AliGenCocktail(); 
276
277      gener->SetPhiRange(0,360);
278      gener->SetYRange(2.5,4);
279      gener->SetThetaRange(2,9);
280      gener->SetPtRange(0,10);
281      gener->SetOrigin(0,0,0);          //vertex position
282      gener->SetSigma(0,0,0);           //Sigma in (X,Y,Z) (cm) on IP position
283      gener->SetMomentumRange(0,999);
284
285      AliGenParam *jpsi = new AliGenParam(1,jpsi_p);
286      jpsi->SetForceDecay(dimuon);
287      jpsi->SetCutOnChild(1);
288
289      
290      AliGenFLUKAsource *bg = new AliGenFLUKAsource(-1);
291      bg->AddFile("$(ALICE_ROOT)/data/all32.root"); 
292      rootfile->cd();
293      bg->SetPartFlag(9);
294      bg->SetAgeMax(1.e-5);
295 //  31.7 events     
296 //     gener->SetFraction(0.0315);     
297      bg->SetFraction(0.01*0.0315);     
298       
299      gener->AddGenerator(jpsi,"J/Psi", 1);
300      gener->AddGenerator(bg,"Background",1);
301
302      break;
303  }
304  
305 // Activate this line if you want the vertex smearing to happen
306 // track by track
307 //
308 // gener->SetVertexSmear(kPerTrack); 
309
310 gener->Init();
311
312 gAlice->SetField(-999,2);    //Specify maximum magnetic field in Tesla (neg. ==> default field)
313
314 Int_t iMAG=1;
315 Int_t iITS=1;
316 Int_t iTPC=1;
317 Int_t iTOF=1;
318 Int_t iRICH=1;
319 Int_t iZDC=0;
320 Int_t iCASTOR=1;
321 Int_t iTRD=1;
322 Int_t iABSO=1;
323 Int_t iDIPO=1;
324 Int_t iHALL=1;
325 Int_t iFRAME=1;
326 Int_t iSHIL=1;
327 Int_t iPIPE=1;
328 Int_t iFMD=0;
329 Int_t iMUON=1;
330 Int_t iPHOS=1;
331 Int_t iPMD=1;
332 Int_t iSTART=1;
333
334 //=================== Alice BODY parameters =============================
335 AliBODY *BODY = new AliBODY("BODY","Alice envelop");
336
337
338 if(iMAG) {
339 //=================== MAG parameters ============================
340 // --- Start with Magnet since detector layouts may be depending ---
341 // --- on the selected Magnet dimensions ---
342 AliMAG *MAG  = new AliMAG("MAG","Magnet");
343 }
344
345
346 if(iABSO) {
347 //=================== ABSO parameters ============================
348 AliABSO *ABSO  = new AliABSOv0("ABSO","Muon Absorber");
349 }
350
351 if(iDIPO) {
352 //=================== DIPO parameters ============================
353
354 AliDIPO *DIPO  = new AliDIPOv2("DIPO","Dipole version 2");
355 }
356
357 if(iHALL) {
358 //=================== HALL parameters ============================
359
360 AliHALL *HALL  = new AliHALL("HALL","Alice Hall");
361 }
362
363
364 if(iFRAME) {
365 //=================== FRAME parameters ============================
366
367 AliFRAME *FRAME  = new AliFRAMEv1("FRAME","Space Frame");
368
369 }
370
371 if(iSHIL) {
372 //=================== SHIL parameters ============================
373
374 AliSHIL *SHIL  = new AliSHILv0("SHIL","Shielding");
375 }
376
377
378 if(iPIPE) {
379 //=================== PIPE parameters ============================
380
381 AliPIPE *PIPE  = new AliPIPEv0("PIPE","Beam Pipe");
382 }
383
384
385 if(iITS) {
386 //=================== ITS parameters ============================
387 //
388 // EUCLID is a flag to output (=1) both geometry and media to two ASCII files 
389 // (called by default ITSgeometry.euc and ITSgeometry.tme) in a format
390 // understandable to the CAD system EUCLID. The default (=0) means that you 
391 // dont want to use this facility.
392 //
393 AliITS *ITS  = new AliITSv5("ITS","normal ITS");
394 ITS->SetEUCLID(0);
395 }
396
397
398 if(iTPC) {
399 //============================ TPC parameters ================================
400 // --- This allows the user to specify sectors for the SLOW (TPC geometry 2)
401 // --- Simulator. SecAL (SecAU) <0 means that ALL lower (upper)
402 // --- sectors are specified, any value other than that requires at least one 
403 // --- sector (lower or upper)to be specified!
404 // --- Reminder: sectors 1-24 are lower sectors (1-12 -> z>0, 13-24 -> z<0)
405 // ---           sectors 25-72 are the upper ones (25-48 -> z>0, 49-72 -> z<0)
406 // --- SecLows - number of lower sectors specified (up to 6)
407 // --- SecUps - number of upper sectors specified (up to 12)
408 // --- Sens - sensitive strips for the Slow Simulator !!!
409 // --- This does NOT work if all S or L-sectors are specified, i.e.
410 // --- if SecAL or SecAU < 0
411 //
412 //
413 //-----------------------------------------------------------------------------
414
415   gROOT->LoadMacro("SetTPCParam.C");
416   AliTPCParam *param = SetTPCParam();
417   AliTPC *TPC  = new AliTPCv1("TPC","Normal TPC"); //v1 is default
418   TPC->SetParam(param); // pass the parameter object to the TPC
419
420 // set gas mixture
421
422 TPC->SetGasMixt(2,20,10,-1,0.9,0.1,0.);
423 TPC->SetSecAL(4);
424 TPC->SetSecAU(4);
425 TPC->SetSecLows(1,  2,  3, 19, 20, 21);
426 TPC->SetSecUps(37, 38, 39, 37+18, 38+18, 39+18, -1, -1, -1, -1, -1, -1);
427 TPC->SetSens(1);
428
429 if (TPC->IsVersion()==1) param->Write(param->GetTitle());
430 }
431
432 if(iTOF) {
433 //=================== TOF parameters ============================
434 AliTOF *TOF  = new AliTOFv1("TOF","normal TOF");
435 }
436
437 if(iRICH) {
438 //=================== RICH parameters ===========================
439     AliRICH *RICH  = new AliRICHv0("RICH","normal RICH");
440     
441 //
442 // Version 0
443 // Default Segmentation
444     AliRICHSegmentationV0* SegmentationV0 = new AliRICHSegmentationV0;
445 //
446 //  Segmentation parameters
447     SegmentationV0->SetPadSize(0.84,0.80);
448     SegmentationV0->SetDAnod(0.84/2);
449 //
450 //  Geometry parameters
451     AliRICHGeometry* GeometryV0 = new AliRICHGeometryV0;
452     GeometryV0->SetGapThickness(7.6);
453     GeometryV0->SetProximityGapThickness(.4);
454     GeometryV0->SetQuartzLength(131);
455     GeometryV0->SetQuartzWidth(126.2);
456     GeometryV0->SetQuartzThickness(.5);
457     GeometryV0->SetOuterFreonLength(131);
458     GeometryV0->SetOuterFreonWidth(40.3);
459     GeometryV0->SetInnerFreonLength(131);
460     GeometryV0->SetInnerFreonWidth(40.3);
461     GeometryV0->SetFreonThickness(1);
462 //
463 //  Response parameters
464     AliRICHResponseV0*  Rresponse0   = new AliRICHResponseV0;
465     Rresponse0->SetSigmaIntegration(5.);
466     Rresponse0->SetChargeSlope(41.);
467     Rresponse0->SetChargeSpread(0.18, 0.18);
468     Rresponse0->SetMaxAdc(1024);
469     Rresponse0->SetAlphaFeedback(0.05);
470     Rresponse0->SetEIonisation(26.e-9);
471     Rresponse0->SetSqrtKx3(0.77459667);
472     Rresponse0->SetKx2(0.962);
473     Rresponse0->SetKx4(0.379);
474     Rresponse0->SetSqrtKy3(0.77459667);
475     Rresponse0->SetKy2(0.962);
476     Rresponse0->SetKy4(0.379);
477     Rresponse0->SetPitch(0.25);
478 //
479 //      
480   for (Int_t i=0; i<7; i++) {
481     RICH->SetGeometryModel(i,GeometryV0);
482     RICH->SetSegmentationModel(i, SegmentationV0);
483     RICH->SetResponseModel(i, Rresponse0);
484     RICH->SetNsec(i,1);
485   }
486 }
487
488
489 if(iZDC) {
490 //=================== ZDC parameters ============================
491
492 AliZDC *ZDC  = new AliZDCv1("ZDC","normal ZDC");
493 }
494
495 if(iCASTOR) {
496 //=================== CASTOR parameters ============================
497
498 AliCASTOR *CASTOR  = new AliCASTORv1("CASTOR","normal CASTOR");
499 }
500
501 if(iTRD) {
502 //=================== TRD parameters ============================
503   
504   AliTRD *TRD  = new AliTRDv0("TRD","TRD fast simulator");
505   //TRD->SetHits();
506   
507   //AliTRD *TRD  = new AliTRDv1("TRD","TRD slow simulator");
508   //TRD->SetSensPlane(0);
509   //TRD->SetSensChamber(2);
510   //TRD->SetSensSector(17);
511   
512   // Select the gas mixture (0: 97% Xe + 3% isobutane, 1: 90% Xe + 10% CO2)
513   TRD->SetGasMix(1);
514   
515   // With hole in front of PHOS
516   TRD->SetPHOShole();
517   // With hole in front of RICH
518   TRD->SetRICHhole();
519 }
520
521 if(iFMD) {
522 //=================== FMD parameters ============================
523
524 AliFMD *FMD  = new AliFMDv1("FMD","normal FMD");
525 }
526
527 if(iMUON) {
528 //=================== MUON parameters ===========================
529
530 AliMUON *MUON  = new AliMUONv0("MUON","normal MUON");
531
532   MUON->SetMaxStepGas(0.1);
533   MUON->SetMaxStepAlu(0.1);
534 //
535 // Version 0
536 //
537 // First define the number of planes that are segmented (1 or 2) by a call
538 // to SetNsec. 
539 // Then chose for each chamber (chamber plane) the segmentation 
540 // and response model.
541 // They should be equal for the two chambers of each station. In a future
542 // version this will be enforced.
543 //
544 //  
545  Int_t chamber;
546  Int_t station;
547 // Default response
548  AliMUONresponseV0* response0 = new AliMUONresponseV0;
549  response0->SetSqrtKx3(0.7131);
550  response0->SetKx2(1.0107);
551  response0->SetKx4(0.4036);
552  response0->SetSqrtKy3(0.7642);
553  response0->SetKy2(0.9706);
554  response0->SetKy4(0.3831);
555  response0->SetPitch(0.25);
556  response0->SetSigmaIntegration(10.);
557  response0->SetChargeSlope(50);
558  response0->SetChargeSpread(0.18, 0.18);
559  response0->SetMaxAdc(4096);
560 //--------------------------------------------------------
561 // Configuration for Chamber TC1/2  (Station 1) ----------           
562 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
563 // Float_t rseg1[4]={17.5, 55.2, 71.3, 95.5};
564  Float_t rseg1[4]={15.5, 55.2, 71.3, 95.5};
565  Int_t   nseg1[4]={4, 4, 2, 1};
566 //
567  chamber=1;
568 //^^^^^^^^^
569  MUON->SetNsec(chamber-1,2);
570 //
571  AliMUONsegmentationV01 *seg11=new AliMUONsegmentationV01;
572  
573  seg11->SetSegRadii(rseg1);
574  seg11->SetPADSIZ(3, 0.5);
575  seg11->SetDAnod(3.0/3./4);
576  seg11->SetPadDivision(nseg1);
577  
578  MUON->SetSegmentationModel(chamber-1, 1, seg11);
579 //
580  AliMUONsegmentationV02 *seg12=new AliMUONsegmentationV02;
581  seg12->SetSegRadii(rseg1); 
582  seg12->SetPADSIZ(0.75, 2.0);
583  seg12->SetDAnod(3.0/3./4);
584  seg12->SetPadDivision(nseg1);
585
586  MUON->SetSegmentationModel(chamber-1, 2, seg12);
587
588  MUON->SetResponseModel(chamber-1, response0);      
589
590  chamber=2;
591 //^^^^^^^^^
592 //
593  MUON->SetNsec(chamber-1,2);
594 //
595  AliMUONsegmentationV01 *seg21=new AliMUONsegmentationV01;
596  seg21->SetSegRadii(rseg1);
597  seg21->SetPADSIZ(3, 0.5);
598  seg21->SetDAnod(3.0/3./4);
599  seg21->SetPadDivision(nseg1);
600  MUON->SetSegmentationModel(chamber-1, 1, seg21);
601 //
602  AliMUONsegmentationV02 *seg22=new AliMUONsegmentationV02;
603  seg22->SetSegRadii(rseg1); 
604  seg22->SetPADSIZ(0.75, 2.);
605  seg22->SetDAnod(3.0/3./4);
606  seg22->SetPadDivision(nseg1);
607  MUON->SetSegmentationModel(chamber-1, 2, seg22);
608
609  MUON->SetResponseModel(chamber-1, response0);      
610 //
611 //--------------------------------------------------------
612 // Configuration for Chamber TC3/4 -----------------------
613 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
614 // Float_t rseg2[4]={23.5, 47.1, 87.7, 122.5};
615  Float_t rseg2[4]={21.5, 47.1, 87.7, 122.5};
616  Int_t   nseg2[4]={4, 4, 2, 1};
617 //
618  chamber=3;
619 //^^^^^^^^^
620  MUON->SetNsec(chamber-1,2);
621 //
622  AliMUONsegmentationV01 *seg31=new AliMUONsegmentationV01;
623  seg31->SetSegRadii(rseg2);
624  seg31->SetPADSIZ(3, 0.5);
625  seg31->SetDAnod(3.0/3./4);
626  seg31->SetPadDivision(nseg2);
627  MUON->SetSegmentationModel(chamber-1, 1, seg31);
628 //
629  AliMUONsegmentationV02 *seg32=new AliMUONsegmentationV02;
630  seg32->SetSegRadii(rseg2); 
631  seg32->SetPADSIZ(0.75, 2.);
632  seg32->SetPadDivision(nseg2);
633  seg32->SetDAnod(3.0/3./4);
634
635  MUON->SetSegmentationModel(chamber-1, 2, seg32);
636
637  MUON->SetResponseModel(chamber-1, response0);      
638
639  chamber=4;
640 //^^^^^^^^^
641 //
642  MUON->SetNsec(chamber-1,2);
643 //
644  AliMUONsegmentationV01 *seg41=new AliMUONsegmentationV01;
645  seg41->SetSegRadii(rseg2);
646  seg41->SetPADSIZ(3, 0.5);
647  seg41->SetDAnod(3.0/3./4);
648  seg41->SetPadDivision(nseg2);
649  MUON->SetSegmentationModel(chamber-1, 1, seg41);
650 //
651  AliMUONsegmentationV02 *seg42=new AliMUONsegmentationV02;
652  seg42->SetSegRadii(rseg2); 
653  seg42->SetPADSIZ(0.75, 2.);
654  seg42->SetPadDivision(nseg2);
655  seg42->SetDAnod(3.0/3./4);
656
657  MUON->SetSegmentationModel(chamber-1, 2, seg42);
658
659  MUON->SetResponseModel(chamber-1, response0);      
660
661
662 //--------------------------------------------------------
663 // Configuration for Chamber TC5/6 -----------------------
664 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
665 /*
666  seg5 =  new AliMUONsegmentationV1;
667  AliMUONresponseV0* response5 =  new AliMUONresponseV0;
668  // K3 = 0.62
669  response5->SetSqrtKx3(0.78740079);
670  response5->SetKx2(0.95237319); //  0.5 * kPI * (1- 0.5*sqrtky3 )
671  response5->SetKx4(0.37480633); // 0.25/TMath::ATan(sqrtkx3)
672  // K3 = 0.55
673  response5->SetSqrtKy3(0.74161985);
674  response5->SetKy2(0.98832946);
675  response5->SetKy4(0.39177817);
676  response5->SetPitch(0.325);
677  response5->SetSigmaIntegration(10.);
678  response5->SetChargeSlope(50);
679  response5->SetChargeSpread(0.4, 0.4);
680  response5->SetMaxAdc(4096);
681
682  chamber=5;
683  MUON->SetNsec(chamber-1,1);
684  MUON->SetSegmentationModel(chamber-1, 1, seg5);
685  MUON->SetResponseModel(chamber-1, response5);      
686
687  chamber=6;
688  MUON->SetNsec(chamber-1,1);
689  MUON->SetSegmentationModel(chamber-1, 1, seg5);
690  MUON->SetResponseModel(chamber-1, response5);      
691 //
692 // Station 3
693  station=3;
694  MUON->SetPADSIZ(station, 1, 0.975, 0.55);
695 */
696
697  chamber=5;
698 //^^^^^^^^^
699  MUON->SetNsec(chamber-1,2);
700 //
701  AliMUONsegmentationV0 *seg51=new AliMUONsegmentationV0;
702  seg51->SetPADSIZ(0.75, 0.5);
703  seg51->SetDAnod(3.0/3./4);
704  MUON->SetSegmentationModel(chamber-1, 1, seg51);
705 //
706  AliMUONsegmentationV0 *seg52=new AliMUONsegmentationV0;
707  seg52->SetPADSIZ(0.5,0.75);
708  seg52->SetDAnod(3.0/3./4);
709  MUON->SetSegmentationModel(chamber-1, 2, seg52);
710
711  MUON->SetResponseModel(chamber-1, response0);      
712
713  chamber=6;
714 //^^^^^^^^^
715  MUON->SetNsec(chamber-1,2);
716 //
717  AliMUONsegmentationV0 *seg61=new AliMUONsegmentationV0;
718  seg61->SetPADSIZ(0.75, 0.5);
719  seg61->SetDAnod(3.0/3./4);
720  MUON->SetSegmentationModel(chamber-1, 1, seg61);
721 //
722  AliMUONsegmentationV0 *seg62=new AliMUONsegmentationV0;
723  seg62->SetPADSIZ(0.5,0.75);
724  seg62->SetDAnod(3.0/3./4);
725  MUON->SetSegmentationModel(chamber-1, 2, seg62);
726
727  MUON->SetResponseModel(chamber-1, response0);    
728
729 //--------------------------------------------------------
730 // Configuration for Chamber TC7/8  (Station 4) ----------           
731 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
732
733  Int_t   nseg4[4]={4, 4, 2, 1};
734
735  chamber=7;
736 //^^^^^^^^^
737  MUON->SetNsec(chamber-1,2);
738 //
739  AliMUONsegmentationV04 *seg71=new AliMUONsegmentationV04;
740  seg71->SetPADSIZ(10.,0.5);
741  seg71->SetDAnod(0.25);
742  seg71->SetPadDivision(nseg4);
743  MUON->SetSegmentationModel(chamber-1, 1, seg71);
744
745  AliMUONsegmentationV05 *seg72=new AliMUONsegmentationV05;
746  seg72->SetPADSIZ(1,10);
747  seg72->SetDAnod(0.25);
748  seg72->SetPadDivision(nseg4);
749  MUON->SetSegmentationModel(chamber-1, 2, seg72);
750
751  MUON->SetResponseModel(chamber-1, response0);      
752
753  chamber=8;
754 //^^^^^^^^^
755  MUON->SetNsec(chamber-1,2);
756  AliMUONsegmentationV04 *seg81=new AliMUONsegmentationV04;
757  seg81->SetPADSIZ(10., 0.5);
758  seg81->SetPadDivision(nseg4);
759  seg81->SetDAnod(0.25);
760  MUON->SetSegmentationModel(chamber-1, 1, seg81);
761
762  AliMUONsegmentationV05 *seg82=new AliMUONsegmentationV05;
763  seg82->SetPADSIZ(1, 10);
764  seg82->SetPadDivision(nseg4);
765  seg82->SetDAnod(0.25);
766  MUON->SetSegmentationModel(chamber-1, 2, seg82);
767
768  MUON->SetResponseModel(chamber-1, response0);      
769 //--------------------------------------------------------
770 // Configuration for Chamber TC9/10  (Station 5) ---------           
771 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
772  chamber=9;
773 //^^^^^^^^^
774  MUON->SetNsec(chamber-1,2);
775 //
776  AliMUONsegmentationV04 *seg91=new AliMUONsegmentationV04;
777  seg91->SetPADSIZ(10.,0.5);
778  seg91->SetDAnod(0.25);
779  seg91->SetPadDivision(nseg4);
780  MUON->SetSegmentationModel(chamber-1, 1, seg91);
781
782  AliMUONsegmentationV05 *seg92=new AliMUONsegmentationV05;
783  seg92->SetPADSIZ(1,10);
784  seg92->SetDAnod(0.25);
785  seg92->SetPadDivision(nseg4);
786
787  MUON->SetSegmentationModel(chamber-1, 2, seg92);
788
789  MUON->SetResponseModel(chamber-1, response0);      
790
791  chamber=10;
792 //^^^^^^^^^
793  MUON->SetNsec(chamber-1,2);
794  AliMUONsegmentationV04 *seg101=new AliMUONsegmentationV04;
795  seg101->SetPADSIZ(10., 0.5);
796  seg101->SetPadDivision(nseg4);
797  seg101->SetDAnod(0.25);
798  MUON->SetSegmentationModel(chamber-1, 1, seg101);
799
800  AliMUONsegmentationV05 *seg102=new AliMUONsegmentationV05;
801  seg102->SetPADSIZ(1,10);
802  seg102->SetPadDivision(nseg4);
803  seg102->SetDAnod(0.25);
804  MUON->SetSegmentationModel(chamber-1, 2, seg102);
805
806  MUON->SetResponseModel(chamber-1, response0);      
807 //--------------------------------------------------------
808 // Configuration for Trigger staions --------------------- 
809 // (not yet used/implemented) ----------------------------          
810 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
811
812  chamber=11;
813  MUON->SetNsec(chamber-1,1);
814  AliMUONsegmentationV0 *seg1112=new AliMUONsegmentationV0;
815  seg1112->SetDAnod(0.51/3.);
816
817  MUON->SetSegmentationModel(chamber-1, 1, seg1112);
818  MUON->SetResponseModel(chamber-1, response0);      
819
820  chamber=12;
821  MUON->SetNsec(chamber-1,1);
822  MUON->SetSegmentationModel(chamber-1, 1, seg1112);
823  MUON->SetResponseModel(chamber-1, response0);      
824 //
825 // Trigger Station 1
826  station=6;
827  MUON->SetPADSIZ(station, 1, 0.75, 0.5);
828
829  chamber=13;
830  MUON->SetNsec(chamber-1,1);
831  AliMUONsegmentationV0 *seg1314=new AliMUONsegmentationV0;
832  seg1314->SetDAnod(0.51/3.);
833
834  MUON->SetSegmentationModel(chamber-1, 1, seg1314);
835  MUON->SetResponseModel(chamber-1, response0);      
836
837  chamber=14;
838  MUON->SetNsec(chamber-1,1);
839  MUON->SetSegmentationModel(chamber-1, 1, seg1314);
840  MUON->SetResponseModel(chamber-1, response0);      
841 //
842 // Trigger Station 2
843  station=7;
844  MUON->SetPADSIZ(station, 1, 0.75, 0.5);
845 }
846  
847 //=================== PHOS parameters ===========================
848
849 if(iPHOS) {
850   AliPHOS *PHOS  = new AliPHOSv0("PHOS","GPS2");
851 }
852
853
854 if(iPMD) {
855 //=================== PMD parameters ============================
856
857 AliPMD *PMD  = new AliPMDv0("PMD","normal PMD");
858 PMD->SetPAR(1., 1., 0.8, 0.02);
859 PMD->SetIN(6., 18., -580., 27., 27.);
860 PMD->SetGEO(0.0, 0.2, 4.);
861 PMD->SetPadSize(0.8, 1.0, 1.0, 1.5);
862
863 }
864
865 if(iSTART) {
866 //=================== START parameters ============================
867 AliSTART *START  = new AliSTARTv0("START","START Detector");
868 }
869
870          
871 }