Skip to content

Commit 609e7bf

Browse files
author
morsch
committed
New mother volume for muon spectrometer station 3.
1 parent b12e65a commit 609e7bf

File tree

2 files changed

+45
-44
lines changed

2 files changed

+45
-44
lines changed

STRUCT/AliDIPOv3.cxx

Lines changed: 45 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,7 @@ AliDIPOv3::AliDIPOv3()
4343

4444
//_____________________________________________________________________________
4545
AliDIPOv3::AliDIPOv3(const char *name, const char *title)
46-
: AliDIPOv2(name,title),
47-
fCenterOfDDIPVolume(0.0)
48-
46+
: AliDIPOv2(name,title)
4947
{
5048
//
5149
// Standard constructor for the magnetic dipole version 3
@@ -79,9 +77,9 @@ void AliDIPOv3::CreateSpectrometerDipole()
7977
//
8078
Float_t alhc = 0.794;
8179

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.);
8382
TGeoRotation* rotxzlhc = new TGeoRotation("rotxzlhc", 180., 180. + alhc, 0.);
84-
TGeoRotation* rotlhc = new TGeoRotation("rotlhc", 0., alhc, 0.);
8583

8684
TGeoRotation* rotxz108 = new TGeoRotation("rotxz108", 90., 108., 90., 198., 180., 0.);
8785
TGeoRotation* rotxz180 = new TGeoRotation("rotxz180", 90., 180., 90., 270., 180., 0.);
@@ -117,33 +115,41 @@ void AliDIPOv3::CreateSpectrometerDipole()
117115

118116

119117
//
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);
121124
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);
125125
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);
131146

132-
TGeoBBox* shDDIP2 = new TGeoBBox(164., 182., 25.);
147+
TGeoBBox* shDDIP2 = new TGeoBBox(164., 182., 36.);
133148
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");
147153

148154
TGeoVolume* voDDIP = new TGeoVolume("DDIP", shDDIP, kMedAir);
149155
//
@@ -182,7 +188,7 @@ void AliDIPOv3::CreateSpectrometerDipole()
182188

183189

184190
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));
186192

187193
//
188194
// Coils
@@ -366,6 +372,7 @@ void AliDIPOv3::CreateSpectrometerDipole()
366372

367373
rmin1 = (zHanger1 - 13.) * TMath::Tan(2. * kDegrad);
368374
rmin2 = rmin1 + 26. * TMath::Tan( 2.0 * kDegrad);
375+
369376
rmax1 = (zHanger1 - 13.) * TMath::Tan(9. * kDegrad);
370377
rmax2 = rmax1 + 26. * TMath::Tan(9. * kDegrad);
371378

@@ -380,8 +387,9 @@ void AliDIPOv3::CreateSpectrometerDipole()
380387
TGeoBBox* shHanger21 = new TGeoBBox(3.5/2., 250., 25./2.);
381388
shHanger21->SetName("shHanger21");
382389

383-
rmin1 = 35.8 + (zHanger2 - 13. - zst - kZDipole) * TMath::Tan(2. * kDegrad);
390+
rmin1 = 35.8 + (zHanger2 - 13. - zst) * TMath::Tan(2. * kDegrad);
384391
rmin2 = rmin1 + 26. * TMath::Tan( 2.0 * kDegrad);
392+
385393
rmax1 = rcD1 + (zHanger2 - 13. - kZDipole) * TMath::Tan(10.1 * kDegrad);
386394
rmax2 = rmax1 + 26. * TMath::Tan(10.1 * kDegrad);
387395
TGeoCone* shHanger22 = new TGeoCone(13., rmin1, rmax1, rmin2, rmax2);
@@ -408,13 +416,11 @@ void AliDIPOv3::CreateSpectrometerDipole()
408416

409417

410418

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));
414421

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));
418424

419425

420426

@@ -435,7 +441,7 @@ void AliDIPOv3::CreateSpectrometerDipole()
435441
asDipole->AddNode(asDCoilSupport, 3, new TGeoCombiTrans( 0., 0., dz, rotxy108));
436442
asDipole->AddNode(asDCoilSupport, 4, new TGeoCombiTrans( 0., 0., dz, rotxy288));
437443

438-
asDipole->AddNode(asDCoilSupport, 5, new TGeoCombiTrans( 0., 0., -dz, rotxz));
444+
asDipole->AddNode(asDCoilSupport, 5, new TGeoCombiTrans( 0., 0., -dz, rotiz));
439445
asDipole->AddNode(asDCoilSupport, 6, new TGeoCombiTrans( 0., 0., -dz, rotxz108));
440446
asDipole->AddNode(asDCoilSupport, 7, new TGeoCombiTrans( 0., 0., -dz, rotxz180));
441447
asDipole->AddNode(asDCoilSupport, 8, new TGeoCombiTrans( 0., 0., -dz, rotxz288));
@@ -449,11 +455,8 @@ void AliDIPOv3::CreateSpectrometerDipole()
449455
asDipole->SetVisContainers(1);
450456
voDDIP->SetVisibility(0);
451457

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));
457460
}
458461

459462

STRUCT/AliDIPOv3.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,8 @@ class AliDIPOv3 : public AliDIPOv2 {
1818
AliDIPOv3(const char *name, const char *title);
1919
virtual ~AliDIPOv3() {}
2020
virtual Int_t IsVersion() const {return 3;}
21-
Float_t GetCenterOfDDIPVolume() {return fCenterOfDDIPVolume;} // This getter is needed for placing the Station 3 of the muon spectromeer inside de Dipole
2221
private:
2322
virtual void CreateSpectrometerDipole();
24-
Float_t fCenterOfDDIPVolume;
2523
ClassDef(AliDIPOv3,1) //Class manager for magnetic dipole version 2
2624
};
2725

0 commit comments

Comments
 (0)