22631430e9a2d92f6dca1528bd90fe885e425d8c
[u/mrichter/AliRoot.git] / STRUCT / AliALIFE.h
1 #ifndef ALIALIFE_H
2 #define ALIALIFE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 #include "TObject.h"
9 #include "TString.h"
10
11 class AliALIFE : public  TObject {
12  public:
13     AliALIFE(const char *name1, const char *name2);
14     AliALIFE();    
15     AliALIFE(const AliALIFE &rhs) : TObject(rhs) {
16         rhs.Copy(*this);
17     }
18     virtual ~AliALIFE() {}
19     void Cylinder(Float_t rmin, Float_t rmax,
20                   Float_t zmin, Float_t zmax,
21                   Float_t pos[3],
22                   char* Material, char* Field="MF", char* Cuts="$UNSHIELDED");
23     void OnionCylinder(Float_t* r, Int_t nr, Float_t zmin, Float_t zmax,
24                        Float_t pos[3],
25                        char** Materials, char** Fields=0, char** Cuts=0);
26     
27     void Cone(Float_t rmin1, Float_t rmin2,
28               Float_t rmax1, Float_t rmax2,
29               Float_t zmin, Float_t zmax,
30               Float_t pos[3],
31               char* Material, char* Field="MF", char* Cuts="$UNSHIELDED");
32     
33     void OnionCone(Float_t* r1, Float_t* r2, Int_t nr,
34                    Float_t zmin, Float_t zmax,
35                    Float_t pos[3],
36                    char** Materials, char** Fields=0, char** Cuts=0);
37
38     void PolyCone(Float_t* rmin, Float_t* rmax, Float_t* z, Int_t nz,
39                   Float_t pos[3], 
40                   char* Material, char* Field="MF", char* Cuts="$UNSHIELDED");
41
42     void OnionPolyCone(Float_t** r , Float_t* z, Int_t nr, Int_t nz,
43                        Float_t pos[3], 
44                        char** Materials, char** Fields=0, char** Cuts=0);
45     
46     void Comment(char* Comment);
47
48     void Finish(Bool_t remove = 0);
49
50     void SetDefaultVolume(TString vol1, TString vol2) 
51         {fDefaultVolume1=vol1; fDefaultVolume2=vol2;}
52     
53     void SetDefaultVolume(TString vol) 
54         {fDefaultVolume1=vol;}
55
56  protected:
57     Int_t        fNBodies;          // current number of bodies
58     Int_t        fNVolumes;         // current number of volumes
59     TString       fBodyFile;        // File for Fluka bodies
60     TString       fVolumeFile;      // File for Fluka volumes
61     FILE         *fFile1;           // ! output file for fluka geometry in ALIFE format  
62     FILE         *fFile2;           // ! scratch file
63     TString      fDefaultVolume1;   // default external volume 1 
64     TString      fDefaultVolume2;   // default external volume 2   
65  private:
66     void BodyHeader();
67     void VolumeHeader();
68     void Copy(AliALIFE &alife) const;
69
70     AliALIFE & operator = (const AliALIFE &rhs) {
71         rhs.Copy(*this);
72         return (*this);
73     }
74    ClassDef(AliALIFE,1)
75 };
76 #endif
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91