]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSv11Geometry.h
Memory leak correction (savannah #84632) Melinda
[u/mrichter/AliRoot.git] / ITS / AliITSv11Geometry.h
index b8782ff7d890844aebb5133b53d045263f306ff0..866c74488ddb47acc02aac4cb6ac7902eab2e908 100644 (file)
   Base class for defining large parts of the ITS geometry, v11.
  */
 #include <TObject.h>
+#include <AliLog.h>
 class TGeoArb8;
 class TGeoPcon;
 class TGeoTube;
 class TGeoTubeSeg;
 class TGeoConeSeg;
 class TGeoBBox;
-class TGeoMixture;
-class TArrayD;
-class TArrayI;
-class TObjArray;
 
 class AliITSv11Geometry : public TObject {
   public:
-    AliITSv11Geometry(){fDebug=0;};
-    AliITSv11Geometry(Int_t debug){fDebug=debug;};
+    AliITSv11Geometry():fDebug(AliDebugLevel()) {};
+    AliITSv11Geometry(Int_t debug):fDebug(debug) {};
     virtual ~AliITSv11Geometry(){};
     //
-    virtual TGeoMixture *CreateMixtureByNumber(const char* name,Int_t nel,
-                                               const TArrayI *w,
-                                               const TObjArray *mix,
-                                               Double_t den);
-    virtual TGeoMixture *CreateMixtureByVolume(const char* name,Int_t nel,
-                                               const TArrayD *v,
-                                               const TObjArray *mix,
-                                               Double_t den);
-    virtual TGeoMixture *CreateMixtureByWeight(const char* name,Int_t nel,
-                                               const TArrayD *w,
-                                               const TObjArray *mix,
-                                               Double_t den);
-    //
     // Sets the debug flag for debugging output
     void SetDebug(Int_t level=5){fDebug=level;}
     // Clears the debug flag so no debugging output will be generated
@@ -57,6 +41,15 @@ class AliITSv11Geometry : public TObject {
     Double_t CosD(Double_t deg)const{return TMath::Cos(deg*TMath::DegToRad());}
     // Tangent function
     Double_t TanD(Double_t deg)const{return TMath::Tan(deg*TMath::DegToRad());}
+    // Determine the intersection of two lines
+    void IntersectLines(Double_t m, Double_t x0, Double_t y0,
+                       Double_t n, Double_t x1, Double_t y1,
+                       Double_t &xi, Double_t &yi)const;
+    // Determine the intersection of a line and a circle
+    static Bool_t IntersectCircle(Double_t m, Double_t x0, Double_t y0,
+                          Double_t rr, Double_t xc, Double_t yc,
+                                 Double_t &xi1, Double_t &yi1,
+                          Double_t &xi2, Double_t &yi2);
     // Given the line, defined by the two points (x0,y0) and (x1,y1) and the
     // point x, return the value of y.
     Double_t Yfrom2Points(Double_t x0,Double_t y0,
@@ -121,7 +114,7 @@ class AliITSv11Geometry : public TObject {
     void InsidePoint(const TGeoPcon *p,Int_t i1,Int_t i2,Int_t i3,
                         Double_t Cthick,TGeoPcon *q,Int_t j1,Bool_t max)const;
     // Given two intersecting lines defined by the points (x0,y0), (x1,y1) and
-    // (x1,y1), (x1,y2) {intersecting at (x1,y1)} the point (x,y) a distance
+    // (x1,y1), (x2,y2) {intersecting at (x1,y1)} the point (x,y) a distance
     // c away is returned such that two lines a distance c away from the
     // lines defined above intersect at (x,y).
      void InsidePoint(Double_t x0,Double_t y0,Double_t x1,Double_t y1,
@@ -162,9 +155,15 @@ class AliITSv11Geometry : public TObject {
     void AnglesForRoundedCorners(Double_t x0,Double_t y0,Double_t r0,
                                  Double_t x1,Double_t y1,Double_t r1,
                                  Double_t &t0,Double_t &t1)const;
+    // Define a general CreateMaterials function here so that if
+    // any specific subdetector does not define it this null function
+    // will due. This function is not declaired const so that a sub-
+    // detector's version may use class variables if they wish.
+    void CreateDefaultMaterials();
+    virtual void CreateMaterials(){};
     // Function to create figure needed for this class' documentation
-     void MakeFigure1(Double_t x0=0.0,Double_t y0=0.0,Double_t r0=2.0,
-                      Double_t x1=-4.0,Double_t y1=-2.0,Double_t r1=1.0);
+    void MakeFigure1(Double_t x0=0.0,Double_t y0=0.0,Double_t r0=2.0,
+                     Double_t x1=-4.0,Double_t y1=-2.0,Double_t r1=1.0);
   protected:
 
     // Units, Convert from k?? to cm,degree,GeV,seconds,
@@ -173,6 +172,16 @@ class AliITSv11Geometry : public TObject {
     static const Double_t fgkcm; // Convert cm to TGeom's cm.
     static const Double_t fgkDegree; //Convert degrees to TGeom's degrees
     static const Double_t fgkRadian; //To Radians
+    static const Double_t fgkgcm3;   // Density in g/cm^3
+    static const Double_t fgkKgm3;   // Density in kg/m^3
+    static const Double_t fgkKgdm3;   // Density in kg/dm^3
+    static const Double_t fgkCelsius; // Temperature in degrees Celcius
+    static const Double_t fgkPascal;  // Preasure in Pascal
+    static const Double_t fgkKPascal;  // Preasure in KPascal
+    static const Double_t fgkeV;  // Energy in eV
+    static const Double_t fgkKeV;  // Energy in KeV
+    static const Double_t fgkMeV;  // Energy in MeV
+    static const Double_t fgkGeV;  // Energy in GeV
 
   private:
     Double_t AngleForRoundedCorners0(Double_t dx,Double_t dy,