]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONFactory.cxx
oops
[u/mrichter/AliRoot.git] / MUON / AliMUONFactory.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 ////////////////////////////////////////////////////////////
17 //  Factory for muon chambers, segmentations and response //
18 ////////////////////////////////////////////////////////////
19
20 /* $Id$ */
21
22 #include "AliMUONFactory.h"
23 #include "AliMUON.h"
24 #include "AliMUONChamber.h"
25 #include "AliMUONResponseV0.h"
26 #include "AliMUONResponseTrigger.h"
27 #include "AliMUONSegmentationV0.h"
28 #include "AliMUONSegmentationV01.h"
29 #include "AliMUONSegmentationV02.h"
30 #include "AliMUONSegmentationV04.h"
31 #include "AliMUONSegmentationV05.h"
32 #include "AliMUONSegmentationSlat.h"
33 #include "AliMUONSegmentationSlatN.h"
34 #include "AliMUONSegmentationTrigger.h"
35 #include "AliMUONSegmentationTriggerX.h"
36 #include "AliMUONSegmentationTriggerY.h"
37
38 ClassImp(AliMUONFactory)
39
40 //__________________________________________________________________________
41 AliMUONFactory::AliMUONFactory()
42   : TObject(),
43     fMUON(0),
44     fResponse0(0)
45 {
46 //
47 }
48
49 //__________________________________________________________________________
50 AliMUONFactory::~AliMUONFactory()
51 {
52 //
53 }
54
55 //__________________________________________________________________________
56 void AliMUONFactory::BuildCommon() 
57 {
58 //
59 // Construct the default response.
60 //
61
62         // Default response: 5 mm of gas
63         fResponse0 = new AliMUONResponseV0;
64         fResponse0->SetSqrtKx3AndDeriveKx2Kx4(0.7131); // sqrt(0.5085)
65         fResponse0->SetSqrtKy3AndDeriveKy2Ky4(0.7642); // sqrt(0.5840)
66         fResponse0->SetPitch(0.25); // anode-cathode distance
67         fResponse0->SetSigmaIntegration(10.);
68         fResponse0->SetChargeSlope(10);
69         fResponse0->SetChargeSpread(0.18, 0.18);
70         fResponse0->SetMaxAdc(4096);
71         fResponse0->SetSaturation(3000);
72         fResponse0->SetZeroSuppression(6);
73 }       
74         
75 //__________________________________________________________________________
76 void AliMUONFactory::BuildStation1() 
77 {
78 //--------------------------------------------------------
79 // Configuration for Chamber TC1/2  (Station 1) ----------           
80 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
81
82         // Response for 4 mm of gas (station 1)
83         // automatic consistency with width of sensitive medium in CreateGeometry ????
84         AliMUONResponseV0* responseSt1 = new AliMUONResponseV0;
85         // Mathieson parameters from L.Kharmandarian's thesis, page 190
86         responseSt1->SetSqrtKx3AndDeriveKx2Kx4(0.7000); // sqrt(0.4900)
87         responseSt1->SetSqrtKy3AndDeriveKy2Ky4(0.7550); // sqrt(0.5700)
88         responseSt1->SetPitch(0.20); // anode-cathode distance
89         responseSt1->SetSigmaIntegration(10.);
90         // ChargeSlope larger to compensate for the smaller anode-cathode distance
91         // and keep the same most probable ADC channel for mip's
92         responseSt1->SetChargeSlope(62.5); 
93         // assumed proportionality to anode-cathode distance for ChargeSpread
94         responseSt1->SetChargeSpread(0.144, 0.144);
95         responseSt1->SetMaxAdc(4096);
96         responseSt1->SetSaturation(3000);
97         responseSt1->SetZeroSuppression(6);
98         
99         //--------------------------------------------------------
100         // Configuration for Chamber TC1/2  (Station 1) ----------           
101
102         Float_t rseg1[4]={17.5, 55.2, 71.3, 95.5};
103         Int_t   nseg1[4]={4, 4, 2, 1};
104 //
105         Int_t chamber=1;
106 //      ^^^^^^^^^^^^^^^^
107         fMUON->SetNsec(chamber-1,2);
108 //
109         AliMUONSegmentationV01 *seg11=new AliMUONSegmentationV01(4);
110         
111         seg11->SetSegRadii(rseg1);
112         seg11->SetPadSize(2.4, 0.4); // smaller pad size
113         seg11->SetDAnod(0.20); // smaller distance between anode wires
114         seg11->SetPadDivision(nseg1);
115         
116         fMUON->SetSegmentationModel(chamber-1, 1, seg11);
117         
118         AliMUONSegmentationV02 *seg12=new AliMUONSegmentationV02(4);
119         seg12->SetSegRadii(rseg1); 
120         seg12->SetPadSize(0.6, 1.6); // smaller pad size
121         seg12->SetDAnod(0.20); // smaller distance between anode wires
122         seg12->SetPadDivision(nseg1);
123         
124         fMUON->SetSegmentationModel(chamber-1, 2, seg12);
125         
126         fMUON->SetResponseModel(chamber-1, responseSt1); // special response        
127         fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
128         
129         chamber=2;
130 //      ^^^^^^^^^
131 //
132         fMUON->SetNsec(chamber-1,2);
133 //
134         AliMUONSegmentationV01 *seg21=new AliMUONSegmentationV01(4);
135         seg21->SetSegRadii(rseg1);
136         seg21->SetPadSize(2.4, 0.4); // smaller pad size
137         seg21->SetDAnod(0.20); // smaller distance between anode wires
138         seg21->SetPadDivision(nseg1);
139         fMUON->SetSegmentationModel(chamber-1, 1, seg21);
140 //
141         AliMUONSegmentationV02 *seg22=new AliMUONSegmentationV02(4);
142         seg22->SetSegRadii(rseg1); 
143         seg22->SetPadSize(0.6, 1.6); // smaller pad size
144         seg22->SetDAnod(0.20); // smaller distance between anode wires
145         seg22->SetPadDivision(nseg1);
146         fMUON->SetSegmentationModel(chamber-1, 2, seg22);
147         
148         fMUON->SetResponseModel(chamber-1, responseSt1); // special response
149         fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
150         
151 }
152
153 //__________________________________________________________________________
154 void AliMUONFactory::BuildStation2() 
155 {
156 //
157 //--------------------------------------------------------
158 // Configuration for Chamber TC3/4 (Station 2) -----------
159 ///^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
160 // Float_t rseg2[4]={23.5, 87.7, 122.4, 122.5};
161
162         Float_t rseg2[4]={23.5, 53.5, 90.5, 122.5};       
163         Int_t   nseg2[4]={4, 4, 2, 1};
164 //
165         Int_t chamber=3;
166 //      ^^^^^^^^^^^^^^^^
167         fMUON->SetNsec(chamber-1,2);
168 //
169         AliMUONSegmentationV01 *seg31=new AliMUONSegmentationV01(4);
170         seg31->SetSegRadii(rseg2);
171         seg31->SetPadSize(3.0, 0.5);
172         seg31->SetDAnod(3.0/3./4);
173         seg31->SetPadDivision(nseg2);
174         fMUON->SetSegmentationModel(chamber-1, 1, seg31);
175 //
176         AliMUONSegmentationV02 *seg32=new AliMUONSegmentationV02(4);
177         seg32->SetSegRadii(rseg2); 
178         seg32->SetPadSize(0.75, 2.0);
179         seg32->SetPadDivision(nseg2);
180         seg32->SetDAnod(3.0/3./4);
181         
182         fMUON->SetSegmentationModel(chamber-1, 2, seg32);
183         
184         fMUON->SetResponseModel(chamber-1, fResponse0);     
185         fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
186         
187         chamber=4;
188 //      ^^^^^^^^^
189 //
190         fMUON->SetNsec(chamber-1,2);
191 //
192         AliMUONSegmentationV01 *seg41=new AliMUONSegmentationV01(4);
193         seg41->SetSegRadii(rseg2);
194         seg41->SetPadSize(3.0, 0.5);
195         seg41->SetDAnod(3.0/3./4);
196         seg41->SetPadDivision(nseg2);
197         fMUON->SetSegmentationModel(chamber-1, 1, seg41);
198 //
199         AliMUONSegmentationV02 *seg42=new AliMUONSegmentationV02(4);
200         seg42->SetSegRadii(rseg2); 
201         seg42->SetPadSize(0.75, 2.0);
202         seg42->SetPadDivision(nseg2);
203         seg42->SetDAnod(3.0/3./4);
204         
205         fMUON->SetSegmentationModel(chamber-1, 2, seg42);
206         
207         fMUON->SetResponseModel(chamber-1, fResponse0);     
208         fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
209 }       
210         
211         
212 //__________________________________________________________________________
213 void AliMUONFactory::BuildStation3() 
214 {
215 //--------------------------------------------------------
216 // Configuration for Chamber TC5/6  (Station 3) ----------          
217 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
218
219         Int_t   nseg3[4]={4, 4, 2, 1};
220         Int_t   npcb5[36] = {0,0,2,0,
221                              0,0,3,0,
222                              0,1,3,0,
223                              0,2,2,0,
224                              0,1,2,0, 
225                              0,2,2,0, 
226                              0,1,3,0, 
227                              0,0,3,0,
228                              0,0,2,0};
229         
230         Float_t shift = 1.5/2.;
231         Float_t xpos5[9]    = {2., 2., 2., 2.,33., 2., 2., 2., 2.};
232         Float_t ypos5       = -(20.+4.*(40.-2.*shift));
233         
234         Int_t chamber=5;
235         fMUON->SetNsec(chamber-1,2);
236         AliMUONSegmentationSlat *seg51=new AliMUONSegmentationSlat(4);
237         seg51->SetNSlats(9); 
238         seg51->SetShift(shift);  
239         seg51->SetNPCBperSector(npcb5); 
240         seg51->SetSlatXPositions(xpos5);
241         seg51->SetSlatYPosition(ypos5);
242         seg51->SetPadSize(10.,0.5);
243         seg51->SetDAnod(0.25);
244         seg51->SetPadDivision(nseg3);
245         fMUON->SetSegmentationModel(chamber-1, 1, seg51);
246         
247         AliMUONSegmentationSlatN *seg52=new AliMUONSegmentationSlatN(4);
248         seg52->SetNSlats(9); 
249         seg52->SetShift(shift);  
250         seg52->SetNPCBperSector(npcb5); 
251         seg52->SetSlatXPositions(xpos5);
252         seg52->SetSlatYPosition(ypos5);
253         seg52->SetPadSize(1., 10.); // DeltaX(non bending) = 2 * DeltaY(bending)
254         seg52->SetDAnod(0.25);
255         seg52->SetPadDivision(nseg3);
256         fMUON->SetSegmentationModel(chamber-1, 2, seg52);
257         fMUON->SetResponseModel(chamber-1, fResponse0);      
258         fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
259         
260         chamber=6;
261         fMUON->SetNsec(chamber-1,2);
262         AliMUONSegmentationSlat *seg61=new AliMUONSegmentationSlat(4);
263         seg61->SetNSlats(9); 
264         seg61->SetShift(shift);  
265         seg61->SetNPCBperSector(npcb5); 
266         seg61->SetSlatXPositions(xpos5);
267         seg61->SetSlatYPosition(ypos5);
268         seg61->SetPadSize(10.,0.5);
269         seg61->SetDAnod(0.25);
270         seg61->SetPadDivision(nseg3);
271         fMUON->SetSegmentationModel(chamber-1, 1, seg61);
272         
273         AliMUONSegmentationSlatN *seg62=new AliMUONSegmentationSlatN(4);
274         seg62->SetNSlats(9); 
275         seg62->SetShift(shift);  
276         seg62->SetNPCBperSector(npcb5); 
277         seg62->SetSlatXPositions(xpos5);
278         seg62->SetSlatYPosition(ypos5);
279         seg62->SetPadSize(1., 10.); // DeltaX(non bending) = 2 * DeltaY(bending)
280         seg62->SetDAnod(0.25);
281         seg62->SetPadDivision(nseg3);
282         fMUON->SetSegmentationModel(chamber-1, 2, seg62);
283         fMUON->SetResponseModel(chamber-1, fResponse0);      
284         fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
285 }
286
287         
288 //__________________________________________________________________________
289 void AliMUONFactory::BuildStation4() 
290 {
291 //--------------------------------------------------------
292 // Configuration for Chamber TC7/8  (Station 4) ----------           
293 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
294
295         Int_t   nseg4[4]={4, 4, 2, 1};
296         
297         Int_t chamber=7;
298 //      ^^^^^^^^^^^^^^^^
299         
300         fMUON->SetNsec(chamber-1,2);
301 //
302         AliMUONSegmentationSlat *seg71=new AliMUONSegmentationSlat(4);
303         Float_t shift = 1.5/2.;
304         Int_t npcb7[44] = {0,0,0,3,
305                            0,0,2,2,
306                            0,0,3,2,
307                            0,2,2,1,
308                            0,2,2,1,
309                            0,1,2,1, 
310                            0,2,2,1, 
311                            0,2,2,1, 
312                            0,0,3,2, 
313                            0,0,2,2, 
314                            0,0,0,3};
315         Float_t xpos7[11]   = {2., 2., 2., 2., 2., 40.5, 2., 2., 2., 2., 2.};
316         Float_t ypos7       = -(20.+5.*(40.-2.*shift));
317         
318         seg71->SetNSlats(11);  
319         seg71->SetShift(shift);  
320         seg71->SetNPCBperSector(npcb7); 
321         seg71->SetSlatXPositions(xpos7);
322         seg71->SetSlatYPosition(ypos7);
323         
324         seg71->SetPadSize(10.,0.5);
325         seg71->SetDAnod(0.25);
326         seg71->SetPadDivision(nseg4);
327         fMUON->SetSegmentationModel(chamber-1, 1, seg71);
328         
329         AliMUONSegmentationSlatN *seg72=new AliMUONSegmentationSlatN(4);
330         
331         fMUON->SetSegmentationModel(chamber-1, 2, seg72);
332         seg72->SetNSlats(11);  
333         seg72->SetShift(shift);   
334         seg72->SetNPCBperSector(npcb7); 
335         seg72->SetSlatXPositions(xpos7);
336         seg72->SetSlatYPosition(ypos7);
337         seg72->SetPadSize(1., 10.); // DeltaX(non bending) = 2 * DeltaY(bending)
338         seg72->SetDAnod(0.25);
339         seg72->SetPadDivision(nseg4);
340         
341         fMUON->SetResponseModel(chamber-1, fResponse0);     
342         fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
343         
344         chamber=8;
345 //      ^^^^^^^^^
346         fMUON->SetNsec(chamber-1,2);
347 //
348         AliMUONSegmentationSlat *seg81=new AliMUONSegmentationSlat(4);
349         
350         seg81->SetNSlats(11);  
351         seg81->SetShift(shift);  
352         seg81->SetNPCBperSector(npcb7); 
353         seg81->SetSlatXPositions(xpos7);
354         seg81->SetSlatYPosition(ypos7);
355         seg81->SetPadSize(10.,0.5);
356         seg81->SetDAnod(0.25);
357         seg81->SetPadDivision(nseg4);
358         fMUON->SetSegmentationModel(chamber-1, 1, seg81);
359         
360         AliMUONSegmentationSlat *seg82=new AliMUONSegmentationSlatN(4);
361         
362         fMUON->SetSegmentationModel(chamber-1, 2, seg82);
363         seg82->SetNSlats(11);  
364         seg82->SetShift(shift);  
365         seg82->SetNPCBperSector(npcb7); 
366         seg82->SetSlatXPositions(xpos7);
367         seg82->SetSlatYPosition(ypos7);
368         seg82->SetPadSize(1., 10.); // DeltaX(non bending) = 2 * DeltaY(bending)
369         seg82->SetDAnod(0.25);
370         seg82->SetPadDivision(nseg4);
371         
372         fMUON->SetResponseModel(chamber-1, fResponse0);     
373         fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
374 }
375
376 //__________________________________________________________________________
377 void AliMUONFactory::BuildStation5() 
378 {       
379 //--------------------------------------------------------
380 // Configuration for Chamber TC9/10  (Station 5) ---------           
381 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
382
383         Int_t chamber=9;
384 //      ^^^^^^^^^^^^^^^^
385
386         fMUON->SetNsec(chamber-1,2);
387 //
388         AliMUONSegmentationSlat *seg91=new AliMUONSegmentationSlat(4);
389
390         Int_t   nseg4[4]={4, 4, 2, 1};
391         Float_t shift = 1.5/2.;
392         Int_t   npcb9[52] = {0,0,0,3,
393                              0,0,0,4,
394                              0,0,2,3,
395                              0,0,3,3,
396                              0,2,2,2,
397                              0,2,2,2,
398                              0,1,2,2, 
399                              0,2,2,2, 
400                              0,2,2,2, 
401                              0,0,3,3, 
402                              0,0,2,3, 
403                              0,0,0,4, 
404                              0,0,0,3};   
405         
406         Float_t xpos9[13]   = {2., 2., 2., 2., 2., 2., 40.5, 2., 2., 2., 2., 2., 2.};
407         Float_t ypos9       = -(20.+6.*(40.-2.*shift));
408         
409         seg91->SetNSlats(13);  
410         seg91->SetShift(shift);  
411         seg91->SetNPCBperSector(npcb9); 
412         seg91->SetSlatXPositions(xpos9);
413         seg91->SetSlatYPosition(ypos9);
414         seg91->SetPadSize(10.,0.5);
415         seg91->SetDAnod(0.25);
416         seg91->SetPadDivision(nseg4);
417         fMUON->SetSegmentationModel(chamber-1, 1, seg91);
418         
419         AliMUONSegmentationSlatN *seg92=new AliMUONSegmentationSlatN(4);
420         
421         fMUON->SetSegmentationModel(chamber-1, 2, seg92);
422         seg92->SetNSlats(13);  
423         seg92->SetShift(shift);   
424         seg92->SetNPCBperSector(npcb9); 
425         seg92->SetSlatXPositions(xpos9);
426         seg92->SetSlatYPosition(ypos9);
427         seg92->SetPadSize(1., 10.); // DeltaX(non bending) = 2 * DeltaY(bending)
428         seg92->SetDAnod(0.25);
429         seg92->SetPadDivision(nseg4);
430         
431         fMUON->SetResponseModel(chamber-1, fResponse0);     
432         fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
433         
434         chamber=10;
435 //      ^^^^^^^^^
436         fMUON->SetNsec(chamber-1,2);
437 //
438         AliMUONSegmentationSlat *seg101=new AliMUONSegmentationSlat(4);
439         
440         seg101->SetNSlats(13);  
441         seg101->SetShift(shift);  
442         seg101->SetNPCBperSector(npcb9); 
443         seg101->SetSlatXPositions(xpos9);
444         seg101->SetSlatYPosition(ypos9);
445         seg101->SetPadSize(10.,0.5);
446         seg101->SetDAnod(0.25);
447         seg101->SetPadDivision(nseg4);
448         fMUON->SetSegmentationModel(chamber-1, 1, seg101);
449         
450         AliMUONSegmentationSlatN *seg102=new AliMUONSegmentationSlatN(4);
451         
452         fMUON->SetSegmentationModel(chamber-1, 2, seg102);
453         seg102->SetNSlats(13);  
454         seg102->SetShift(shift);   
455         seg102->SetNPCBperSector(npcb9); 
456         seg102->SetSlatXPositions(xpos9);
457         seg102->SetSlatYPosition(ypos9);
458         seg102->SetPadSize(1., 10.); // DeltaX(non bending) = 2 * DeltaY(bending)
459         seg102->SetDAnod(0.25);
460         seg102->SetPadDivision(nseg4);
461         
462         fMUON->SetResponseModel(chamber-1, fResponse0);     
463         fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
464 }
465
466 //__________________________________________________________________________
467 void AliMUONFactory::BuildStation6() 
468 {       
469 //--------------------------------------------------------
470 // Configuration for Trigger Stations -------------------- 
471 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
472
473 // Cluster-size off
474         AliMUONResponseTrigger* responseTrigger0 =  new AliMUONResponseTrigger;
475 // Cluster-size on  
476 // AliMUONResponseTriggerV1* responseTrigger0 =  new AliMUONResponseTriggerV1;
477  
478         Int_t chamber=11;
479         fMUON->SetNsec(chamber-1,2);
480         AliMUONSegmentationTriggerX *seg111=new AliMUONSegmentationTriggerX;
481         fMUON->SetSegmentationModel(chamber-1, 1, seg111);
482         AliMUONSegmentationTriggerY *seg112=new AliMUONSegmentationTriggerY;
483         fMUON->SetSegmentationModel(chamber-1, 2, seg112);
484         
485         fMUON->SetResponseModel(chamber-1, responseTrigger0);      
486         fMUON->Chamber(chamber-1).SetChargeCorrel(0); // same charge on cathodes
487         
488  
489         chamber=12;
490         fMUON->SetNsec(chamber-1,2);
491         AliMUONSegmentationTriggerX *seg121=new AliMUONSegmentationTriggerX;
492         fMUON->SetSegmentationModel(chamber-1, 1, seg121);
493         AliMUONSegmentationTriggerY *seg122=new AliMUONSegmentationTriggerY;
494         fMUON->SetSegmentationModel(chamber-1, 2, seg122);
495         
496         fMUON->SetResponseModel(chamber-1, responseTrigger0);
497         fMUON->Chamber(chamber-1).SetChargeCorrel(0); // same charge on cathodes
498         
499         chamber=13;
500         fMUON->SetNsec(chamber-1,2);
501         AliMUONSegmentationTriggerX *seg131=new AliMUONSegmentationTriggerX;
502         fMUON->SetSegmentationModel(chamber-1, 1, seg131);
503         AliMUONSegmentationTriggerY *seg132=new AliMUONSegmentationTriggerY;
504         fMUON->SetSegmentationModel(chamber-1, 2, seg132);
505         fMUON->SetResponseModel(chamber-1, responseTrigger0);      
506         fMUON->Chamber(chamber-1).SetChargeCorrel(0); // same charge on cathodes
507         
508         chamber=14;
509         fMUON->SetNsec(chamber-1,2);
510         AliMUONSegmentationTriggerX *seg141=new AliMUONSegmentationTriggerX;
511         fMUON->SetSegmentationModel(chamber-1, 1, seg141);
512         AliMUONSegmentationTriggerY *seg142=new AliMUONSegmentationTriggerY;
513         fMUON->SetSegmentationModel(chamber-1, 2, seg142);
514         
515         fMUON->SetResponseModel(chamber-1, responseTrigger0); 
516         fMUON->Chamber(chamber-1).SetChargeCorrel(0); // same charge on cathodes
517 }       
518
519 //__________________________________________________________________________
520 void AliMUONFactory::Build(AliMUON* where, const char* what) 
521 {
522 //
523 // Construct MUON from chambers, segmentation and responses
524 //
525
526     fMUON = where;
527     char tmp[20];
528     strcpy(tmp, what);
529
530     if (strcmp(tmp, "default")==0) {
531       // Set default parameters
532       fMUON->SetIshunt(0);
533       fMUON->SetMaxStepGas(0.1);
534       fMUON->SetMaxStepAlu(0.1);
535
536       // Build all stations
537       BuildCommon();
538       BuildStation1();
539       BuildStation2();
540       BuildStation3();
541       BuildStation4();
542       BuildStation5();
543       BuildStation6();
544     } 
545     else {
546       if(fMUON->GetDebug()) {
547         printf("\nAliMUONFactory: --------AliMUONFactory------------------------------");
548         printf("\nAliMUONFactory:  Non default version of MUON selected               ");
549         printf("\nAliMUONFactory:  You have to construct yourself the MUON elements !!");       
550         printf("\nAliMUONFactory: ----------------------------------------------------");
551       }
552     }
553 }
554
555 //__________________________________________________________________________
556 void AliMUONFactory::BuildStation(AliMUON* where, Int_t stationNumber) 
557 {
558 //
559 // Construct MUON from chambers, segmentation and responses
560 //
561 // Version 0
562 //
563 // First define the number of planes that are segmented (1 or 2) by a call
564 // to SetNsec.
565 // Then chose for each chamber (chamber plane) the segmentation
566 // and response model.
567 // They should be equal for the two chambers of each station. In a future
568 // version this will be enforced.
569 //
570
571     fMUON = where;
572     if (!fResponse0) BuildCommon(); 
573     
574     switch (stationNumber) {    
575       case 1:  BuildStation1(); break;
576       case 2:  BuildStation2(); break;
577       case 3:  BuildStation3(); break;
578       case 4:  BuildStation4(); break;
579       case 5:  BuildStation5(); break;
580       case 6:  BuildStation6(); break;
581     
582       default: Fatal("Build", "Wrong station number");
583     }  
584 }