@@ -43,9 +43,7 @@ AliDIPOv3::AliDIPOv3()
43
43
44
44
// _____________________________________________________________________________
45
45
AliDIPOv3::AliDIPOv3 (const char *name, const char *title)
46
- : AliDIPOv2(name,title),
47
- fCenterOfDDIPVolume(0.0 )
48
-
46
+ : AliDIPOv2(name,title)
49
47
{
50
48
//
51
49
// Standard constructor for the magnetic dipole version 3
@@ -79,9 +77,9 @@ void AliDIPOv3::CreateSpectrometerDipole()
79
77
//
80
78
Float_t alhc = 0.794 ;
81
79
82
- TGeoRotation* rotxz = new TGeoRotation (" rotxz" , 90 ., 0 ., 90 ., 90 ., 180 ., 0 .);
80
+ TGeoRotation* rotxz = new TGeoRotation (" rotxz" , 270 ., 0 ., 90 ., 90 ., 180 ., 0 .);
81
+ TGeoRotation* rotiz = new TGeoRotation (" rotiz" , 90 ., 0 ., 90 ., 90 ., 180 ., 0 .);
83
82
TGeoRotation* rotxzlhc = new TGeoRotation (" rotxzlhc" , 180 ., 180 . + alhc, 0 .);
84
- TGeoRotation* rotlhc = new TGeoRotation (" rotlhc" , 0 ., alhc, 0 .);
85
83
86
84
TGeoRotation* rotxz108 = new TGeoRotation (" rotxz108" , 90 ., 108 ., 90 ., 198 ., 180 ., 0 .);
87
85
TGeoRotation* rotxz180 = new TGeoRotation (" rotxz180" , 90 ., 180 ., 90 ., 270 ., 180 ., 0 .);
@@ -117,33 +115,41 @@ void AliDIPOv3::CreateSpectrometerDipole()
117
115
118
116
119
117
//
120
- // Mother volume
118
+ // Mother volume for muon spectrometer tracking station 3
119
+
120
+ Float_t z30 = 825 .;
121
+ Float_t zst = 1052 .;
122
+
123
+ Float_t rcD0 = (kZDipoleF - 5 .) * TMath::Tan (9 . * kDegrad );
121
124
Float_t rcD1 = kZDipole * TMath::Tan (9 . * kDegrad );
122
- TGeoPcon* shDDIP1 = new TGeoPcon (" shDDIP1" , 0 ., 360 ., 4 );
123
- shDDIP1->DefineSection (0 , -dipoleL/2 . - 5 ., 0 ., (kZDipoleF -5 .) * TMath::Tan (9 . * kDegrad ));
124
- shDDIP1->DefineSection (1 , 0 ., 0 ., rcD1);
125
125
Float_t rcD2 = rcD1 + dipoleL/2 . * TMath::Tan (10.1 * kDegrad );
126
- shDDIP1->DefineSection (2 , +dipoleL/2 ., 0 ., rcD2);
127
- shDDIP1->DefineSection (3 , +dipoleL/2 . + 5 ., 0 ., rcD2);
128
-
129
- TGeoCombiTrans* trDDIP = new TGeoCombiTrans (" trDDIP" , 0 ., dipoleL/2 . * TMath::Tan (alhc * kDegrad ), 0 ., rotlhc);
130
- trDDIP->RegisterYourself ();
126
+ Float_t rc30 = z30 * TMath::Tan (9 . * kDegrad );
127
+ Float_t rcst = rcD1 + (zst - kZDipole ) * TMath::Tan (10.1 * kDegrad );
128
+
129
+
130
+ Float_t riD0 = (kZDipoleF - 5 .) * TMath::Tan (2 . * kDegrad ) + 0.2 ;
131
+ Float_t riD1 = 30 .;
132
+ Float_t riD2 = 35.8 ;
133
+ Float_t riD3 = riD2 + (kZDipoleR - zst) * TMath::Tan (2 . * kDegrad );
134
+ Float_t riD4 = riD2 + (kZDipoleR - zst + 5 .) * TMath::Tan (2 . * kDegrad );
135
+
136
+
137
+ TGeoPcon* shDDIP1 = new TGeoPcon (" shDDIP1" , 0 ., 360 ., 7 );
138
+
139
+ shDDIP1->DefineSection (0 , (kZDipoleF - 5 .), riD0, rcD0);
140
+ shDDIP1->DefineSection (1 , z30 , riD1, rc30);
141
+ shDDIP1->DefineSection (2 , kZDipole , riD1, rcD1);
142
+ shDDIP1->DefineSection (3 , zst , riD1, rcst);
143
+ shDDIP1->DefineSection (4 , zst , riD2, rcst);
144
+ shDDIP1->DefineSection (5 , kZDipoleR , riD3, rcD2);
145
+ shDDIP1->DefineSection (6 , (kZDipoleR + 5 .), riD4, rcD2);
131
146
132
- TGeoBBox* shDDIP2 = new TGeoBBox (164 ., 182 ., 25 .);
147
+ TGeoBBox* shDDIP2 = new TGeoBBox (164 ., 182 ., 36 .);
133
148
shDDIP2->SetName (" shDDIP2" );
134
- TGeoPcon* shDDIP3 = new TGeoPcon ( 0 ., 360 ., 5 );
135
- shDDIP3->SetName (" shDDIP3" );
136
- Float_t z30 = 825 . - kZDipole ;
137
- Float_t zst = 1052 . - kZDipole ;
138
-
139
-
140
- shDDIP3->DefineSection (0 , -dipoleL/2 . - 10 ., 0 ., (kZDipoleF - 10 .) * TMath::Tan (2 . * kDegrad ) + 0.2 );
141
- shDDIP3->DefineSection (1 , z30, 0 ., 28.8 + 0.2 );
142
- shDDIP3->DefineSection (2 , zst, 0 ., 28.8 + 0.2 );
143
- shDDIP3->DefineSection (3 , zst, 0 ., 35.8 );
144
- shDDIP3->DefineSection (4 , +dipoleL/2 . + 10 ., 0 ., 35.8 + (dipoleL/2 . + 10 . - zst) * TMath::Tan (2 . * kDegrad ));
145
-
146
- TGeoCompositeShape* shDDIP = new TGeoCompositeShape (" shDDIP" , " (shDDIP2 + shDDIP1:trDDIP) - shDDIP3:trDDIP" );
149
+ TGeoTranslation* trDDIP2 = new TGeoTranslation (" trDDIP2" , 0 ., 0 ., kZDipole );
150
+ trDDIP2->RegisterYourself ();
151
+
152
+ TGeoCompositeShape* shDDIP = new TGeoCompositeShape (" shDDIP" , " shDDIP1+shDDIP2:trDDIP2" );
147
153
148
154
TGeoVolume* voDDIP = new TGeoVolume (" DDIP" , shDDIP, kMedAir );
149
155
//
@@ -182,7 +188,7 @@ void AliDIPOv3::CreateSpectrometerDipole()
182
188
183
189
184
190
asYoke->AddNode (asYokeSide, 1 , new TGeoTranslation (+lx0/2 . + 3 . * dGap - blockHeight/2 ., 0 ., 0 .));
185
- asYoke->AddNode (asYokeSide, 2 , new TGeoCombiTrans ( -lx0/2 . - 3 . * dGap + blockHeight/2 ., 0 ., 0 ., rotxz ));
191
+ asYoke->AddNode (asYokeSide, 2 , new TGeoCombiTrans ( -lx0/2 . - 3 . * dGap + blockHeight/2 ., 0 ., 0 ., rotiz ));
186
192
187
193
//
188
194
// Coils
@@ -366,6 +372,7 @@ void AliDIPOv3::CreateSpectrometerDipole()
366
372
367
373
rmin1 = (zHanger1 - 13 .) * TMath::Tan (2 . * kDegrad );
368
374
rmin2 = rmin1 + 26 . * TMath::Tan ( 2.0 * kDegrad );
375
+
369
376
rmax1 = (zHanger1 - 13 .) * TMath::Tan (9 . * kDegrad );
370
377
rmax2 = rmax1 + 26 . * TMath::Tan (9 . * kDegrad );
371
378
@@ -380,8 +387,9 @@ void AliDIPOv3::CreateSpectrometerDipole()
380
387
TGeoBBox* shHanger21 = new TGeoBBox (3.5 /2 ., 250 ., 25 ./2 .);
381
388
shHanger21->SetName (" shHanger21" );
382
389
383
- rmin1 = 35.8 + (zHanger2 - 13 . - zst - kZDipole ) * TMath::Tan (2 . * kDegrad );
390
+ rmin1 = 35.8 + (zHanger2 - 13 . - zst) * TMath::Tan (2 . * kDegrad );
384
391
rmin2 = rmin1 + 26 . * TMath::Tan ( 2.0 * kDegrad );
392
+
385
393
rmax1 = rcD1 + (zHanger2 - 13 . - kZDipole ) * TMath::Tan (10.1 * kDegrad );
386
394
rmax2 = rmax1 + 26 . * TMath::Tan (10.1 * kDegrad );
387
395
TGeoCone* shHanger22 = new TGeoCone (13 ., rmin1, rmax1, rmin2, rmax2);
@@ -408,13 +416,11 @@ void AliDIPOv3::CreateSpectrometerDipole()
408
416
409
417
410
418
411
- dz = zHanger1 - kZDipole ;
412
- dy = -(kZDipoleR - zHanger1) * TMath::Tan (alhc * kDegrad );
413
- voDDIP->AddNode (voHanger1, 1 , new TGeoCombiTrans (0 ., dy, dz, rotlhc));
419
+ dz = zHanger1;
420
+ voDDIP->AddNode (voHanger1, 1 , new TGeoTranslation (0 ., 0 ., dz));
414
421
415
- dz = zHanger2 - kZDipole ;
416
- dy = -(kZDipoleR - zHanger2) * TMath::Tan (alhc * kDegrad );
417
- voDDIP->AddNode (voHanger2, 1 , new TGeoCombiTrans (0 ., dy, dz, rotlhc));
422
+ dz = zHanger2;
423
+ voDDIP->AddNode (voHanger2, 1 , new TGeoTranslation (0 ., 0 ., dz));
418
424
419
425
420
426
@@ -435,7 +441,7 @@ void AliDIPOv3::CreateSpectrometerDipole()
435
441
asDipole->AddNode (asDCoilSupport, 3 , new TGeoCombiTrans ( 0 ., 0 ., dz, rotxy108));
436
442
asDipole->AddNode (asDCoilSupport, 4 , new TGeoCombiTrans ( 0 ., 0 ., dz, rotxy288));
437
443
438
- asDipole->AddNode (asDCoilSupport, 5 , new TGeoCombiTrans ( 0 ., 0 ., -dz, rotxz ));
444
+ asDipole->AddNode (asDCoilSupport, 5 , new TGeoCombiTrans ( 0 ., 0 ., -dz, rotiz ));
439
445
asDipole->AddNode (asDCoilSupport, 6 , new TGeoCombiTrans ( 0 ., 0 ., -dz, rotxz108));
440
446
asDipole->AddNode (asDCoilSupport, 7 , new TGeoCombiTrans ( 0 ., 0 ., -dz, rotxz180));
441
447
asDipole->AddNode (asDCoilSupport, 8 , new TGeoCombiTrans ( 0 ., 0 ., -dz, rotxz288));
@@ -449,11 +455,8 @@ void AliDIPOv3::CreateSpectrometerDipole()
449
455
asDipole->SetVisContainers (1 );
450
456
voDDIP->SetVisibility (0 );
451
457
452
- top->AddNode (asDipole, 1 , new TGeoCombiTrans (0 ., dipoleL / 2 . * TMath::Tan (alhc * kDegrad ), -kZDipole , rotxzlhc));
453
- top->AddNode (voDDIP, 1 , new TGeoCombiTrans (0 ., dipoleL / 2 . * TMath::Tan (alhc * kDegrad ), -kZDipole , rotxzlhc));
454
- // This following value is needed by the MUON module to place the station 3
455
- // in the DDIP volume with respect to the center of this volume.
456
- fCenterOfDDIPVolume = kZDipole ;
458
+ top->AddNode (asDipole, 1 , new TGeoCombiTrans (0 ., dipoleL / 2 . * TMath::Tan (alhc * kDegrad ), -kZDipole , rotxzlhc));
459
+ top->AddNode (voDDIP, 1 , new TGeoCombiTrans (0 ., 0 ., 0 ., rotxz));
457
460
}
458
461
459
462
0 commit comments