]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSv11GeometrySPD.h
Macro for SDD dE/dx calibration (from Leonardo and Riccardo)
[u/mrichter/AliRoot.git] / ITS / AliITSv11GeometrySPD.h
index 77ea846788af6ba02b246e4bc6016cfb2a3ac507..926402703eeb8900fb599fb852b75292f231a19e 100644 (file)
@@ -1,11 +1,11 @@
 #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
@@ -43,37 +46,21 @@ class AliITSv11GeometrySPD : public AliITSv11Geometry
     // 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
@@ -83,7 +70,7 @@ class AliITSv11GeometrySPD : public AliITSv11Geometry
     // 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 */
 
@@ -94,28 +81,28 @@ class AliITSv11GeometrySPD : public AliITSv11Geometry
     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, 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/*,
@@ -124,7 +111,7 @@ class AliITSv11GeometrySPD : public AliITSv11Geometry
     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);
@@ -144,15 +131,15 @@ class AliITSv11GeometrySPD : public AliITSv11Geometry
  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
@@ -165,16 +152,19 @@ class AliITSv11GeometrySPD : public AliITSv11Geometry
     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