#ifndef ALIITSV11GEOMETRYSPD_H
#define ALIITSV11GEOMETRYSPD_H
-/*
+/*
* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved.
* See cxx source for full Copyright notice.
*/
-
+
// Implementation of the SPD v11 central geometry.
// Contains also:
// - the materials/media used for its volumes;
* $Id$
*/
+#include <TArrayD.h>
#include <TGeoManager.h>
#include <TVirtualMC.h>
#include <TString.h>
#include <TArrayI.h>
#include <TPolyLine.h>
#include <TPolyMarker.h>
-#include <AliITSv11Geometry.h>
+#include "AliITSv11Geometry.h"
class TGeoVolume;
class TGeoCompositeShape;
+using std::istream;
+
class AliITSv11GeometrySPD : public AliITSv11Geometry
{
public:
-
+
// Default constructor
AliITSv11GeometrySPD(/*Double_t gap = 0.0075*/);
// Standard Constructor
// Destructor
virtual ~AliITSv11GeometrySPD() {};
- /* Settings */
-
- // define/create materials
- virtual Int_t CreateSPDCentralMaterials(Int_t &medOffset,
- Int_t &matOffset) const;
- // set SPD Central, GEANT3 type, tracking parameters
- virtual void InitSPDCentral(Int_t offset, TVirtualMC *mc = gMC) const;
-
- /* Monitoring */
-
- // creates standard figures for the documentation of this class
- virtual void CreateFigure0(const Char_t *path = "",
- const Char_t *type = "gif",
- TGeoManager *mgr = gGeoManager) const;
- // fill TPolylines with crossections of the SPD Carbon fiber sectors.
- Bool_t Make2DCrossSections(TPolyLine &a0, TPolyLine &a1, TPolyLine &b0,
- TPolyLine &b1, TPolyMarker &p) const;
-
/* Services */
// get names
- virtual const char *GetSenstiveVolumeName1() const
+ virtual const char *GetSenstiveVolumeName1() const
{return "ITSSPDlay1-sensor";}
- virtual const char *GetSenstiveVolumeName2() const
+ virtual const char *GetSenstiveVolumeName2() const
{return "ITSSPDlay2-sensor";}
virtual const char *GetSenstiveVolumeName(Int_t lay) const
{return (lay==1) ? GetSenstiveVolumeName1():GetSenstiveVolumeName2();}
// get medium
virtual TGeoMedium* GetMedium(const char* mediumName,
- TGeoManager *mgr = gGeoManager) const;
+ const TGeoManager *mgr = gGeoManager) const;
// retrieve the mounting location and rotation needed to mount an SPD stave
+ virtual Int_t GetSPDsectorX0Size() const
+ {return fSPDsectorX0.GetSize();}
virtual Bool_t GetSectorMountingPoints(Int_t index, Double_t &x0,
Double_t &y0, Double_t &x1, Double_t &y1) const;
// displace the staves on the carbon fiber sector
// print class in ascii form to stream
virtual void PrintAscii(ostream *os) const;
// read in class in ascii form from stream
- virtual void ReadAscii(istream *is);
+ virtual void ReadAscii(istream *is);
/* Parts of the geometry */
virtual TGeoVolume* CreateClip(TArrayD &sizes,Bool_t isDummy,
TGeoManager *mgr = gGeoManager) const;
// the grounding foil (splitted in many components)
- //virtual TGeoVolumeAssembly* CreateGroundingFoilSingle(Int_t type,
- // TArrayD &sizes, TGeoManager *mgr = gGeoManager) const;
virtual TGeoCompositeShape* CreateGroundingFoilShape(Int_t itype,
Double_t &length,Double_t &width,Double_t thickness,TArrayD &sizes);
- virtual TGeoVolume* CreateGroundingFoil(Bool_t isRight, TArrayD &sizes,
+ virtual TGeoVolumeAssembly* CreateGroundingFoil(Bool_t isRight, TArrayD &sizes,
TGeoManager *mgr = gGeoManager);
// the MCM (thin part + thick part with chips inside)
virtual TGeoVolumeAssembly* CreateMCM(Bool_t isRight, TArrayD &sizes,
TGeoManager *mgr = gGeoManager) const;
// the pixel bus (flat part + pt1000s + large capacitors/resistors)
- virtual TGeoVolumeAssembly* CreatePixelBus(Bool_t isRight, Int_t ilayer, TArrayD &sizes,
+ virtual TGeoVolumeAssembly* CreatePixelBus(Bool_t isRight, Int_t layer, TArrayD &sizes,
TGeoManager *mgr = gGeoManager) const;
// the extender complicated geometry
virtual TGeoVolume* CreateExtender(const Double_t *params,
const TGeoMedium *medium, TArrayD &sizes) const;
- // the Pixel Bus & extenders (old method which will be removed)
- virtual TGeoVolumeAssembly* CreatePixelBusAndExtensions(Bool_t zpos=kTRUE,
- TGeoManager *mgr = gGeoManager) const;
- virtual TGeoVolumeAssembly* CreateConeModule(TGeoManager *mgr = gGeoManager) const;
+ virtual TGeoVolume* CreatePatchPanel(TArrayD &sizes,
+ TGeoManager *mgr = gGeoManager) const;
+
+ virtual TList* CreateConeModule(Bool_t sideC, const Double_t angle,
+ TGeoManager *mgr = gGeoManager) const;
virtual void CreateCones(TGeoVolume *moth) const;
- // a half-stave (put together ladders + MCM + bus, and add clips
+/* virtual*/ void CreateServices(TGeoVolume *moth) const;
+ // a half-stave (put together ladders + MCM + bus, and add clips
// if requested)
virtual TGeoVolumeAssembly* CreateHalfStave(Bool_t isRight, Int_t layer,
Int_t idxCentral, Int_t idxSide,TArrayD &sizes/*,
virtual TGeoVolumeAssembly* CreateStave(Int_t layer, TArrayD &sizes,
/*Bool_t addClips = kFALSE,*/TGeoManager *mgr = gGeoManager);
// the complete Carbon Fiber sector (support + staves)
- virtual void CarbonFiberSector(TGeoVolume *moth, Double_t &xAAtubeCenter0,
+ virtual void CarbonFiberSector(TGeoVolume *moth, Int_t sect, Double_t &xAAtubeCenter0,
Double_t &yAAtubeCenter0, TGeoManager *mgr = gGeoManager);
// the whole SPD barrel (the 10 sectors at once)
virtual void SPDSector(TGeoVolume *moth, TGeoManager *mgr = gGeoManager);
private:
// NOTE:
// all of the member functions which define a component of the final SPD
- // will need to be defined as private once the design is fixed and
+ // will need to be defined as private once the design is fixed and
// does not need any longer to be checked and debugged.
/* Service methods for internal use only */
- // compute shape of the SPD Sector given specific inputs
+ // compute shape of the SPD Sector given specific inputs
void SPDsectorShape(Int_t n,const Double_t *xc, const Double_t *yc,
const Double_t *r,const Double_t *ths,
- const Double_t *the, Int_t npr,Int_t &m,
+ const Double_t *the, Int_t npr,Int_t &m,
Double_t **xp, Double_t **yp) const;
// compute a point o a line parallel to a given direction
// and with a fixed distance from it
Bool_t CFHolePoints(Double_t s,Double_t r1,Double_t r2,Double_t l,
Double_t &x,Double_t &y)const;
+ // create the cooling tubes going from the manifolds to the staves
+ void CreateCoolingTubes(TGeoVolume *moth, Bool_t sideC) const;
+
/* Data members */
- static const Double_t fgkGapLadder;// thicknes of the empty (air) gap left
- // between the ladder and the grounding
+ static const Double_t fgkGapLadder;// thicknes of the empty (air) gap left
+ // between the ladder and the grounding
// foil for alignment
static const Double_t fgkGapHalfStave;//thickness of the empty (air) gap
// left between HS and Carbon Suport
Bool_t fAddStave[6]; // [DEBUG] must be TRUE for all staves
- // which will be mounted in the sector
- // (used to check overlaps)
+ // which will be mounted in the sector
+ // (used to check overlaps)
TArrayD fSPDsectorX0; // X of first edge of sector plane for stave
TArrayD fSPDsectorY0; // Y of first edge of sector plane for stave
TArrayD fSPDsectorX1; // X of second edge of sector plane for stave