]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONFactory.cxx
2D Invariant Mass plots
[u/mrichter/AliRoot.git] / MUON / AliMUONFactory.cxx
CommitLineData
be3bb6c1 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
88cb7938 20/* $Id$ */
ba030c0e 21
be3bb6c1 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
38ClassImp(AliMUONFactory)
39
ba030c0e 40//__________________________________________________________________________
41AliMUONFactory::AliMUONFactory()
42 : TObject(),
43 fMUON(0),
44 fResponse0(0)
be3bb6c1 45{
46//
ba030c0e 47}
be3bb6c1 48
11ca64ac 49//__________________________________________________________________________
50AliMUONFactory::AliMUONFactory(const AliMUONFactory& rhs)
51 : TObject(rhs)
52{
53// Protected copy constructor
54
55 Fatal("AliMUONFactoryModule", "Not implemented.");
56}
57
ba030c0e 58//__________________________________________________________________________
59AliMUONFactory::~AliMUONFactory()
60{
be3bb6c1 61//
ba030c0e 62}
63
11ca64ac 64//__________________________________________________________________________
65AliMUONFactory& 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
ba030c0e 76//__________________________________________________________________________
77void AliMUONFactory::BuildCommon()
78{
be3bb6c1 79//
ba030c0e 80// Construct the default response.
be3bb6c1 81//
ba030c0e 82
be3bb6c1 83 // Default response: 5 mm of gas
ba030c0e 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.);
4ac9d21e 89 fResponse0->SetChargeSlope(10);
ba030c0e 90 fResponse0->SetChargeSpread(0.18, 0.18);
91 fResponse0->SetMaxAdc(4096);
4ac9d21e 92 fResponse0->SetSaturation(3000);
ba030c0e 93 fResponse0->SetZeroSuppression(6);
94}
95
96//__________________________________________________________________________
97void AliMUONFactory::BuildStation1()
98{
99//--------------------------------------------------------
100// Configuration for Chamber TC1/2 (Station 1) ----------
101//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
102
be3bb6c1 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);
4ac9d21e 117 responseSt1->SetSaturation(3000);
be3bb6c1 118 responseSt1->SetZeroSuppression(6);
119
ba030c0e 120 //--------------------------------------------------------
121 // Configuration for Chamber TC1/2 (Station 1) ----------
122
be3bb6c1 123 Float_t rseg1[4]={17.5, 55.2, 71.3, 95.5};
124 Int_t nseg1[4]={4, 4, 2, 1};
125//
ba030c0e 126 Int_t chamber=1;
127// ^^^^^^^^^^^^^^^^
128 fMUON->SetNsec(chamber-1,2);
be3bb6c1 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
ba030c0e 137 fMUON->SetSegmentationModel(chamber-1, 1, seg11);
be3bb6c1 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
ba030c0e 145 fMUON->SetSegmentationModel(chamber-1, 2, seg12);
be3bb6c1 146
ba030c0e 147 fMUON->SetResponseModel(chamber-1, responseSt1); // special response
148 fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
be3bb6c1 149
150 chamber=2;
151// ^^^^^^^^^
152//
ba030c0e 153 fMUON->SetNsec(chamber-1,2);
be3bb6c1 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);
ba030c0e 160 fMUON->SetSegmentationModel(chamber-1, 1, seg21);
be3bb6c1 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);
ba030c0e 167 fMUON->SetSegmentationModel(chamber-1, 2, seg22);
be3bb6c1 168
ba030c0e 169 fMUON->SetResponseModel(chamber-1, responseSt1); // special response
170 fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
be3bb6c1 171
ba030c0e 172}
173
174//__________________________________________________________________________
175void AliMUONFactory::BuildStation2()
176{
be3bb6c1 177//
178//--------------------------------------------------------
179// Configuration for Chamber TC3/4 (Station 2) -----------
180///^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
181// Float_t rseg2[4]={23.5, 87.7, 122.4, 122.5};
ba030c0e 182
9af8b94b 183 Float_t rseg2[4]={23.5, 53.5, 90.5, 122.5};
be3bb6c1 184 Int_t nseg2[4]={4, 4, 2, 1};
185//
ba030c0e 186 Int_t chamber=3;
187// ^^^^^^^^^^^^^^^^
188 fMUON->SetNsec(chamber-1,2);
be3bb6c1 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);
ba030c0e 195 fMUON->SetSegmentationModel(chamber-1, 1, seg31);
be3bb6c1 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
ba030c0e 203 fMUON->SetSegmentationModel(chamber-1, 2, seg32);
be3bb6c1 204
ba030c0e 205 fMUON->SetResponseModel(chamber-1, fResponse0);
206 fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
be3bb6c1 207
208 chamber=4;
209// ^^^^^^^^^
210//
ba030c0e 211 fMUON->SetNsec(chamber-1,2);
be3bb6c1 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);
ba030c0e 218 fMUON->SetSegmentationModel(chamber-1, 1, seg41);
be3bb6c1 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
ba030c0e 226 fMUON->SetSegmentationModel(chamber-1, 2, seg42);
be3bb6c1 227
ba030c0e 228 fMUON->SetResponseModel(chamber-1, fResponse0);
229 fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
230}
be3bb6c1 231
232
ba030c0e 233//__________________________________________________________________________
234void AliMUONFactory::BuildStation3()
235{
be3bb6c1 236//--------------------------------------------------------
237// Configuration for Chamber TC5/6 (Station 3) ----------
238//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ba030c0e 239
be3bb6c1 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
ba030c0e 255 Int_t chamber=5;
256 fMUON->SetNsec(chamber-1,2);
be3bb6c1 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);
ba030c0e 266 fMUON->SetSegmentationModel(chamber-1, 1, seg51);
be3bb6c1 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);
ba030c0e 277 fMUON->SetSegmentationModel(chamber-1, 2, seg52);
278 fMUON->SetResponseModel(chamber-1, fResponse0);
279 fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
be3bb6c1 280
281 chamber=6;
ba030c0e 282 fMUON->SetNsec(chamber-1,2);
be3bb6c1 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);
ba030c0e 292 fMUON->SetSegmentationModel(chamber-1, 1, seg61);
be3bb6c1 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);
ba030c0e 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
be3bb6c1 308
ba030c0e 309//__________________________________________________________________________
310void AliMUONFactory::BuildStation4()
311{
be3bb6c1 312//--------------------------------------------------------
313// Configuration for Chamber TC7/8 (Station 4) ----------
314//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
315
316 Int_t nseg4[4]={4, 4, 2, 1};
317
ba030c0e 318 Int_t chamber=7;
319// ^^^^^^^^^^^^^^^^
be3bb6c1 320
ba030c0e 321 fMUON->SetNsec(chamber-1,2);
be3bb6c1 322//
323 AliMUONSegmentationSlat *seg71=new AliMUONSegmentationSlat(4);
ba030c0e 324 Float_t shift = 1.5/2.;
be3bb6c1 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);
ba030c0e 348 fMUON->SetSegmentationModel(chamber-1, 1, seg71);
be3bb6c1 349
350 AliMUONSegmentationSlatN *seg72=new AliMUONSegmentationSlatN(4);
351
ba030c0e 352 fMUON->SetSegmentationModel(chamber-1, 2, seg72);
be3bb6c1 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
ba030c0e 362 fMUON->SetResponseModel(chamber-1, fResponse0);
363 fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
be3bb6c1 364
365 chamber=8;
366// ^^^^^^^^^
ba030c0e 367 fMUON->SetNsec(chamber-1,2);
be3bb6c1 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);
ba030c0e 379 fMUON->SetSegmentationModel(chamber-1, 1, seg81);
be3bb6c1 380
381 AliMUONSegmentationSlat *seg82=new AliMUONSegmentationSlatN(4);
382
ba030c0e 383 fMUON->SetSegmentationModel(chamber-1, 2, seg82);
be3bb6c1 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
ba030c0e 393 fMUON->SetResponseModel(chamber-1, fResponse0);
394 fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
395}
be3bb6c1 396
ba030c0e 397//__________________________________________________________________________
398void AliMUONFactory::BuildStation5()
399{
be3bb6c1 400//--------------------------------------------------------
401// Configuration for Chamber TC9/10 (Station 5) ---------
402//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
be3bb6c1 403
ba030c0e 404 Int_t chamber=9;
405// ^^^^^^^^^^^^^^^^
406
407 fMUON->SetNsec(chamber-1,2);
be3bb6c1 408//
409 AliMUONSegmentationSlat *seg91=new AliMUONSegmentationSlat(4);
ba030c0e 410
411 Int_t nseg4[4]={4, 4, 2, 1};
412 Float_t shift = 1.5/2.;
be3bb6c1 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);
ba030c0e 438 fMUON->SetSegmentationModel(chamber-1, 1, seg91);
be3bb6c1 439
440 AliMUONSegmentationSlatN *seg92=new AliMUONSegmentationSlatN(4);
441
ba030c0e 442 fMUON->SetSegmentationModel(chamber-1, 2, seg92);
be3bb6c1 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
ba030c0e 452 fMUON->SetResponseModel(chamber-1, fResponse0);
453 fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
be3bb6c1 454
455 chamber=10;
456// ^^^^^^^^^
ba030c0e 457 fMUON->SetNsec(chamber-1,2);
be3bb6c1 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);
ba030c0e 469 fMUON->SetSegmentationModel(chamber-1, 1, seg101);
be3bb6c1 470
471 AliMUONSegmentationSlatN *seg102=new AliMUONSegmentationSlatN(4);
472
ba030c0e 473 fMUON->SetSegmentationModel(chamber-1, 2, seg102);
be3bb6c1 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
ba030c0e 483 fMUON->SetResponseModel(chamber-1, fResponse0);
484 fMUON->Chamber(chamber-1).SetChargeCorrel(0.11); // 11% charge spread
485}
be3bb6c1 486
ba030c0e 487//__________________________________________________________________________
488void AliMUONFactory::BuildStation6()
489{
be3bb6c1 490//--------------------------------------------------------
491// Configuration for Trigger Stations --------------------
492//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ba030c0e 493
be3bb6c1 494// Cluster-size off
495 AliMUONResponseTrigger* responseTrigger0 = new AliMUONResponseTrigger;
496// Cluster-size on
497// AliMUONResponseTriggerV1* responseTrigger0 = new AliMUONResponseTriggerV1;
498
ba030c0e 499 Int_t chamber=11;
500 fMUON->SetNsec(chamber-1,2);
be3bb6c1 501 AliMUONSegmentationTriggerX *seg111=new AliMUONSegmentationTriggerX;
ba030c0e 502 fMUON->SetSegmentationModel(chamber-1, 1, seg111);
be3bb6c1 503 AliMUONSegmentationTriggerY *seg112=new AliMUONSegmentationTriggerY;
ba030c0e 504 fMUON->SetSegmentationModel(chamber-1, 2, seg112);
be3bb6c1 505
ba030c0e 506 fMUON->SetResponseModel(chamber-1, responseTrigger0);
507 fMUON->Chamber(chamber-1).SetChargeCorrel(0); // same charge on cathodes
be3bb6c1 508
509
510 chamber=12;
ba030c0e 511 fMUON->SetNsec(chamber-1,2);
be3bb6c1 512 AliMUONSegmentationTriggerX *seg121=new AliMUONSegmentationTriggerX;
ba030c0e 513 fMUON->SetSegmentationModel(chamber-1, 1, seg121);
be3bb6c1 514 AliMUONSegmentationTriggerY *seg122=new AliMUONSegmentationTriggerY;
ba030c0e 515 fMUON->SetSegmentationModel(chamber-1, 2, seg122);
be3bb6c1 516
ba030c0e 517 fMUON->SetResponseModel(chamber-1, responseTrigger0);
518 fMUON->Chamber(chamber-1).SetChargeCorrel(0); // same charge on cathodes
be3bb6c1 519
520 chamber=13;
ba030c0e 521 fMUON->SetNsec(chamber-1,2);
be3bb6c1 522 AliMUONSegmentationTriggerX *seg131=new AliMUONSegmentationTriggerX;
ba030c0e 523 fMUON->SetSegmentationModel(chamber-1, 1, seg131);
be3bb6c1 524 AliMUONSegmentationTriggerY *seg132=new AliMUONSegmentationTriggerY;
ba030c0e 525 fMUON->SetSegmentationModel(chamber-1, 2, seg132);
526 fMUON->SetResponseModel(chamber-1, responseTrigger0);
527 fMUON->Chamber(chamber-1).SetChargeCorrel(0); // same charge on cathodes
be3bb6c1 528
529 chamber=14;
ba030c0e 530 fMUON->SetNsec(chamber-1,2);
be3bb6c1 531 AliMUONSegmentationTriggerX *seg141=new AliMUONSegmentationTriggerX;
ba030c0e 532 fMUON->SetSegmentationModel(chamber-1, 1, seg141);
be3bb6c1 533 AliMUONSegmentationTriggerY *seg142=new AliMUONSegmentationTriggerY;
ba030c0e 534 fMUON->SetSegmentationModel(chamber-1, 2, seg142);
be3bb6c1 535
ba030c0e 536 fMUON->SetResponseModel(chamber-1, responseTrigger0);
537 fMUON->Chamber(chamber-1).SetChargeCorrel(0); // same charge on cathodes
538}
539
540//__________________________________________________________________________
541void 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()) {
9e1a0ddb 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 }
be3bb6c1 573 }
574}
575
ba030c0e 576//__________________________________________________________________________
577void 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}