source: trunk/source/particles/shortlived/include/G4ExcitedMesonConstructor.hh @ 1340

Last change on this file since 1340 was 1340, checked in by garnier, 14 years ago

update ti head

File size: 8.8 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26// This code plementation is the intellectual property of
27// the GEANT4 collaboration.
28//
29// By copying, distributing or modifying the Program (or any work
30// based on the Program) you indicate your acceptance of this statement,
31// and all its terms.
32//
33// $Id: G4ExcitedMesonConstructor.hh,v 1.9 2010/10/01 02:41:44 kurasige Exp $
34// GEANT4 tag $Name: particles-V09-03-15 $
35//
36//
37// --------------------------------------------------------------
38//      GEANT 4 class implementation file
39//
40//      History: first implementation, based on object model of
41//      10 oct 1998  H.Kurashige
42// ---------------------------------------------------------------
43#ifndef G4ExcitedMesonConstructor_h
44#define G4ExcitedMesonConstructor_h 1
45
46#include "globals.hh"
47#include "G4ios.hh"
48class     G4DecayTable;
49
50class G4ExcitedMesonConstructor
51{ 
52  //This class is a utility class for construction
53  //short lived particles
54
55  public:
56    G4ExcitedMesonConstructor(G4int nStates = 0, G4int isoSpin=0);
57    virtual  ~G4ExcitedMesonConstructor();
58 
59  public:
60    virtual  void Construct(G4int indexOfState = -1);
61 
62  protected:
63    void ConstructMesons(G4int indexOfState, G4int indexOfType);
64     
65    G4String GetName(G4int iIso3, G4int iState, G4int idxType);
66    G4double GetCharge(G4int iIsoSpin3);
67    G4int    GetEncoding(G4int iIsoSpin3, G4int idxState, G4int idxType);
68    G4int    GetQuarkContents(G4int iQ, G4int iIso3,  G4int iType);
69
70  public:
71    enum { NMultiplets = 10 };
72  protected:   
73    enum { 
74      N11P1 = 0, N13P0 = 1, N13P1 = 2, N13P2 = 3,
75      N11D2 = 4, N13D1 = 5, N13D3 = 6,
76      N21S0 = 7, N23S1 = 8, N23P2 = 9
77    };
78   
79  public:
80    enum { NMesonTypes = 5 };
81  protected:   
82    enum { TPi=0, TEta=1, TEtaPrime=2, TK=3, TAntiK=4 }; 
83
84  protected:   
85    const G4String type;
86    const G4int    leptonNumber;
87    const G4int    baryonNumber;
88
89    G4bool Exist(G4int idxState, G4int idxType);
90    G4double GetCharge(G4int iIsoSpin3, G4int idxType);
91    static const char* name[ NMultiplets ][ NMesonTypes ];
92    static const G4double mass[ NMultiplets ][ NMesonTypes ];
93    static const G4double massKdiff[ NMultiplets ];
94    static const G4double width[ NMultiplets ][ NMesonTypes ];
95    static const G4double widthKdiff[ NMultiplets ];
96    static const G4int    iIsoSpin[ NMesonTypes ];   
97    static const G4int    iSpin[ NMultiplets ];
98    static const G4int    iParity[ NMultiplets ];
99    static const G4int    iGParity[ NMultiplets ][ NMesonTypes ];
100    static const G4int    iChargeConjugation[ NMultiplets ];
101    static const G4int    encodingOffset[ NMultiplets ];
102   
103  public:
104    enum     { NumberOfDecayModes = 19 };
105  protected:   
106    enum     { MPiGamma = 0, MRhoGamma=1, M2Pi=2,      MPiRho=3, 
107               M3Pi= 4,      MPiEta=5,    M4Pi=6,      MKKStar=7,
108               M2PiEta=8,    MRhoEta=9,   M2PiRho=10,  M2PiOmega=11,
109               M2Eta=12,     M2K=13,      M2KPi=14,    MPiOmega=15,
110               MPiF2=16,     MPiF0=17,    MPiA2=18 };
111    enum     { MKPi = 0,     MKStarPi=1,  MKRho=2,     MKOmega=3,
112               MKStar2Pi=4,  MKTwoPi=5,   MKEta=6}; 
113               
114               
115    static const G4double bRatio[ NMultiplets ][ NMesonTypes ][ NumberOfDecayModes];
116
117    G4DecayTable* CreateDecayTable(const G4String&,
118                                        G4int , G4int, G4int);
119   
120    G4DecayTable* AddKPiMode( G4DecayTable* table, const G4String& name,
121                                        G4double br, G4int iIso3, G4int iType);
122    G4DecayTable* AddKStarPiMode( G4DecayTable* table, const G4String& name,
123                                        G4double br, G4int iIso3, G4int iType);
124    G4DecayTable* AddKStar2PiMode( G4DecayTable* table, const G4String& name,
125                                        G4double br, G4int iIso3, G4int iType);
126    G4DecayTable* AddKRhoMode( G4DecayTable* table, const G4String& name,
127                                        G4double br, G4int iIso3, G4int iType);
128    G4DecayTable* AddKTwoPiMode( G4DecayTable* table, const G4String& name,
129                                        G4double br, G4int iIso3, G4int iType);
130    G4DecayTable* AddKOmegaMode( G4DecayTable* table, const G4String& name,
131                                        G4double br, G4int iIso3, G4int iType);
132    G4DecayTable* AddKEtaMode( G4DecayTable* table, const G4String& name,
133                                        G4double br, G4int iIso3, G4int iType);
134    G4DecayTable* AddPiGammaMode( G4DecayTable* table, const G4String& name,
135                                        G4double br, G4int iIso3,G4int iIso);
136    G4DecayTable* AddRhoGammaMode( G4DecayTable* table, const G4String& name,
137                                        G4double br, G4int iIso3, G4int iIso);
138    G4DecayTable* Add2PiMode( G4DecayTable* table, const G4String& name,
139                                        G4double br, G4int iIso3, G4int iIso);
140    G4DecayTable* AddPiRhoMode( G4DecayTable* table, const G4String& name,
141                                        G4double br, G4int iIso3, G4int iIso);
142    G4DecayTable* AddPiEtaMode( G4DecayTable* table, const G4String& name,
143                                        G4double br, G4int iIso3, G4int iIso);
144    G4DecayTable* AddPiF2Mode( G4DecayTable* table, const G4String& name,
145                                        G4double br, G4int iIso3, G4int iIso);
146    G4DecayTable* AddPiF0Mode( G4DecayTable* table, const G4String& name,
147                                        G4double br, G4int iIso3, G4int iIso);
148    G4DecayTable* AddPiA2Mode( G4DecayTable* table, const G4String& name,
149                                        G4double br, G4int iIso3, G4int iIso);
150    G4DecayTable* Add3PiMode( G4DecayTable* table, const G4String& name,
151                                        G4double br, G4int iIso3, G4int iIso);
152    G4DecayTable* Add4PiMode( G4DecayTable* table, const G4String& name,
153                                        G4double br, G4int iIso3, G4int iIso);
154    G4DecayTable* AddKKStarMode( G4DecayTable* table, const G4String& name,
155                                        G4double br, G4int iIso3, G4int iIso);
156    G4DecayTable* Add2PiEtaMode( G4DecayTable* table, const G4String& name,
157                                        G4double br, G4int iIso3, G4int iIso);
158    G4DecayTable* AddRhoEtaMode( G4DecayTable* table, const G4String& name,
159                                        G4double br, G4int iIso3, G4int iIso);
160    G4DecayTable* Add2PiRhoMode( G4DecayTable* table, const G4String& name,
161                                        G4double br, G4int iIso3, G4int iIso);
162    G4DecayTable* Add2PiOmegaMode( G4DecayTable* table, const G4String& name,
163                                        G4double br, G4int iIso3, G4int iIso);
164    G4DecayTable* AddPiOmegaMode( G4DecayTable* table, const G4String& name,
165                                        G4double br, G4int iIso3, G4int iIso);
166    G4DecayTable* Add2EtaMode( G4DecayTable* table, const G4String& name,
167                                        G4double br, G4int iIso3, G4int iIso);
168    G4DecayTable* Add2KMode( G4DecayTable* table, const G4String& name,
169                                        G4double br, G4int iIso3, G4int iIso);
170    G4DecayTable* Add2KPiMode( G4DecayTable* table, const G4String& name,
171                                        G4double br, G4int iIso3, G4int iIso);
172               
173               
174
175};
176
177
178inline 
179  G4String G4ExcitedMesonConstructor::GetName(G4int iIso3, 
180                                              G4int iState, 
181                                              G4int iType)
182{
183  G4String particle = name[iState][iType];
184  if (iType == TPi) {
185    if ( iIso3 == +2 ){
186      particle += "+";
187    } else if ( iIso3 == -2 ){
188      particle += "-";
189    } else {
190      particle += "0";
191    }
192  } else if (iType == TK) {
193    if ( iIso3 == +1 ){
194      particle += "+";
195    } else if ( iIso3 == -1 ){
196      particle += "0";
197    }
198  }  else if (iType == TAntiK) {
199    if ( iIso3 == +1 ){
200      particle += "0";
201      particle = "anti_" + particle;
202    } else if ( iIso3 == -1 ){
203      particle += "-";
204    }
205  } 
206  return particle;
207}
208
209#endif
Note: See TracBrowser for help on using the repository browser.