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