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