]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDgeometry.h
Better handling of preferred storage
[u/mrichter/AliRoot.git] / TRD / AliTRDgeometry.h
index 6680b7ee1f999d54b69e3ce1c0e45e6e5745018f..e3a66c30df4f58144d82b6710bf8e64022c4ae81 100644 (file)
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "AliGeometry.h"
-
 #include "TObjArray.h"
 
-class TGeoHMatrix;
+#include "AliGeometry.h"
 
-class AliRunLoader;
+class TGeoHMatrix;
 
 class AliTRDpadPlane;
 
@@ -41,12 +39,12 @@ class AliTRDgeometry : public AliGeometry {
   virtual Int_t    IsVersion()                                            { return 1;               }
   virtual Bool_t   Impact(const TParticle* ) const                        { return kTRUE;           }
   virtual Bool_t   IsHole(Int_t la, Int_t st, Int_t se) const;
-
-  virtual Bool_t   RotateBack(Int_t det, Double_t *loc, Double_t *glb) const;
+  virtual Bool_t   IsOnBoundary(Int_t det, Float_t y, Float_t z, Float_t eps = .5) const;
+  virtual Bool_t   RotateBack(Int_t det, const Double_t * const loc, Double_t *glb) const;
 
           Bool_t   ChamberInGeometry(Int_t det);
 
-          void     GroupChamber(Int_t ilayer, Int_t istack, Int_t *idtmed);
+          void     AssembleChamber(Int_t ilayer, Int_t istack);
           void     CreateFrame(Int_t *idtmed);
           void     CreateServices(Int_t *idtmed);
 
@@ -75,6 +73,9 @@ class AliTRDgeometry : public AliGeometry {
 
   static  Float_t  GetTime0(Int_t layer)                                 { return fgkTime0[layer];        }
 
+  static  Double_t GetXtrdBeg()                                          { return fgkXtrdBeg;             }
+  static  Double_t GetXtrdEnd()                                          { return fgkXtrdEnd;             }
+
           Char_t   GetSMstatus(Int_t sm) const                           { return fSMstatus[sm];          }
           Float_t  GetChamberWidth(Int_t layer) const                    { return fCwidth[layer]      ;   }
           Float_t  GetChamberLength(Int_t layer, Int_t stack) const      { return fClength[layer][stack]; }
@@ -92,13 +93,18 @@ class AliTRDgeometry : public AliGeometry {
   static  Int_t    Ndet()                                                { return fgkNdet;          }
 
   static  Float_t  Cheight()                                             { return fgkCH;            }
+  static  Float_t  CheightSV()                                           { return fgkCHsv;          }
   static  Float_t  Cspace()                                              { return fgkVspace;        }
   static  Float_t  CraHght()                                             { return fgkCraH;          }
   static  Float_t  CdrHght()                                             { return fgkCdrH;          }
   static  Float_t  CamHght()                                             { return fgkCamH;          }
   static  Float_t  CroHght()                                             { return fgkCroH;          }
+  static  Float_t  CsvHght()                                             { return fgkCsvH;          }
   static  Float_t  CroWid()                                              { return fgkCroW;          }
-  static  Float_t  MyThick()                                             { return fgkMyThick;       }
+
+  static  Float_t  AnodePos()                                            { return fgkAnodePos;      }
+
+  static  Float_t  MyThick()                                             { return fgkRMyThick;      }
   static  Float_t  DrThick()                                             { return fgkDrThick;       }
   static  Float_t  AmThick()                                             { return fgkAmThick;       }
   static  Float_t  DrZpos()                                              { return fgkDrZpos;        }
@@ -142,47 +148,59 @@ class AliTRDgeometry : public AliGeometry {
   static const Float_t  fgkCdrH;                             //  Height of the drift region of the chambers
   static const Float_t  fgkCamH;                             //  Height of the amplification region of the chambers
   static const Float_t  fgkCroH;                             //  Height of the readout of the chambers
-  static const Float_t  fgkCH;                               //  Total height of the chambers
+  static const Float_t  fgkCsvH;                             //  Height of the services on top of the chambers
+  static const Float_t  fgkCH;                               //  Total height of the chambers (w/o services)
+  static const Float_t  fgkCHsv;                             //  Total height of the chambers (with services)
+
+  static const Float_t  fgkAnodePos;                         //  Distance of anode wire plane relative to alignabl volume
 
   static const Float_t  fgkVspace;                           //  Vertical spacing of the chambers
   static const Float_t  fgkHspace;                           //  Horizontal spacing of the chambers
   static const Float_t  fgkVrocsm;                           //  Radial distance of the first ROC to the outer SM plates
+
   static const Float_t  fgkCalT;                             //  Thickness of the lower aluminum frame
-  static const Float_t  fgkCalW;                             //  Width of additional aluminum on lower frame
+  static const Float_t  fgkCalW;                             //  Width of additional aluminum ledge on lower frame
+  static const Float_t  fgkCalH;                             //  Height of additional aluminum ledge on lower frame
+  static const Float_t  fgkCalWmod;                          //  Width of additional aluminum ledge on lower frame
+  static const Float_t  fgkCalHmod;                          //  Height of additional aluminum ledge on lower frame
+  static const Float_t  fgkCwsW;                             //  Width of additional wacosit ledge on lower frame
+  static const Float_t  fgkCwsH;                             //  Height of additional wacosit ledge on lower frame
   static const Float_t  fgkCclsT;                            //  Thickness of the lower Wacosit frame sides
   static const Float_t  fgkCclfT;                            //  Thickness of the lower Wacosit frame front
   static const Float_t  fgkCglT;                             //  Thichness of the glue around the radiator
-  static const Float_t  fgkCcuT;                             //  Thickness of the upper Wacosit frame
+  static const Float_t  fgkCcuTa;                            //  Thickness of the upper Wacosit frame around amp. region
+  static const Float_t  fgkCcuTb;                            //  Thickness of the upper Wacosit frame around amp. region
   static const Float_t  fgkCauT;                             //  Thickness of the aluminum frame of the back panel
-
   static const Float_t  fgkCroW;                             //  Additional width of the readout chamber frames
 
   static const Float_t  fgkCpadW;                            //  Difference of outer chamber width and pad plane width
   static const Float_t  fgkRpadW;                            //  Difference of outer chamber width and pad plane width
 
-  static const Float_t  fgkMyThick;                          //  Thickness of the mylar-layer
-  static const Float_t  fgkRaThick;                          //  Thickness of the radiator
   static const Float_t  fgkXeThick;                          //  Thickness of the gas volume
   static const Float_t  fgkDrThick;                          //  Thickness of the drift region
   static const Float_t  fgkAmThick;                          //  Thickness of the amplification region
   static const Float_t  fgkWrThick;                          //  Thickness of the wire planes
-  static const Float_t  fgkCuThick;                          //  Thickness of the pad plane
-  static const Float_t  fgkGlThick;                          //  Thickness of the glue layer
-  static const Float_t  fgkSuThick;                          //  Thickness of the NOMEX support structure
-  static const Float_t  fgkRpThick;                          //  Thickness of the PCB readout boards
-  static const Float_t  fgkRcThick;                          //  Thickness of the PCB copper layers
-  static const Float_t  fgkRoThick;                          //  Thickness of all other ROB componentes (caps, etc.)
-
-  static const Float_t  fgkRaZpos;                           //  Position of the radiator
+
+  static const Float_t  fgkPPdThick;                         //  Thickness of copper of the pad plane
+  static const Float_t  fgkPPpThick;                         //  Thickness of PCB board of the pad plane
+  static const Float_t  fgkPGlThick;                         //  Thickness of the glue layer
+  static const Float_t  fgkPCbThick;                         //  Thickness of the carbon layers
+  static const Float_t  fgkPHcThick;                         //  Thickness of the honeycomb support structure
+  static const Float_t  fgkPPcThick;                         //  Thickness of the PCB readout boards
+  static const Float_t  fgkPRbThick;                         //  Thickness of the PCB copper layers
+  static const Float_t  fgkPElThick;                         //  Thickness of all other electronics components (caps, etc.)
+
+  static const Float_t  fgkRFbThick;                         //  Thickness of the fiber layers in the radiator
+  static const Float_t  fgkRRhThick;                         //  Thickness of the rohacell layers in the radiator
+  static const Float_t  fgkRGlThick;                         //  Thickness of the glue layers in the radiator
+  static const Float_t  fgkRCbThick;                         //  Thickness of the carbon layers in the radiator
+  static const Float_t  fgkRMyThick;                         //  Thickness of the mylar layers in the radiator
+
   static const Float_t  fgkDrZpos;                           //  Position of the drift region
   static const Float_t  fgkAmZpos;                           //  Position of the amplification region
-  static const Float_t  fgkWrZpos;                           //  Position of the wire planes
-  static const Float_t  fgkCuZpos;                           //  Position of the pad plane
-  static const Float_t  fgkGlZpos;                           //  Position of the glue layer
-  static const Float_t  fgkSuZpos;                           //  Position of the HEXCEL+G10 support structure
-  static const Float_t  fgkRpZpos;                           //  Position of the PCB readout boards
-  static const Float_t  fgkRcZpos;                           //  Position of the PCB copper layers
-  static const Float_t  fgkRoZpos;                           //  Position of all other ROB componentes (caps, etc.)
+  static const Float_t  fgkWrZposA;                          //  Position of the wire planes
+  static const Float_t  fgkWrZposB;                          //  Position of the wire planes
+  static const Float_t  fgkCalZpos;                          //  Position of the additional aluminum ledges
 
   static const Int_t    fgkMCMmax;                           //  Maximum number of MCMs per ROB
   static const Int_t    fgkMCMrow;                           //  Maximum number of MCMs per ROB Row
@@ -205,24 +223,16 @@ class AliTRDgeometry : public AliGeometry {
 
   static const Double_t fgkTime0Base;                        //  Base value for calculation of Time-position of pad 0
   static const Float_t  fgkTime0[kNlayer];                   //  Time-position of pad 0
-  
-  Float_t               fChamberUAorig[3*kNdets][3];         //  Volumes origin in
-  Float_t               fChamberUDorig[3*kNdets][3];         //  the chamber
-  Float_t               fChamberUForig[3*kNdets][3];         //  [3] = x, y, z
-  Float_t               fChamberUUorig[3*kNdets][3];         //
 
-  Float_t               fChamberUAboxd[3*kNdets][3];         //  Volumes box
-  Float_t               fChamberUDboxd[3*kNdets][3];         //  dimensions (half)
-  Float_t               fChamberUFboxd[3*kNdets][3];         //  [3] = x, y, z
-  Float_t               fChamberUUboxd[3*kNdets][3];         // 
+  static const Double_t fgkXtrdBeg;                          //  X-coordinate in tracking system of begin of TRD mother volume
+  static const Double_t fgkXtrdEnd;                          //  X-coordinate in tracking system of end of TRD mother volume
 
   TObjArray            *fClusterMatrixArray;                 //! Transformation matrices loc. cluster to tracking cs
   TObjArray            *fPadPlaneArray;                      //! Array of pad plane objects
 
   Char_t                fSMstatus[kNsector];                 //  Super module status byte
 
-  ClassDef(AliTRDgeometry,19)                                //  TRD geometry class
+  ClassDef(AliTRDgeometry,23)                                //  TRD geometry class
 
 };
-
 #endif