G4ExcitedMesonConstructor.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 // This code plementation is the intellectual property of
00027 // the GEANT4 collaboration.
00028 //
00029 // By copying, distributing or modifying the Program (or any work
00030 // based on the Program) you indicate your acceptance of this statement,
00031 // and all its terms.
00032 //
00033 // $Id$
00034 //
00035 // 
00036 // --------------------------------------------------------------
00037 //      GEANT 4 class implementation file 
00038 //
00039 //      History: first implementation, based on object model of
00040 //      10 oct 1998  H.Kurashige
00041 // ---------------------------------------------------------------
00042 #ifndef G4ExcitedMesonConstructor_h
00043 #define G4ExcitedMesonConstructor_h 1
00044 
00045 #include "globals.hh"
00046 #include "G4ios.hh"
00047 class     G4DecayTable;
00048 
00049 class G4ExcitedMesonConstructor
00050 { 
00051   //This class is a utility class for construction 
00052   //short lived particles
00053 
00054   public:
00055     G4ExcitedMesonConstructor(G4int nStates = 0, G4int isoSpin=0);
00056     virtual  ~G4ExcitedMesonConstructor();
00057   
00058   public:
00059     virtual  void Construct(G4int indexOfState = -1);
00060  
00061   protected:
00062     void ConstructMesons(G4int indexOfState, G4int indexOfType);
00063      
00064     G4String GetName(G4int iIso3, G4int iState, G4int idxType);
00065     G4double GetCharge(G4int iIsoSpin3);
00066     G4int    GetEncoding(G4int iIsoSpin3, G4int idxState, G4int idxType);
00067     G4int    GetQuarkContents(G4int iQ, G4int iIso3,  G4int iType);
00068 
00069   public:
00070     enum { NMultiplets = 10 };
00071   protected:    
00072     enum { 
00073       N11P1 = 0, N13P0 = 1, N13P1 = 2, N13P2 = 3,
00074       N11D2 = 4, N13D1 = 5, N13D3 = 6,
00075       N21S0 = 7, N23S1 = 8, N23P2 = 9
00076     };
00077     
00078   public:
00079     enum { NMesonTypes = 5 };
00080   protected:    
00081     enum { TPi=0, TEta=1, TEtaPrime=2, TK=3, TAntiK=4 }; 
00082 
00083   protected:    
00084     const G4String type;
00085     const G4int    leptonNumber;
00086     const G4int    baryonNumber;
00087 
00088     G4bool Exist(G4int idxState, G4int idxType);
00089     G4double GetCharge(G4int iIsoSpin3, G4int idxType);
00090     static const char* name[ NMultiplets ][ NMesonTypes ];
00091     static const G4double mass[ NMultiplets ][ NMesonTypes ];
00092     static const G4double massKdiff[ NMultiplets ];
00093     static const G4double width[ NMultiplets ][ NMesonTypes ];
00094     static const G4double widthKdiff[ NMultiplets ];
00095     static const G4int    iIsoSpin[ NMesonTypes ];    
00096     static const G4int    iSpin[ NMultiplets ];
00097     static const G4int    iParity[ NMultiplets ];
00098     static const G4int    iGParity[ NMultiplets ][ NMesonTypes ];
00099     static const G4int    iChargeConjugation[ NMultiplets ];
00100     static const G4int    encodingOffset[ NMultiplets ];
00101    
00102   public:
00103     enum     { NumberOfDecayModes = 19 };
00104   protected:    
00105     enum     { MPiGamma = 0, MRhoGamma=1, M2Pi=2,      MPiRho=3, 
00106                M3Pi= 4,      MPiEta=5,    M4Pi=6,      MKKStar=7,
00107                M2PiEta=8,    MRhoEta=9,   M2PiRho=10,  M2PiOmega=11,
00108                M2Eta=12,     M2K=13,      M2KPi=14,    MPiOmega=15,
00109                MPiF2=16,     MPiF0=17,    MPiA2=18 };
00110     enum     { MKPi = 0,     MKStarPi=1,  MKRho=2,     MKOmega=3,
00111                MKStar2Pi=4,  MKTwoPi=5,   MKEta=6}; 
00112                
00113                
00114     static const G4double bRatio[ NMultiplets ][ NMesonTypes ][ NumberOfDecayModes];
00115 
00116     G4DecayTable* CreateDecayTable(const G4String&,
00117                                         G4int , G4int, G4int);
00118     
00119     G4DecayTable* AddKPiMode( G4DecayTable* table, const G4String& name,
00120                                         G4double br, G4int iIso3, G4int iType);
00121     G4DecayTable* AddKStarPiMode( G4DecayTable* table, const G4String& name,
00122                                         G4double br, G4int iIso3, G4int iType);
00123     G4DecayTable* AddKStar2PiMode( G4DecayTable* table, const G4String& name,
00124                                         G4double br, G4int iIso3, G4int iType);
00125     G4DecayTable* AddKRhoMode( G4DecayTable* table, const G4String& name,
00126                                         G4double br, G4int iIso3, G4int iType);
00127     G4DecayTable* AddKTwoPiMode( G4DecayTable* table, const G4String& name,
00128                                         G4double br, G4int iIso3, G4int iType);
00129     G4DecayTable* AddKOmegaMode( G4DecayTable* table, const G4String& name,
00130                                         G4double br, G4int iIso3, G4int iType);
00131     G4DecayTable* AddKEtaMode( G4DecayTable* table, const G4String& name,
00132                                         G4double br, G4int iIso3, G4int iType);
00133     G4DecayTable* AddPiGammaMode( G4DecayTable* table, const G4String& name,
00134                                         G4double br, G4int iIso3,G4int iIso);
00135     G4DecayTable* AddRhoGammaMode( G4DecayTable* table, const G4String& name,
00136                                         G4double br, G4int iIso3, G4int iIso);
00137     G4DecayTable* Add2PiMode( G4DecayTable* table, const G4String& name,
00138                                         G4double br, G4int iIso3, G4int iIso);
00139     G4DecayTable* AddPiRhoMode( G4DecayTable* table, const G4String& name,
00140                                         G4double br, G4int iIso3, G4int iIso);
00141     G4DecayTable* AddPiEtaMode( G4DecayTable* table, const G4String& name,
00142                                         G4double br, G4int iIso3, G4int iIso);
00143     G4DecayTable* AddPiF2Mode( G4DecayTable* table, const G4String& name,
00144                                         G4double br, G4int iIso3, G4int iIso);
00145     G4DecayTable* AddPiF0Mode( G4DecayTable* table, const G4String& name,
00146                                         G4double br, G4int iIso3, G4int iIso);
00147     G4DecayTable* AddPiA2Mode( G4DecayTable* table, const G4String& name,
00148                                         G4double br, G4int iIso3, G4int iIso);
00149     G4DecayTable* Add3PiMode( G4DecayTable* table, const G4String& name,
00150                                         G4double br, G4int iIso3, G4int iIso);
00151     G4DecayTable* Add4PiMode( G4DecayTable* table, const G4String& name,
00152                                         G4double br, G4int iIso3, G4int iIso);
00153     G4DecayTable* AddKKStarMode( G4DecayTable* table, const G4String& name,
00154                                         G4double br, G4int iIso3, G4int iIso);
00155     G4DecayTable* Add2PiEtaMode( G4DecayTable* table, const G4String& name,
00156                                         G4double br, G4int iIso3, G4int iIso);
00157     G4DecayTable* AddRhoEtaMode( G4DecayTable* table, const G4String& name,
00158                                         G4double br, G4int iIso3, G4int iIso);
00159     G4DecayTable* Add2PiRhoMode( G4DecayTable* table, const G4String& name,
00160                                         G4double br, G4int iIso3, G4int iIso);
00161     G4DecayTable* Add2PiOmegaMode( G4DecayTable* table, const G4String& name,
00162                                         G4double br, G4int iIso3, G4int iIso);
00163     G4DecayTable* AddPiOmegaMode( G4DecayTable* table, const G4String& name,
00164                                         G4double br, G4int iIso3, G4int iIso);
00165     G4DecayTable* Add2EtaMode( G4DecayTable* table, const G4String& name,
00166                                         G4double br, G4int iIso3, G4int iIso);
00167     G4DecayTable* Add2KMode( G4DecayTable* table, const G4String& name,
00168                                         G4double br, G4int iIso3, G4int iIso);
00169     G4DecayTable* Add2KPiMode( G4DecayTable* table, const G4String& name,
00170                                         G4double br, G4int iIso3, G4int iIso);
00171                
00172                
00173 
00174 };
00175 
00176 
00177 inline 
00178   G4String G4ExcitedMesonConstructor::GetName(G4int iIso3, 
00179                                               G4int iState, 
00180                                               G4int iType)
00181 {
00182   G4String particle = name[iState][iType];
00183   if (iType == TPi) {
00184     if ( iIso3 == +2 ){
00185       particle += "+";
00186     } else if ( iIso3 == -2 ){
00187       particle += "-";
00188     } else {
00189       particle += "0";
00190     }
00191   } else if (iType == TK) {
00192     if ( iIso3 == +1 ){
00193       particle += "+";
00194     } else if ( iIso3 == -1 ){
00195       particle += "0";
00196     }
00197   }  else if (iType == TAntiK) {
00198     if ( iIso3 == +1 ){
00199       particle += "0";
00200       particle = "anti_" + particle;
00201     } else if ( iIso3 == -1 ){
00202       particle += "-";
00203     }
00204   } 
00205   return particle;
00206 }
00207 
00208 #endif

Generated on Mon May 27 17:48:14 2013 for Geant4 by  doxygen 1.4.7