**************************************************************************/
// $Id$
-//
+
+//-----------------------------------------------------------------------------
// Class AliMUONSt2GeometryBuilder
// -------------------------------
// MUON Station2 coarse geometry construction class.
// Extracted from AliMUONv1
// Dummy version of station 2 with the right DE id (Ch. Finck)
+//-----------------------------------------------------------------------------
#include <TVirtualMC.h>
#include <TGeoMatrix.h>
+#include <TArrayI.h>
#include "AliLog.h"
#include "AliMUONSt2GeometryBuilder.h"
#include "AliMUON.h"
-#include "AliMUONChamber.h"
+#include "AliMUONConstants.h"
#include "AliMUONGeometryModule.h"
#include "AliMUONGeometryEnvelopeStore.h"
+/// \cond CLASSIMP
ClassImp(AliMUONSt2GeometryBuilder)
+/// \endcond
//______________________________________________________________________________
AliMUONSt2GeometryBuilder::AliMUONSt2GeometryBuilder(AliMUON* muon)
- : AliMUONVGeometryBuilder("st2.dat",
- muon->Chamber(2).GetGeometry(),
- muon->Chamber(3).GetGeometry()),
+ : AliMUONVGeometryBuilder(2, 2),
fMUON(muon)
{
-// Standard constructor
+/// Standard constructor
}
: AliMUONVGeometryBuilder(),
fMUON(0)
{
-// Default constructor
+/// Default constructor
}
//______________________________________________________________________________
-AliMUONSt2GeometryBuilder::AliMUONSt2GeometryBuilder(const AliMUONSt2GeometryBuilder& rhs)
- : AliMUONVGeometryBuilder(rhs)
+AliMUONSt2GeometryBuilder::~AliMUONSt2GeometryBuilder()
{
-// Protected copy constructor
-
- AliFatal("Copy constructor is not implemented.");
-}
-
-//______________________________________________________________________________
-AliMUONSt2GeometryBuilder::~AliMUONSt2GeometryBuilder() {
-//
-}
-
-//______________________________________________________________________________
-AliMUONSt2GeometryBuilder&
-AliMUONSt2GeometryBuilder::operator = (const AliMUONSt2GeometryBuilder& rhs)
-{
-// Protected assignement operator
-
- // check assignement to self
- if (this == &rhs) return *this;
-
- AliFatal("Assignment operator is not implemented.");
-
- return *this;
+/// Destructor
}
//
//______________________________________________________________________________
void AliMUONSt2GeometryBuilder::CreateGeometry()
{
-// From AliMUONv1::CreateGeometry()
+/// From AliMUONv1::CreateGeometry()
//
//********************************************************************
Int_t irot2;
fMUON->AliMatrix(irot2, 90., 90., 90., 180., 0., 0.);
- AliMUONChamber* iChamber = &fMUON->Chamber(2);
- // AliMUONChamber* iChamber1 = iChamber;
- // AliMUONChamber* iChamber2 = &fMUON->Chamber(3);
-
// Half of the total thickness of frame crosses (including DAlu)
// for each chamber in stations 1 and 2:
// 3% of X0 of composite material,
// DGas and DAlu not changed from standard values
// Double_t zfpos=-(iChamber->DGas()+dframez+iChamber->DAlu())/2;
// The same parameters are defined in builder for station 1
+
+ // sensitive gas gap
+ const Float_t kDGas = 0.5;
+
+ // 3% radiation length of aluminum (X0=8.9 cm)
+ // const Float_t kDAlu = 3.5 * 8.9 / 100.;
// Mother volume
// Outer excess and inner recess for mother volume radius
Float_t posx, posy, posz;
// Chamber Material represented by Alu sheet
- tpar[0]= iChamber->RInner();
- tpar[1]= iChamber->ROuter();
- tpar[2] = (iChamber->DGas())/2;
+ tpar[0]= AliMUONConstants::Rmin(1);
+ tpar[1]= AliMUONConstants::Rmax(1);
+ tpar[2] = kDGas/2;
tpar[3] = 0.;
tpar[4] = 90.;
GetEnvelopes(3)->AddEnvelopeConstituent("S04G", "LF04", 4);
}
+//______________________________________________________________________________
+void AliMUONSt2GeometryBuilder::SetVolumes()
+{
+/// Defines the volumes for the station2 chambers.
+
+ // Define chamber volumes as virtual
+ SetVolume(2, "SC03", true);
+ SetVolume(3, "SC04", true);
+}
+
//______________________________________________________________________________
void AliMUONSt2GeometryBuilder::SetTransformations()
{
-// Defines the transformations for the station2 chambers.
-// ---
-
- AliMUONChamber* iChamber1 = &fMUON->Chamber(2);
- Double_t zpos1 = - iChamber1->Z();
- iChamber1->GetGeometry()
- ->SetTranslation(TGeoTranslation(0., 0., zpos1));
-
- AliMUONChamber* iChamber2 = &fMUON->Chamber(3);
- Double_t zpos2 = - iChamber2->Z();
- iChamber2->GetGeometry()
- ->SetTranslation(TGeoTranslation(0., 0., zpos2));
+/// Defines the transformations for the station2 chambers.
+
+ Double_t zpos1 = - AliMUONConstants::DefaultChamberZ(2);
+ SetTranslation(2, TGeoTranslation(0., 0., zpos1));
+
+ Double_t zpos2 = - AliMUONConstants::DefaultChamberZ(3);
+ SetTranslation(3, TGeoTranslation(0., 0., zpos2));
}
//______________________________________________________________________________
void AliMUONSt2GeometryBuilder::SetSensitiveVolumes()
{
-// Defines the sensitive volumes for station2 chambers.
-// ---
+/// Defines the sensitive volumes for station2 chambers.
GetGeometry(2)->SetSensitiveVolume("S03G");
GetGeometry(3)->SetSensitiveVolume("S04G");