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