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