* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-
/* $Id$ */
-
+/** @file AliFMD2.cxx
+ @author Christian Holm Christensen <cholm@nbi.dk>
+ @date Sun Mar 26 18:25:51 2006
+ @brief Concrete implementation of AliFMDDetector for FMD2
+*/
//____________________________________________________________________
//
-// Concrete implementation of AliFMDSubDetector
+// Concrete implementation of AliFMDDetector
//
// This implements the geometry for FMD2
+// The FMD2 has two ring, one of both types.
+// FMD2 is mounted on the space-frame via 4 flanges
+// Support is not fleshed ot yet.
+// Support will be simple compared to FMD3.
//
-#ifndef ALIFMD2_H
-# include "AliFMD2.h"
-#endif
-#ifndef ROOT_TVirtualMC
-# include <TVirtualMC.h>
-#endif
-#ifndef ALILOG_H
-# include "AliLog.h"
-#endif
-#ifndef ALIFMDRING_H
-# include "AliFMDRing.h"
-#endif
+#include "AliFMD2.h" // ALIFMD2_H
+#include "AliLog.h"
+// #include "AliFMDRing.h" // ALIFMDRING_H
-//____________________________________________________________________
-ClassImp(AliFMD2);
-
-//____________________________________________________________________
-AliFMD2::AliFMD2()
- : AliFMDSubDetector(2)
-{
- // Default constructor for the FMD2 sub-detector
-}
+//====================================================================
+ClassImp(AliFMD2)
+#if 0
+ ; // This is here to keep Emacs for indenting the next line
+#endif
//____________________________________________________________________
-AliFMD2::~AliFMD2()
+AliFMD2::AliFMD2(AliFMDRing* inner, AliFMDRing* outer)
+ : AliFMDDetector(2, inner, outer)
{
- // Destructor - does nothing
+ // Constructor
+ // SetInnerZ(83.4);
+ // SetOuterZ(75.2);
+ // Double_t off = 0.414256-0.1963; // 2.35
+ Double_t off = 0; // 0.414256-0.1963+.27; // 2.35
+ if (off < 0) off = 0;
+ if (off != 0)
+ AliWarning(Form("Z position of FMD2 rings may be wrong by %fcm!", off));
+ SetInnerZ(83.4+off);
+ SetOuterZ(75.2+off);
}
//____________________________________________________________________
-void
-AliFMD2::SetupGeometry(Int_t airId, Int_t kaptionId)
+void
+AliFMD2::Init()
{
- // Setup the FMD2 sub-detector geometry
- //
- // Parameters:
- //
- // airId Id # of the Air medium
- // kaptionId Id # of the Aluminium medium
- //
- fInnerHoneyLowR = fInner->GetLowR() + 1;
- fInnerHoneyHighR = fOuter->GetHighR() + 1;
- fOuterHoneyLowR = fOuter->GetLowR() + 1;
- fOuterHoneyHighR = fOuter->GetHighR() + 1;
-
- Double_t par[3];
- par[0] = fInner->GetLowR();
- par[1] = fOuterHoneyHighR;
- par[2] = fDz = (TMath::Abs(fInnerZ - fOuterZ)
- + fInner->GetSiThickness()
- + fInner->GetPrintboardThickness()
- + fInner->GetLegLength()
- + fInner->GetModuleSpacing()
- + fHoneycombThickness) / 2;
- fVolumeId = gMC->Gsvolu("FMD2", "TUBE", airId, par, 3);
-
- // Rotate the full sub-detector
- gMC->Matrix(fRotationId, 270, 180, 90, 90, 180, 0);
-
- AliFMDSubDetector::SetupGeometry(airId, kaptionId);
+ // Initialize
+ AliFMDDetector::Init();
+ SetInnerHoneyHighR(GetOuterHoneyHighR());
}
-//____________________________________________________________________
-void
-AliFMD2::Geometry(const char* mother, Int_t pbRotId,
- Int_t idRotId, Double_t z)
-{
- // Position the FMD2 sub-detector volume
- //
- // Parameters
- //
- // mother name of the mother volume
- // pbRotId Printboard roation matrix ID
- // idRotId Identity rotation matrix ID
- // z Z position (not really used here, but passed down)
- //
- z = fDz + fOuterZ;
- AliFMDSubDetector::Geometry("FMD2", pbRotId, idRotId, z);
- gMC->Gspos("FMD2", 1, mother, 0, 0, z, fRotationId);
-}
-
-
-
//____________________________________________________________________
//
// EOF