Support for heavy ions as primary in source.cxx
[u/mrichter/AliRoot.git] / TFluka / TFlukaIon.h
1 #ifndef TFLUKAION_H
2 #define TFLUKAION_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 ///////////////////////////////////////////////////////////////////////////////
10 //                                                                           //
11 //                                                                           //
12 // Class that gives access to properties of ions used as primary particles   //
13 //                                                                           //
14 //                                                                           //
15 //                                                                           //
16 ///////////////////////////////////////////////////////////////////////////////
17
18
19 #include <TNamed.h>
20
21 class TFlukaIon : public TNamed
22 {
23
24 public:
25     TFlukaIon();
26     TFlukaIon(const char* name, Int_t z, Int_t a, Int_t q, Double_t exE, Double_t mass = 0.);
27     Int_t    GetZ()                const  {return fZ;}
28     Int_t    GetA()                const  {return fA;}
29
30     Int_t    GetQ()                const  {return fQ;}
31     Double_t GetExcitationEnergy() const  {return fExEnergy;}
32     Double_t GetMass()             const  {return fMass;}
33     Int_t    GetPdgCode()          const  {return GetIonPdg(fZ, fA);}
34     //
35     void     WriteUserInputCard(FILE* file) const;
36     //
37     static void  AddIon(Int_t a, Int_t z);
38     static Int_t GetIonPdg(Int_t z, Int_t a, Int_t i = 0);
39     static Int_t    GetZ(Int_t pdg);
40     static Int_t    GetA(Int_t pdg);
41
42  protected:
43     Int_t    fZ;         // Z
44     Int_t    fA;         // A
45     Int_t    fQ;         // Q
46     Double_t fExEnergy;  // Excitation energy
47     Double_t fMass;      // Mass
48  private:
49     // Copy constructor and operator= declared but not implemented (-Weff++ flag)
50     TFlukaIon(const TFlukaIon&);
51     TFlukaIon& operator=(const TFlukaIon&);
52     
53     ClassDef(TFlukaIon, 1)          // Ion Properties
54 };
55         
56 #endif
57