]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONFactoryV2.cxx
Changes suggested by Effective C++ (F.Carminati)
[u/mrichter/AliRoot.git] / MUON / AliMUONFactoryV2.cxx
CommitLineData
a713db22 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 "AliMUONFactoryV2.h"
23#include "AliRun.h"
24#include "AliSegmentation.h"
25#include "AliLog.h"
26
27#include "AliMUON.h"
28#include "AliMUONConstants.h"
29#include "AliMUONTriggerConstants.h"
30#include "AliMUONChamber.h"
31#include "AliMUONResponseV0.h"
32#include "AliMUONGeometryModule.h"
33#include "AliMUONGeometryStore.h"
34#include "AliMUONGeometrySegmentation.h"
35#include "AliMUONSt12QuadrantSegmentation.h"
36#include "AliMUONSt345SlatSegmentation.h"
37#include "AliMUONTriggerSegmentation.h"
38#include "AliMUONResponseTrigger.h"
39
40ClassImp(AliMUONFactoryV2)
41
42//__________________________________________________________________________
dd1f2c35 43 AliMUONFactoryV2::AliMUONFactoryV2(const char* name)
44 : AliMUONFactory(name),
a713db22 45 fMUON(0),
dd1f2c35 46 fResponse0(0),
47 fDESegmentations(0)
a713db22 48{
49 // FactoryV2 inherite from Factory for switching in AliMUONv1::Init()
50 // to be changed when old segmentation will be removed.
dd1f2c35 51
52 fDESegmentations = new TObjArray();
53 fDESegmentations->SetOwner(kTRUE);
54}
55
56//__________________________________________________________________________
57 AliMUONFactoryV2::AliMUONFactoryV2()
58 : AliMUONFactory(),
59 fMUON(0),
60 fResponse0(0),
61 fDESegmentations(0)
62{
63// Default constructor
a713db22 64}
65
66//__________________________________________________________________________
67AliMUONFactoryV2::AliMUONFactoryV2(const AliMUONFactoryV2& rhs)
68 : AliMUONFactory(rhs)
69{
70 // Protected copy constructor
71
72 AliFatal("Not implemented.");
73}
74
75//__________________________________________________________________________
76
77AliMUONFactoryV2::~AliMUONFactoryV2()
78{
dd1f2c35 79// Destructor
80
81 delete fDESegmentations;
a713db22 82}
83
84//__________________________________________________________________________
85AliMUONFactoryV2& AliMUONFactoryV2::operator=(const AliMUONFactoryV2& rhs)
86{
87 // Protected assignement operator
88
89 if (this == &rhs) return *this;
90
91 AliFatal("Not implemented.");
92
93 return *this;
94}
95
96//__________________________________________________________________________
97void AliMUONFactoryV2::BuildCommon()
98{
99 //
100 // Construct the default response.
101 //
102
103 // Default response: 5 mm of gas
104 fResponse0 = new AliMUONResponseV0;
105 fResponse0->SetSqrtKx3AndDeriveKx2Kx4(0.7131); // sqrt(0.5085)
106 fResponse0->SetSqrtKy3AndDeriveKy2Ky4(0.7642); // sqrt(0.5840)
107 fResponse0->SetPitch(AliMUONConstants::Pitch()); // anode-cathode distance
108 fResponse0->SetSigmaIntegration(10.);
109 fResponse0->SetChargeSlope(10);
110 fResponse0->SetChargeSpread(0.18, 0.18);
111 fResponse0->SetMaxAdc(4096);
112 fResponse0->SetSaturation(3000);
113 fResponse0->SetZeroSuppression(6);
79b4ba23 114}
115
a713db22 116//__________________________________________________________________________
117void AliMUONFactoryV2::BuildStation1()
118{
119 //--------------------------------------------------------
120 // Configuration for Chamber TC1/2 (Station 1) ----------
121 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
122
123
124 // Response for 4 mm of gas (station 1)
125 // automatic consistency with width of sensitive medium in CreateGeometry ????
126 AliMUONResponseV0* responseSt1 = new AliMUONResponseV0;
127 // Mathieson parameters from L.Kharmandarian's thesis, page 190
128 responseSt1->SetSqrtKx3AndDeriveKx2Kx4(0.7000); // sqrt(0.4900)
129 responseSt1->SetSqrtKy3AndDeriveKy2Ky4(0.7550); // sqrt(0.5700)
130 responseSt1->SetPitch(AliMUONConstants::PitchSt1()); // anode-cathode distance
131 responseSt1->SetSigmaIntegration(10.);
132 // ChargeSlope larger to compensate for the smaller anode-cathode distance
133 // and keep the same most probable ADC channel for mip's
134 responseSt1->SetChargeSlope(62.5);
135 // assumed proportionality to anode-cathode distance for ChargeSpread
136 responseSt1->SetChargeSpread(0.144, 0.144);
137 responseSt1->SetMaxAdc(4096);
138 responseSt1->SetSaturation(3000);
139 responseSt1->SetZeroSuppression(6);
140
141 // Quadrant segmentations:
142 AliMUONSt12QuadrantSegmentation* bendSt1
143 = new AliMUONSt12QuadrantSegmentation(kStation1, kBendingPlane);
144 AliMUONSt12QuadrantSegmentation* nonbendSt1
145 = new AliMUONSt12QuadrantSegmentation(kStation1, kNonBendingPlane);
dd1f2c35 146
147 // Add in the array (for safe deleting)
148 fDESegmentations->Add(bendSt1);
149 fDESegmentations->Add(nonbendSt1);
a713db22 150
151 AliMUONGeometrySegmentation* segmentation[2];
152
153 for (Int_t chamber = 0; chamber < 2; chamber++) {
154
155 segmentation[0] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
156 segmentation[1] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
79b4ba23 157
a713db22 158 // id detection elt for chamber 1
159 Int_t id0 = (chamber+1)*100;
160
161 //--------------------------------------------------------
162 // Configuration for Chamber TC1/2 (Station 1) ----------
163
164
165 fMUON->SetNsec(chamber,2);
166
167 // cathode 0
168 segmentation[0]->Add(id0, bendSt1);
169 segmentation[0]->Add(id0 + 1, nonbendSt1);
170 segmentation[0]->Add(id0 + 50, bendSt1);
79b4ba23 171 segmentation[0]->Add(id0 + 51, nonbendSt1);
172 fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);
a713db22 173
174 // cathode 1
175 segmentation[1]->Add(id0, nonbendSt1);
176 segmentation[1]->Add(id0 + 1, bendSt1);
177 segmentation[1]->Add(id0 + 50, nonbendSt1);
178 segmentation[1]->Add(id0 + 51, bendSt1);
179 fMUON->SetSegmentationModel(chamber, 2, segmentation[1]);
79b4ba23 180
181 fMUON->SetResponseModel(chamber, responseSt1); // special response
a713db22 182 fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
79b4ba23 183
a713db22 184 }
185}
186
187//__________________________________________________________________________
188void AliMUONFactoryV2::BuildStation2()
189{
190 //
191 //--------------------------------------------------------
192 // Configuration for Chamber TC3/4 (Station 2) -----------
193 ///^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
194
195
196 // Quadrant segmentations:
197 AliMUONSt12QuadrantSegmentation* bendSt2
198 = new AliMUONSt12QuadrantSegmentation(kStation2, kBendingPlane);
199 AliMUONSt12QuadrantSegmentation* nonbendSt2
200 = new AliMUONSt12QuadrantSegmentation(kStation2, kNonBendingPlane);
201
dd1f2c35 202 // Add in the array (for safe deleting)
203 fDESegmentations->Add(bendSt2);
204 fDESegmentations->Add(nonbendSt2);
205
a713db22 206 AliMUONGeometrySegmentation* segmentation[2];
207
208 for (Int_t chamber = 2; chamber < 4; chamber++) {
209
210 segmentation[0] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
211 segmentation[1] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
79b4ba23 212
a713db22 213 // id detection elt for chamber 1
214 Int_t id0 = (chamber+1)*100;
215
216 //--------------------------------------------------------
217 // Configuration for Chamber TC3/4 (Station 2) ----------
218
219
220 fMUON->SetNsec(chamber,2);
221
222 // cathode 0
223 segmentation[0]->Add(id0, bendSt2);
224 segmentation[0]->Add(id0 + 1, nonbendSt2);
225 segmentation[0]->Add(id0 + 50, bendSt2);
79b4ba23 226 segmentation[0]->Add(id0 + 51, nonbendSt2);
227 fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);
a713db22 228
229 // cathode 1
230 segmentation[1]->Add(id0, nonbendSt2);
231 segmentation[1]->Add(id0 + 1, bendSt2);
232 segmentation[1]->Add(id0 + 50, nonbendSt2);
233 segmentation[1]->Add(id0 + 51, bendSt2);
234 fMUON->SetSegmentationModel(chamber, 2, segmentation[1]);
79b4ba23 235
236 fMUON->SetResponseModel(chamber, fResponse0); // normal response
a713db22 237 fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
79b4ba23 238
a713db22 239 }
79b4ba23 240}
241
242
a713db22 243//__________________________________________________________________________
244void AliMUONFactoryV2::BuildStation3()
245{
246 //--------------------------------------------------------
247 // Configuration for Chamber TC5/6 (Station 3) ----------
248 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
249
250 AliMUONGeometrySegmentation* segmentation[2];
251
252 //Slats Segmentations
253 AliMUONSt345SlatSegmentation *slatsegB[4]; // Types of segmentation for St3
254 AliMUONSt345SlatSegmentation *slatsegNB[4];
255 // Bending
256
257 Int_t ndiv[4] ={ 4, 4, 2, 1}; // densities zones
258 for(Int_t i=0; i<4; i++) {
259 slatsegB[i] = new AliMUONSt345SlatSegmentation(1);
dd1f2c35 260 fDESegmentations->Add(slatsegB[i]);
a713db22 261 slatsegB[i]->SetPadSize(10.,0.5);
262 slatsegB[i]->SetPadDivision(ndiv);
263 slatsegB[i]->SetId(1); // Id elt ????
264 slatsegB[i]->SetDAnod(AliMUONConstants::Pitch());
265 slatsegNB[i] = new AliMUONSt345SlatSegmentation(0);
dd1f2c35 266 fDESegmentations->Add(slatsegNB[i]);
a713db22 267 slatsegNB[i]->SetPadSize(0.713,10.); // Nbending
268 slatsegNB[i]->SetPadDivision(ndiv);
269 slatsegNB[i]->SetId(1);
270 slatsegNB[i]->SetDAnod(AliMUONConstants::Pitch());
271 }
272
273 // Type 112200 for 500, 501, 508, 509, 510, 517
274 // in Ch5 (similar for Ch6) for the futur official numbering
275 // Type 112200 for 503, 504, 505, 555, 554, 553
276 // in Ch5 (similar for Ch6) actual numbering in the code to be changed in jan05
277 Int_t n0[4] = { 0, 2, 2, 0 };
278 slatsegB[0]->SetPcbBoards(n0);
279 slatsegB[0]->Init(0);
280 slatsegNB[0]->SetPcbBoards(n0);
281 slatsegNB[0]->Init(0);
282
283 // Type 122200 for 502, 507, 511, 516 (similar in Ch6)
284 // for future official numbering of ALICE
285 // Type 122200 for 502, 506, 556, 552 (similiarin Ch6)
286 // for actual numbering in muon code to be changed in jan05
287 Int_t n1[4] = { 0, 1, 3, 0 };
288 slatsegB[1]->SetPcbBoards(n1);
289 slatsegB[1]->Init(0);
290 slatsegNB[1]->SetPcbBoards(n1);
291 slatsegNB[1]->Init(0);
292
293 // Type 222000 for 503, 506, 512, 515 (similar in Ch6)
294 // for future official numbering of ALICE
295 // Type 222000 for 501, 507, 557, 551 (similiarin Ch6)
296 // for actual numbering in muon code to be changed in jan05
297 Int_t n2[4] = { 0, 0, 3, 0 };
298 slatsegB[2]->SetPcbBoards(n2);
299 slatsegB[2]->Init(0);
300 slatsegNB[2]->SetPcbBoards(n2);
301 slatsegNB[2]->Init(0);
302
303 // Type 220000 for 504, 505, 513, 514 (similar in Ch6)
304 // for future official numbering of ALICE
305 // Type 220000 for 500, 508, 558, 550 (similiarin Ch6)
306 // for actual numbering in muon code to be changed in jan05
307 Int_t n3[4] = { 0, 0, 2, 0 };
308 slatsegB[3]->SetPcbBoards(n3);
309 slatsegB[3]->Init(0);
310 slatsegNB[3]->SetPcbBoards(n3);
311 slatsegNB[3]->Init(0);
312
313 for (Int_t chamber = 4; chamber < 6; chamber++) {
314
315 segmentation[0] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
316 segmentation[1] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
79b4ba23 317
a713db22 318 // id detection elt for chamber 1
319 Int_t id0 = (chamber+1)*100;
320
321 //--------------------------------------------------------
322 // Configuration for Chamber TC3/4 (Station 2) ----------
323
324
325 fMUON->SetNsec(chamber,2);
326
327 // cathode 0
328 // type 220000
329 segmentation[0]->Add(id0, slatsegB[3]);
330 segmentation[0]->Add(id0+ 8, slatsegB[3]);
331 segmentation[0]->Add(id0+50, slatsegB[3]);
332 segmentation[0]->Add(id0+58, slatsegB[3]);
333 // type 222000
334 segmentation[0]->Add(id0+ 1, slatsegB[2]);
335 segmentation[0]->Add(id0+ 7, slatsegB[2]);
336 segmentation[0]->Add(id0+51, slatsegB[2]);
337 segmentation[0]->Add(id0+57, slatsegB[2]);
338 // type 122200
339 segmentation[0]->Add(id0+ 2, slatsegB[1]);
340 segmentation[0]->Add(id0+ 6, slatsegB[1]);
341 segmentation[0]->Add(id0+52, slatsegB[1]);
342 segmentation[0]->Add(id0+56, slatsegB[1]);
343 // type 112200
344 segmentation[0]->Add(id0+ 3, slatsegB[0]);
345 segmentation[0]->Add(id0+ 4, slatsegB[0]);
346 segmentation[0]->Add(id0+ 5, slatsegB[0]);
347 segmentation[0]->Add(id0+53, slatsegB[0]);
348 segmentation[0]->Add(id0+54, slatsegB[0]);
349 segmentation[0]->Add(id0+55, slatsegB[0]);
79b4ba23 350 fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);
a713db22 351
352 // cathode 1
353 // type 220000
354 segmentation[1]->Add(id0, slatsegNB[3]);
355 segmentation[1]->Add(id0+ 8, slatsegNB[3]);
356 segmentation[1]->Add(id0+50, slatsegNB[3]);
357 segmentation[1]->Add(id0+58, slatsegNB[3]);
358 // type 222000
359 segmentation[1]->Add(id0+ 1, slatsegNB[2]);
360 segmentation[1]->Add(id0+ 7, slatsegNB[2]);
361 segmentation[1]->Add(id0+51, slatsegNB[2]);
362 segmentation[1]->Add(id0+57, slatsegNB[2]);
363 // type 122200
364 segmentation[1]->Add(id0+ 2, slatsegNB[1]);
365 segmentation[1]->Add(id0+ 6, slatsegNB[1]);
366 segmentation[1]->Add(id0+52, slatsegNB[1]);
367 segmentation[1]->Add(id0+56, slatsegNB[1]);
368 // type 112200
369 segmentation[1]->Add(id0+ 3, slatsegNB[0]);
370 segmentation[1]->Add(id0+ 4, slatsegNB[0]);
371 segmentation[1]->Add(id0+ 5, slatsegNB[0]);
372 segmentation[1]->Add(id0+53, slatsegNB[0]);
373 segmentation[1]->Add(id0+54, slatsegNB[0]);
374 segmentation[1]->Add(id0+55, slatsegNB[0]);
375 fMUON->SetSegmentationModel(chamber, 2, segmentation[1]);
376
377 fMUON->SetResponseModel(chamber, fResponse0);
378 fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
379 }
380}
381
79b4ba23 382
a713db22 383//__________________________________________________________________________
384void AliMUONFactoryV2::BuildStation4()
385{
386 //--------------------------------------------------------
387 // Configuration for Chamber TC7/8 (Station 4) ----------
388 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
389
390
391 AliMUONGeometrySegmentation* segmentation[2];
392
393 //Slats Segmentations
394 AliMUONSt345SlatSegmentation *slatsegB[7]; // Types of segmentation for St4
395 AliMUONSt345SlatSegmentation *slatsegNB[7];
396 // Bending
397
398 Int_t ndiv[4] ={ 4, 4, 2, 1}; // densities zones
399 for(Int_t i = 0; i < 7; i++) {
400 slatsegB[i] = new AliMUONSt345SlatSegmentation(1);
dd1f2c35 401 fDESegmentations->Add(slatsegB[i]);
a713db22 402 slatsegB[i]->SetPadSize(10.,0.5);
403 slatsegB[i]->SetPadDivision(ndiv);
404 slatsegB[i]->SetId(1);
405 slatsegB[i]->SetDAnod(AliMUONConstants::Pitch());
406 slatsegNB[i] = new AliMUONSt345SlatSegmentation(0);
dd1f2c35 407 fDESegmentations->Add(slatsegNB[i]);
a713db22 408 slatsegNB[i]->SetPadSize(0.713,10.);
409 slatsegNB[i]->SetPadDivision(ndiv);
410 slatsegNB[i]->SetId(1);
411 slatsegNB[i]->SetDAnod(AliMUONConstants::Pitch());
412 }
413
414 Int_t n4[4] = { 0, 1, 2, 2 };
415 slatsegB[0]->SetPcbBoards(n4);
416 slatsegB[0]->Init(0); // 0 detection element id
417 slatsegNB[0]->SetPcbBoards(n4);
418 slatsegNB[0]->Init(0); // 0 detection element id
419
420 // Type 112233 for 701, 712, 714, 725 in Ch7 (similar for Ch8)
421 // for the futur official numbering
422 // Type 112233 for 705, 707, 755, 757 in Ch7 (similar for Ch8)
423 // actual numbering in the code to be changed in jan05
424 // Type 112233 for 901, 902, 911, 912, 914, 915, 924, 925 in Ch9
425 // (similar for Ch10) for the futur official numbering
426 // Type 112233 for 904, 905, 907, 908, 954, 955, 957, 958 in Ch9
427 // (similar for Ch10) actual numbering in the code to be changed in jan05
428 Int_t n5[4] = { 0, 2, 2, 2 };
429 slatsegB[1]->SetPcbBoards(n5);
430 slatsegB[1]->Init(0); // 0 detection element id
431 slatsegNB[1]->SetPcbBoards(n5);
432 slatsegNB[1]->Init(0); // 0 detection element id
433
434 // Type 112230 for 702, 711, 715, 724 in Ch7 (similar for Ch8)
435 // for the futur official numbering
436 // Type 112230 for 704, 708, 754, 758 in Ch7 (similar for Ch8)
437 // actual numbering in the code to be changed in jan05
438 Int_t n6[4] = { 0, 2, 2, 1 };
439 slatsegB[2]->SetPcbBoards(n6);
440 slatsegB[2]->Init(0); // 0 detection element id
441 slatsegNB[2]->SetPcbBoards(n6);
442 slatsegNB[2]->Init(0); // 0 detection element id
443
444 // Type 222330 for 703, 710, 716, 723 in Ch7 (similar for Ch8)
445 // for the futur official numbering
446 // Type 222330 for 703, 709, 753, 759 in Ch7 (similar for Ch8)
447 // actual numbering in the code to be changed in jan05
448 Int_t n7[4] = { 0, 0, 3, 2 };
449 slatsegB[3]->SetPcbBoards(n7);
450 slatsegB[3]->Init(0); // 0 detection element id
451 slatsegNB[3]->SetPcbBoards(n7);
452 slatsegNB[4]->Init(0); // 0 detection element id
453
454 // Type 223300 for 704, 709, 717, 722 in Ch7 (similar for Ch8)
455 // for the futur official numbering
456 // Type 223300 for 702, 710, 752, 760 in Ch7 (similar for Ch8)
457 // actual numbering in the code to be changed in jan05
458 Int_t n8[4] = { 0, 0, 2, 2 };
459 slatsegB[4]->SetPcbBoards(n8);
460 slatsegB[4]->Init(0); // 0 detection element id
461 slatsegNB[4]->SetPcbBoards(n8);
462 slatsegNB[4]->Init(0); // 0 detection element id
463
464 // Type 333000 for 705, 708, 718, 721 in Ch7 (similar for Ch8)
465 // for the futur official numbering
466 // Type 333000 for 701, 711, 751, 761 in Ch7 (similar for Ch8)
467 // actual numbering in the code to be changed in jan05
468 // Type 333000 for 906, 907, 919, 920 in Ch9 (similar for Ch10)
469 // for the futur official numbering
470 // Type 333000 for 900, 912, 950, 962 in Ch9 (similar for Ch10)
471 // actual numbering in the code to be changed in jan05
472 Int_t n9[4] = { 0, 0, 0, 3 };
473 slatsegB[5]->SetPcbBoards(n9);
474 slatsegB[5]->Init(0); // 0 detection element id
475 slatsegNB[5]->SetPcbBoards(n9);
476 slatsegNB[5]->Init(0); // 0 detection element id
477
478 // Type 330000 for 706, 707, 719, 720 in Ch7 (similar for Ch8)
479 // for the futur official numbering
480 // Type 330000 for 700, 712, 750, 762 in Ch7 (similar for Ch8)
481 // actual numbering in the code to be changed in jan05
482 Int_t n10[4] = { 0, 0, 0, 2 };
483 slatsegB[6]->SetPcbBoards(n10);
484 slatsegB[6]->Init(0); // 0 detection element id
485 slatsegNB[6]->SetPcbBoards(n10);
486 slatsegNB[6]->Init(0); // 0 detection element id
487
488
489 for (Int_t chamber = 6; chamber < 8; chamber++) {
490
491 segmentation[0] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
492 segmentation[1] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
79b4ba23 493
a713db22 494 // id detection elt for chamber 1
495 Int_t id0 = (chamber+1)*100;
496
497 //--------------------------------------------------------
498 // Configuration for Chamber TC6/7 (Station 4) ----------
499
500
501 fMUON->SetNsec(chamber,2);
502
503 // cathode 0
504 // type 122330
505 segmentation[0]->Add(id0+ 6, slatsegB[0]);
506 segmentation[0]->Add(id0+56, slatsegB[0]);
507
508 // type 112233
509 segmentation[0]->Add(id0+ 5, slatsegB[1]);
510 segmentation[0]->Add(id0+ 7, slatsegB[1]);
511 segmentation[0]->Add(id0+55, slatsegB[1]);
512 segmentation[0]->Add(id0+57, slatsegB[1]);
513
514 // type 112230
515 segmentation[0]->Add(id0+ 4, slatsegB[2]);
516 segmentation[0]->Add(id0+ 8, slatsegB[2]);
517 segmentation[0]->Add(id0+54, slatsegB[2]);
518 segmentation[0]->Add(id0+58, slatsegB[2]);
519
520 // type 222330
521 segmentation[0]->Add(id0+ 3, slatsegB[3]);
522 segmentation[0]->Add(id0+ 9, slatsegB[3]);
523 segmentation[0]->Add(id0+53, slatsegB[3]);
524 segmentation[0]->Add(id0+59, slatsegB[3]);
525
526 // type 223300
527 segmentation[0]->Add(id0+ 2, slatsegB[4]);
528 segmentation[0]->Add(id0+10, slatsegB[4]);
529 segmentation[0]->Add(id0+52, slatsegB[4]);
530 segmentation[0]->Add(id0+60, slatsegB[4]);
531
532 // type 333000
533 segmentation[0]->Add(id0+ 1, slatsegB[5]);
534 segmentation[0]->Add(id0+11, slatsegB[5]);
535 segmentation[0]->Add(id0+51, slatsegB[5]);
536 segmentation[0]->Add(id0+61, slatsegB[5]);
537
538 // type 330000
539 segmentation[0]->Add(id0 , slatsegB[6]);
540 segmentation[0]->Add(id0+12, slatsegB[6]);
541 segmentation[0]->Add(id0+50, slatsegB[6]);
542 segmentation[0]->Add(id0+62, slatsegB[6]);
79b4ba23 543 fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);
a713db22 544
545 // cathode 1
546 // type 122330
547 segmentation[1]->Add(id0+ 6, slatsegNB[0]);
548 segmentation[1]->Add(id0+56, slatsegNB[0]);
549
550 // type 112233
551 segmentation[1]->Add(id0+ 5, slatsegNB[1]);
552 segmentation[1]->Add(id0+ 7, slatsegNB[1]);
553 segmentation[1]->Add(id0+55, slatsegNB[1]);
554 segmentation[1]->Add(id0+57, slatsegNB[1]);
555
556 // type 112230
557 segmentation[1]->Add(id0+ 4, slatsegNB[2]);
558 segmentation[1]->Add(id0+ 8, slatsegNB[2]);
559 segmentation[1]->Add(id0+54, slatsegNB[2]);
560 segmentation[1]->Add(id0+58, slatsegNB[2]);
561
562 // type 222330
563 segmentation[1]->Add(id0+ 3, slatsegNB[3]);
564 segmentation[1]->Add(id0+ 9, slatsegNB[3]);
565 segmentation[1]->Add(id0+53, slatsegNB[3]);
566 segmentation[1]->Add(id0+59, slatsegNB[3]);
567
568 // type 223300
569 segmentation[1]->Add(id0+ 2, slatsegNB[4]);
570 segmentation[1]->Add(id0+10, slatsegNB[4]);
571 segmentation[1]->Add(id0+52, slatsegNB[4]);
572 segmentation[1]->Add(id0+60, slatsegNB[4]);
573
574 // type 333000
575 segmentation[1]->Add(id0+ 1, slatsegNB[5]);
576 segmentation[1]->Add(id0+11, slatsegNB[5]);
577 segmentation[1]->Add(id0+51, slatsegNB[5]);
578 segmentation[1]->Add(id0+61, slatsegNB[5]);
579
580 // type 330000
581 segmentation[1]->Add(id0 , slatsegNB[6]);
582 segmentation[1]->Add(id0+12, slatsegNB[6]);
583 segmentation[1]->Add(id0+50, slatsegNB[6]);
584 segmentation[1]->Add(id0+62, slatsegNB[6]);
585 fMUON->SetSegmentationModel(chamber, 2, segmentation[1]);
586
587 fMUON->SetResponseModel(chamber, fResponse0);
588 fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
589 }
590}
591
592//__________________________________________________________________________
593void AliMUONFactoryV2::BuildStation5()
79b4ba23 594{
a713db22 595 //--------------------------------------------------------
596 // Configuration for Chamber TC9/10 (Station 5) ---------
597 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
598
599 AliMUONGeometrySegmentation* segmentation[2];
600
601 //Slats Segmentations
602 AliMUONSt345SlatSegmentation *slatsegB[6]; // Types of segmentation for St5
603 AliMUONSt345SlatSegmentation *slatsegNB[6];
604 // Bending
605
606 Int_t ndiv[4] ={ 4, 4, 2, 1}; // densities zones
607 for(Int_t i = 0; i < 6; i++) {
608 slatsegB[i] = new AliMUONSt345SlatSegmentation(1);
dd1f2c35 609 fDESegmentations->Add(slatsegB[i]);
a713db22 610 slatsegB[i]->SetPadSize(10.,0.5);
611 slatsegB[i]->SetPadDivision(ndiv);
612 slatsegB[i]->SetId(1);
613 slatsegB[i]->SetDAnod(AliMUONConstants::Pitch());
614 slatsegNB[i] = new AliMUONSt345SlatSegmentation(0);
dd1f2c35 615 fDESegmentations->Add(slatsegNB[i]);
a713db22 616 slatsegNB[i]->SetPadSize(0.713,10.);
617 slatsegNB[i]->SetPadDivision(ndiv);
618 slatsegNB[i]->SetId(1);
619 slatsegNB[i]->SetDAnod(AliMUONConstants::Pitch());
620 }
621
622 // Type 122330 for 900, 913 in Ch9 (similar for Ch10)
623 // for the futur official numbering
624 // Type 122330 for 906, 956 in Ch9 (similar for Ch10)
625 // actual numbering in the code to be changed in jan05
626 Int_t n4[4] = { 0, 1, 2, 2 };
627 slatsegB[0]->SetPcbBoards(n4);
628 slatsegB[0]->Init(0); // 0 detection element id
629 slatsegNB[0]->SetPcbBoards(n4);
630 slatsegNB[0]->Init(0); // 0 detection element id
631
632 // Type 112233 for 901, 902, 911, 912, 914, 915, 924, 925 in Ch9
633 // (similar for Ch10) for the futur official numbering
634 // Type 112233 for 904, 905, 907, 908, 954, 955, 957, 958 in Ch9
635 // (similar for Ch10) actual numbering in the code to be changed in jan05
636 Int_t n5[4] = { 0, 2, 2, 2 };
637 slatsegB[1]->SetPcbBoards(n5);
638 slatsegB[1]->Init(0); // 0 detection element id
639 slatsegNB[1]->SetPcbBoards(n5);
640 slatsegNB[1]->Init(0); // 0 detection element id
641
642 // Type 333000 for 906, 907, 919, 920 in Ch9 (similar for Ch10)
643 // for the futur official numbering
644 // Type 333000 for 900, 912, 950, 962 in Ch9 (similar for Ch10)
645 // actual numbering in the code to be changed in jan05
646 Int_t n9[4] = { 0, 0, 0, 3 };
647 slatsegB[2]->SetPcbBoards(n9);
648 slatsegB[2]->Init(0); // 0 detection element id
649 slatsegNB[2]->SetPcbBoards(n9);
650 slatsegNB[2]->Init(0); // 0 detection element id
651
652 // Type 222333 for 903, 910, 916, 923 in Ch9 (similar for Ch10)
653 // for the futur official numbering
654 // Type 222333 for 903, 909, 953, 959 in Ch9 (similar for Ch10)
655 // actual numbering in the code to be changed in jan05
656 Int_t n11[4] = { 0, 0, 3, 3 };
657 slatsegB[3]->SetPcbBoards(n11);
658 slatsegB[3]->Init(0); // 0 detection element id
659 slatsegNB[3]->SetPcbBoards(n11);
660 slatsegNB[3]->Init(0); // 0 detection element id
661
662 // Type 223330 for 904, 909, 917, 922 in Ch9 (similar for Ch10)
663 // for the futur official numbering
664 // Type 223330 for 902, 910, 952, 960 in Ch9 (similar for Ch10)
665 // actual numbering in the code to be changed in jan05
666 Int_t n12[4] = { 0, 0, 2, 3 };
667 slatsegB[4]->SetPcbBoards(n12);
668 slatsegB[4]->Init(0); // 0 detection element id
669 slatsegNB[4]->SetPcbBoards(n12);
670 slatsegNB[4]->Init(0); // 0 detection element id
671
672 // Type 333300 for 905, 908, 918, 921 in Ch9 (similar for Ch10)
673 // for the futur official numbering
674 // Type 333300 for 901, 911, 951, 961 in Ch9 (similar for Ch10)
675 // actual numbering in the code to be changed in jan05
676 Int_t n13[4] = { 0, 0, 0, 4 };
677 slatsegB[5]->SetPcbBoards(n13);
678 slatsegB[5]->Init(0); // 0 detection element id
679 slatsegNB[5]->SetPcbBoards(n13);
680 slatsegNB[5]->Init(0); // 0 detection element id
681
682 for (Int_t chamber = 8; chamber < 10; chamber++) {
683
684 segmentation[0] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
685 segmentation[1] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
686
687 // id detection elt for chamber 1
688 Int_t id0 = (chamber+1)*100;
689
690 //--------------------------------------------------------
691 // Configuration for Chamber TC8/9 (Station 5) ----------
692
693
694 fMUON->SetNsec(chamber,2);
695
696 // cathode 0
697 // type 122330
698 segmentation[0]->Add(id0+ 6, slatsegB[0]);
699 segmentation[0]->Add(id0+56, slatsegB[0]);
700
701 // type 112233
702 segmentation[0]->Add(id0+ 4, slatsegB[1]);
703 segmentation[0]->Add(id0+ 5, slatsegB[1]);
704 segmentation[0]->Add(id0+ 7, slatsegB[1]);
705 segmentation[0]->Add(id0+ 8, slatsegB[1]);
706 segmentation[0]->Add(id0+54, slatsegB[1]);
707 segmentation[0]->Add(id0+55, slatsegB[1]);
708 segmentation[0]->Add(id0+57, slatsegB[1]);
709 segmentation[0]->Add(id0+58, slatsegB[1]);
710
711 // type 333000
712 segmentation[0]->Add(id0 , slatsegB[2]);
713 segmentation[0]->Add(id0+12, slatsegB[2]);
714 segmentation[0]->Add(id0+50, slatsegB[2]);
715 segmentation[0]->Add(id0+62, slatsegB[2]);
716
717 // type 222333
718 segmentation[0]->Add(id0+ 3, slatsegB[3]);
719 segmentation[0]->Add(id0+ 9, slatsegB[3]);
720 segmentation[0]->Add(id0+53, slatsegB[3]);
721 segmentation[0]->Add(id0+59, slatsegB[3]);
722
723 // type 223330
724 segmentation[0]->Add(id0+ 2, slatsegB[4]);
725 segmentation[0]->Add(id0+10, slatsegB[4]);
726 segmentation[0]->Add(id0+52, slatsegB[4]);
727 segmentation[0]->Add(id0+60, slatsegB[4]);
728
729 // type 333300
730 segmentation[0]->Add(id0+ 1, slatsegB[5]);
731 segmentation[0]->Add(id0+11, slatsegB[5]);
732 segmentation[0]->Add(id0+51, slatsegB[5]);
733 segmentation[0]->Add(id0+61, slatsegB[5]);
734 fMUON->SetSegmentationModel(chamber, 1, segmentation[0]);
735
736 // cathode 1
737 // type 122330
738 segmentation[1]->Add(id0+ 6, slatsegNB[0]);
739 segmentation[1]->Add(id0+56, slatsegNB[0]);
740
741 // type 112233
742 segmentation[1]->Add(id0+ 4, slatsegNB[1]);
743 segmentation[1]->Add(id0+ 5, slatsegNB[1]);
744 segmentation[1]->Add(id0+ 7, slatsegNB[1]);
745 segmentation[1]->Add(id0+ 8, slatsegNB[1]);
746 segmentation[1]->Add(id0+54, slatsegNB[1]);
747 segmentation[1]->Add(id0+55, slatsegNB[1]);
748 segmentation[1]->Add(id0+57, slatsegNB[1]);
749 segmentation[1]->Add(id0+58, slatsegNB[1]);
750
751 // type 333000
752 segmentation[1]->Add(id0 , slatsegNB[2]);
753 segmentation[1]->Add(id0+12, slatsegNB[2]);
754 segmentation[1]->Add(id0+50, slatsegNB[2]);
755 segmentation[1]->Add(id0+62, slatsegNB[2]);
756
757 // type 222333
758 segmentation[1]->Add(id0+ 3, slatsegNB[3]);
759 segmentation[1]->Add(id0+ 9, slatsegNB[3]);
760 segmentation[1]->Add(id0+53, slatsegNB[3]);
761 segmentation[1]->Add(id0+59, slatsegNB[3]);
762
763 // type 223330
764 segmentation[1]->Add(id0+ 2, slatsegNB[4]);
765 segmentation[1]->Add(id0+10, slatsegNB[4]);
766 segmentation[1]->Add(id0+52, slatsegNB[4]);
767 segmentation[1]->Add(id0+60, slatsegNB[4]);
768
769 // type 333300
770 segmentation[1]->Add(id0+ 1, slatsegNB[5]);
771 segmentation[1]->Add(id0+11, slatsegNB[5]);
772 segmentation[1]->Add(id0+51, slatsegNB[5]);
773 segmentation[1]->Add(id0+61, slatsegNB[5]);
774 fMUON->SetSegmentationModel(chamber, 2, segmentation[1]);
79b4ba23 775
776 fMUON->SetResponseModel(chamber, fResponse0);
a713db22 777 fMUON->Chamber(chamber).SetChargeCorrel(0.11); // 11% charge spread
778 }
779}
780
781//__________________________________________________________________________
782void AliMUONFactoryV2::BuildStation6()
79b4ba23 783{
a713db22 784 // Create Trigger geometry segmentation for given chamber and cathod
785
786
79b4ba23 787 AliMUONGeometrySegmentation *chamberSeg[2];
a713db22 788// Cluster-size off
79b4ba23 789 AliMUONResponseTrigger* responseTrigger0 = new AliMUONResponseTrigger;
a713db22 790// Cluster-size on
79b4ba23 791// AliMUONResponseTriggerV1* responseTrigger0 = new AliMUONResponseTriggerV1;
792
793 for (Int_t chamber = 10; chamber < 14; chamber++) {
794
795 //Trigger Segmentation
796 AliMUONTriggerSegmentation *trigSegX[9];
797 AliMUONTriggerSegmentation *trigSegY[9];
798 for(Int_t i=0; i<9; i++) {
799 trigSegX[i] = new AliMUONTriggerSegmentation(1);
800 trigSegY[i] = new AliMUONTriggerSegmentation(0);
dd1f2c35 801 fDESegmentations->Add(trigSegX[i]);
802 fDESegmentations->Add(trigSegY[i]);
79b4ba23 803 trigSegX[i]->SetLineNumber(9-i);
804 trigSegY[i]->SetLineNumber(9-i);
805 }
806
807 AliMUONChamber *iChamber, *iChamber1;
808 iChamber1 = &fMUON->Chamber(10);
809 iChamber = &fMUON->Chamber(chamber);
810 Float_t zpos1= - iChamber1->Z();
811 Float_t zpos = - iChamber->Z();
812 Float_t zRatio = zpos / zpos1;
813
814 // init
815 Float_t stripWidth[3]={0.,0.,0.}; // 1.0625 2.125 4.25
816 Float_t stripLength[4]={0.,0.,0.,0.}; // 17. 34. 51. 68.
817 for (Int_t i=0; i<3; i++)
818 stripWidth[i]=AliMUONTriggerConstants::StripWidth(i)*zRatio;
819 for (Int_t i=0; i<4; i++)
820 stripLength[i]=AliMUONTriggerConstants::StripLength(i)*zRatio;
821 Int_t nStrip[7]={0,0,0,0,0,0,0};
822 Float_t stripYsize[7]={0.,0.,0.,0.,0.,0.,0.};
823 Float_t stripXsize[7]={0.,0.,0.,0.,0.,0.,0.};
824
825 // chamber 8 0 cathode 0
826 for (Int_t i=0; i<7; i++) nStrip[i]=16;
827 for (Int_t i=0; i<7; i++) stripYsize[i]=stripWidth[2];
828 for (Int_t i=0; i<6; i++) stripXsize[i]=stripLength[1];
829 stripXsize[6]=stripLength[2];
830 trigSegX[8]->Init(0,nStrip,stripYsize,stripXsize,0.);
831 trigSegX[0]->Init(0,nStrip,stripYsize,stripXsize,0.);
832
833 // chamber 8 7 1 0 cathode 1
834 for (Int_t i=0; i<6; i++) nStrip[i]=8;
835 nStrip[7]=16;
836 for (Int_t i=0; i<7; i++) stripYsize[i]=stripLength[3];
837 for (Int_t i=0; i<7; i++) stripXsize[i]=stripWidth[2];
838 trigSegY[8]->Init(0,nStrip,stripYsize,stripXsize,0.);
839 trigSegY[7]->Init(0,nStrip,stripYsize,stripXsize,0.);
840 trigSegY[1]->Init(0,nStrip,stripYsize,stripXsize,0.);
841 trigSegY[0]->Init(0,nStrip,stripYsize,stripXsize,0.);
a713db22 842
79b4ba23 843 // chamber 7 6 2 1 cathode 0
844 for (Int_t i=0; i<6; i++) nStrip[i]=32;
845 nStrip[6]=16;
846 for (Int_t i=0; i<6; i++) stripYsize[i]=stripWidth[1];
847 stripYsize[6]=stripWidth[2];
848 for (Int_t i=0; i<6; i++) stripXsize[i]=stripLength[1];
849 stripXsize[6]=stripLength[2];
850 trigSegX[7]->Init(0,nStrip,stripYsize,stripXsize,0.);
851 trigSegX[6]->Init(0,nStrip,stripYsize,stripXsize,0.);
852 trigSegX[2]->Init(0,nStrip,stripYsize,stripXsize,0.);
853 trigSegX[1]->Init(0,nStrip,stripYsize,stripXsize,0.);
854
855 // chamber 6 2 cathode 1
856 for (Int_t i=0; i<5; i++) nStrip[i]=16;
857 for (Int_t i=5; i<6; i++) nStrip[i]=8;
858 nStrip[6]=16;
859 for (Int_t i=0; i<7; i++) stripYsize[i]=stripLength[3];
860 for (Int_t i=0; i<5; i++) stripXsize[i]=stripWidth[1];
861 for (Int_t i=5; i<7; i++) stripXsize[i]=stripWidth[2];
862 trigSegY[6]->Init(0,nStrip,stripYsize,stripXsize,0.);
863 trigSegY[2]->Init(0,nStrip,stripYsize,stripXsize,0.);
864
865 // chamber 5 3 cathode 0
866 nStrip[0]=48;
867 for (Int_t i=1; i<3; i++) nStrip[i]=64;
868 for (Int_t i=3; i<6; i++) nStrip[i]=32;
869 nStrip[6]=16;
870 for (Int_t i=0; i<3; i++) stripYsize[i]=stripWidth[0];
871 for (Int_t i=3; i<6; i++) stripYsize[i]=stripWidth[1];
872 stripYsize[6]=stripWidth[2];
873 for (Int_t i=0; i<6; i++) stripXsize[i]=stripLength[1];
874 stripXsize[6]=stripLength[2];
875 trigSegX[5]->Init(0,nStrip,stripYsize,stripXsize,stripLength[0]);
876 trigSegX[3]->Init(0,nStrip,stripYsize,stripXsize,0.);
877
878 // chamber 5 3 cathode 1
879 for (Int_t i=0; i<5; i++) nStrip[i]=16;
880 for (Int_t i=5; i<6; i++) nStrip[5]=8;
881 nStrip[6]=16;
882 stripYsize[0]=stripLength[2];
883 for (Int_t i=1; i<8; i++) stripYsize[i]=stripLength[3];
884 for (Int_t i=0; i<5; i++) stripXsize[i]=stripWidth[1];
885 for (Int_t i=5; i<7; i++) stripXsize[i]=stripWidth[2];
886 trigSegY[5]->Init(0,nStrip,stripYsize,stripXsize,stripLength[0]);
887 trigSegY[3]->Init(0,nStrip,stripYsize,stripXsize,0.);
888
889 // chamber 4 cathode 0
890 nStrip[0]=0;
891 for (Int_t i=1; i<3; i++) nStrip[i]=64;
892 for (Int_t i=3; i<6; i++) nStrip[i]=32;
893 nStrip[6]=16;
894 stripYsize[0]=0.;
895 for (Int_t i=1; i<3; i++) stripYsize[i]=stripWidth[0];
896 for (Int_t i=3; i<6; i++) stripYsize[i]=stripWidth[1];
897 stripYsize[6]=stripWidth[2];
898 stripXsize[0]=0;
899 stripXsize[1]=stripLength[0];
900 for (Int_t i=2; i<6; i++) stripXsize[i]=stripLength[1];
901 stripXsize[6]=stripLength[2];
902 trigSegX[4]->Init(0,nStrip,stripYsize,stripXsize,0.);
903
904 // chamber 4 cathode 1
905 nStrip[0]=0;
906 nStrip[1]=8;
907 for (Int_t i=2; i<5; i++) nStrip[i]=16;
908 for (Int_t i=5; i<6; i++) nStrip[i]=8;
909 nStrip[6]=16;
910 stripYsize[0]=0.;
911 for (Int_t i=1; i<7; i++) stripYsize[i]=stripLength[3];
912 stripXsize[0]=0.;
913 for (Int_t i=1; i<5; i++) stripXsize[i]=stripWidth[1];
914 for (Int_t i=5; i<7; i++) stripXsize[i]=stripWidth[2];
915 trigSegY[4]->Init(0,nStrip,stripYsize,stripXsize,0.);
916
917 chamberSeg[0] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
918 chamberSeg[1] = new AliMUONGeometrySegmentation(fMUON->Chamber(chamber).GetGeometry());
919
920 fMUON->SetNsec(chamber,2);
921 Int_t icount=chamber-10; // chamber counter (0 1 2 3)
922 Int_t id0=(10+icount+1)*100;
923
924
925 // printf("in CreateTriggerSegmentation here 0 id0=%i \n",id0);
926
927 for (Int_t i = 0; i < 9; i++) {
928
929 // cathode 0
930 chamberSeg[0]->Add(id0+i, trigSegX[i]);
931 chamberSeg[0]->Add(id0+50+i, trigSegX[i]);
932 fMUON->SetSegmentationModel(chamber, 1, chamberSeg[0]);
933
934 // cathode 1
935 chamberSeg[1]->Add(id0+i, trigSegY[i]);
936 chamberSeg[1]->Add(id0+50+i, trigSegY[i]);
937 fMUON->SetSegmentationModel(chamber, 2, chamberSeg[1]);
938
939 }
940
941 fMUON->SetResponseModel(chamber, responseTrigger0);
942 fMUON->Chamber(chamber).SetChargeCorrel(0); // same charge on cathodes
a713db22 943
944
79b4ba23 945 // printf("in CreateTriggerSegmentation here 1\n");
a713db22 946
79b4ba23 947 if (!id0) {
948 AliWarning(Form("Segmentation for chamber %d is not yet defined",chamber));
949 return ;
950 }
a713db22 951 }
79b4ba23 952}
a713db22 953//__________________________________________________________________________
954void AliMUONFactoryV2::Build(AliMUON* where, const char* what)
955{
956 //
957 // Construct MUON from chambers, segmentation and responses
958 //
959
960 fMUON = where;
961 char tmp[20];
962 strcpy(tmp, what);
963
964 if (strcmp(tmp, "default")==0) {
965 // Set default parameters
966 fMUON->SetIshunt(0);
967 fMUON->SetMaxStepGas(0.1);
968 fMUON->SetMaxStepAlu(0.1);
969
970 // Build all stations
971 BuildCommon();
972 BuildStation1();
973 BuildStation2();
974 BuildStation3();
975 BuildStation4();
976 BuildStation5();
977 BuildStation6();
978 }
979 else
980 AliDebug(0,"Non default version of MUON selected. You have to construct yourself the MUON elements !!");
981}
982
983//__________________________________________________________________________
984void AliMUONFactoryV2::BuildStation(AliMUON* where, Int_t stationNumber)
985{
986 //
987 // Construct MUON from chambers, segmentation and responses
988 //
989 // Version 0
990 //
991 // First define the number of planes that are segmented (1 or 2) by a call
992 // to SetNsec.
993 // Then chose for each chamber (chamber plane) the segmentation
994 // and response model.
995 // They should be equal for the two chambers of each station. In a future
996 // version this will be enforced.
997 //
998
999 fMUON = where;
1000 if (!fResponse0) BuildCommon();
1001
1002 switch (stationNumber) {
1003 case 1: BuildStation1(); break;
1004 case 2: BuildStation2(); break;
1005 case 3: BuildStation3(); break;
1006 case 4: BuildStation4(); break;
1007 case 5: BuildStation5(); break;
1008 case 6: BuildStation6(); break;
1009
1010 default: AliFatal("Wrong station number");
1011 }
1012}