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