G4ExcitedXiConstructor.cc

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 //
00027 // $Id$
00028 //
00029 // 
00030 // --------------------------------------------------------------
00031 //      GEANT 4 class implementation file 
00032 //
00033 //      History: first implementation, based on object model of
00034 //      10 oct 1998  H.Kurashige
00035 // ---------------------------------------------------------------
00036 
00037 
00038 #include "G4ExcitedXiConstructor.hh"
00039 
00040 #include "G4SystemOfUnits.hh"
00041 #include "G4ParticleDefinition.hh"
00042 #include "G4ParticleTable.hh"
00043 #include "G4ShortLivedTable.hh"
00044 #include "G4PhaseSpaceDecayChannel.hh"
00045 #include "G4VDecayChannel.hh"
00046 #include "G4DecayTable.hh"
00047 
00048 G4ExcitedXiConstructor::G4ExcitedXiConstructor():
00049     G4ExcitedBaryonConstructor(NStates, XiIsoSpin)
00050 {
00051 
00052 }
00053 
00054 G4ExcitedXiConstructor::~G4ExcitedXiConstructor()
00055 {
00056 }
00057 
00058 G4DecayTable* G4ExcitedXiConstructor::CreateDecayTable(
00059                                                  const G4String&  parentName,  
00060                                                  G4int iIso3, 
00061                                                  G4int iState,
00062                                                  G4bool fAnti)
00063 {
00064 
00065   // create decay table
00066   G4DecayTable* decayTable =  new G4DecayTable();
00067 
00068   G4double br;
00069   if ( (br=bRatio[iState][XiPi]) >0.0) {
00070     AddXiPiMode( decayTable, parentName, br, iIso3, fAnti);
00071   }
00072 
00073   if ( (br=bRatio[iState][XiGamma]) >0.0) {
00074     AddXiGammaMode( decayTable, parentName, br, iIso3, fAnti);
00075   }
00076 
00077   if ( (br=bRatio[iState][LambdaK]) >0.0) {
00078     AddLambdaKMode( decayTable, parentName, br, iIso3, fAnti);
00079   }
00080 
00081   if ( (br=bRatio[iState][SigmaK]) >0.0) {
00082     AddSigmaKMode( decayTable, parentName, br, iIso3, fAnti);
00083   }
00084 
00085   return  decayTable;
00086 }
00087 
00088 G4DecayTable*  G4ExcitedXiConstructor::AddXiGammaMode( 
00089                                    G4DecayTable* decayTable, const G4String& nameParent,
00090                                     G4double br, G4int iIso3, G4bool fAnti)
00091 {
00092   G4VDecayChannel* mode;
00093   // 
00094   G4String daughterH;  
00095   if (iIso3== +1) {
00096      daughterH = "xi0";
00097    } else if (iIso3==-1) {
00098      daughterH = "xi-";
00099    }
00100   if (fAnti) daughterH = "anti_" + daughterH;
00101 
00102   // create decay channel  [parent    BR     #daughters]
00103   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00104                                            daughterH,"gamma");
00105   // add decay table
00106   decayTable->Insert(mode);
00107 
00108   return decayTable;
00109 }
00110 
00111 G4DecayTable*  G4ExcitedXiConstructor::AddLambdaKMode( 
00112                                     G4DecayTable* decayTable, const G4String& nameParent,
00113                                     G4double br, G4int iIso3, G4bool fAnti)
00114 
00115 
00116 {
00117   G4VDecayChannel* mode;
00118 
00119   G4String lambda = "lambda";
00120   G4String daughterK;
00121   G4double r = 0.;
00122 
00123   // ------------ Lambda K- ------------ 
00124   // determine daughters
00125   if (iIso3 == +1) {
00126     if (!fAnti) {
00127       daughterK = "kaon0";
00128     } else {
00129       daughterK = "anti_kaon0";
00130     }  
00131     r = br;
00132   } else if (iIso3 == -1) {
00133     if (!fAnti) {
00134       daughterK = "kaon-";
00135     } else {
00136       daughterK = "kaon+";
00137     }  
00138     r = br;
00139   }
00140   if (fAnti) lambda = "anti_" + lambda;
00141   if (r>0.) {
00142     // create decay channel  [parent    BR     #daughters]
00143     mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00144                                         lambda,daughterK);
00145     // add decay table
00146     decayTable->Insert(mode);
00147   }
00148 
00149   return decayTable;
00150 }
00151 
00152 G4DecayTable*  G4ExcitedXiConstructor::AddSigmaKMode( 
00153                                     G4DecayTable* decayTable, const G4String& nameParent,
00154                                     G4double br, G4int iIso3, G4bool fAnti)
00155 {
00156   G4VDecayChannel* mode;
00157 
00158   G4String daughterH;
00159   G4String daughterK;
00160   G4double r = 0.;
00161 
00162   // ------------ Sigma K- ------------ 
00163   // determine daughters
00164   if (iIso3== +1) {
00165     daughterH  = "sigma+";
00166     r= br/2.;
00167   } else if (iIso3== -1) {
00168     daughterH  = "sigma0";
00169     r = br/2.;
00170   }
00171   if (!fAnti) {
00172     daughterK = "kaon-";
00173   } else {
00174     daughterK = "kaon+";
00175   }
00176   if (fAnti) daughterH = "anti_" + daughterH;
00177   if (r>0.) {
00178     // create decay channel  [parent    BR     #daughters]
00179     mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00180                                         daughterH,daughterK);
00181     // add decay table
00182     decayTable->Insert(mode);
00183   }
00184 
00185   // ------------ Sigma K0 ------------ 
00186   // determine daughters
00187   if (iIso3 == +1) {
00188     daughterH  = "sigma0";
00189     r= br/2.;
00190   } else if (iIso3 == -1) {
00191     daughterH  = "sigma-";
00192      r = br/2.;
00193   }
00194   if (!fAnti) {
00195     daughterK = "anti_kaon0";
00196   } else {
00197     daughterK = "kaon0";
00198   }
00199   if (fAnti) daughterH = "anti_" + daughterH;
00200   if (r>0.) {
00201     // create decay channel  [parent    BR     #daughters]
00202     mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00203                                         daughterH,daughterK);
00204     // add decay table
00205     decayTable->Insert(mode);
00206   }
00207 
00208   return decayTable;
00209 }
00210 
00211 G4DecayTable*  G4ExcitedXiConstructor::AddXiPiMode( 
00212                                     G4DecayTable* decayTable, const G4String& nameParent,
00213                                     G4double br, G4int iIso3, G4bool fAnti)
00214 {
00215   G4VDecayChannel* mode;
00216 
00217   G4String daughterXi;
00218   G4String daughterPi;
00219   G4double r = 0.;
00220 
00221   // ------------ Xi pi-  ------------ 
00222   // determine daughters
00223   if (iIso3== +1) {
00224     r = 0.;
00225   } else if (iIso3 == -1) {
00226     daughterXi = "xi0";
00227     r = br/2.;
00228   }
00229   if (!fAnti) {
00230     daughterPi = "pi-";
00231   } else {
00232     daughterPi = "pi+";
00233   }
00234   if (fAnti) daughterXi = "anti_" + daughterXi;
00235   if (r>0.) {
00236     // create decay channel  [parent    BR     #daughters]
00237     mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00238                                         daughterXi,daughterPi);
00239     // add decay table
00240     decayTable->Insert(mode);
00241   }
00242   // ------------ Xi Pi0 ------------ 
00243   // determine daughters
00244   if (iIso3== +1) {
00245     daughterXi = "xi0";
00246     r = br/2.;
00247   } else if (iIso3 == -1) {
00248     daughterXi = "xi-";
00249     r = br/2.;
00250   }
00251   daughterPi = "pi0";
00252   if (fAnti) daughterXi = "anti_" + daughterXi;
00253   if (r>0.) {
00254     // create decay channel  [parent    BR     #daughters]
00255     mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00256                                         daughterXi,daughterPi);
00257     // add decay table
00258     decayTable->Insert(mode);
00259   }
00260 
00261   // ------------ XI pi + ------------ 
00262   // determine daughters
00263   if (iIso3== +1) {
00264     daughterXi = "xi-";
00265     r = br/2.;
00266   } else if (iIso3==-1) {
00267     r = 0.;
00268   }
00269   if (!fAnti) {
00270     daughterPi = "pi+";
00271   } else {
00272     daughterPi = "pi-";
00273   }
00274   if (fAnti) daughterXi = "anti_" + daughterXi;
00275   if (r>0.) {
00276     // create decay channel  [parent    BR     #daughters]
00277     mode = new G4PhaseSpaceDecayChannel(nameParent, r, 2,
00278                                         daughterXi,daughterPi);
00279     // add decay table
00280     decayTable->Insert(mode);
00281   }
00282 
00283   return decayTable;
00284 }
00285 
00286 G4double G4ExcitedXiConstructor::GetMass(G4int iState, G4int iso3)
00287 { 
00288   G4double fm = mass[iState];
00289   if ( iState==0 ) {
00290     if (iso3== -1) fm = 1.5350*GeV; // xi-
00291   }
00292   return fm;
00293 }
00294 
00295 G4double G4ExcitedXiConstructor::GetWidth(G4int iState, G4int iso3)
00296 {
00297   G4double fw = width[iState];
00298   if ( iState==0 ) {
00299     if (iso3== -1) fw = 9.9*MeV; // xi-
00300   }
00301   return fw;
00302 }
00303 
00304 const char* G4ExcitedXiConstructor::name[] = {
00305    "xi(1530)", "xi(1690)", "xi(1820)", "xi(1950)", "xi(2030)"
00306 };
00307 
00308 const G4double G4ExcitedXiConstructor::mass[] = {
00309  1.5318*GeV, 1.690*GeV, 1.823*GeV, 1.950*GeV,  2.025*GeV 
00310 };
00311 
00312 const G4double G4ExcitedXiConstructor::width[] = {
00313     9.1*MeV,  50.0*MeV,  24.0*MeV,  60.0*MeV,  20.0*MeV
00314 };
00315 
00316 const G4int G4ExcitedXiConstructor::iSpin[] = {
00317     3,   3,   3,   3,   5
00318 };
00319 
00320 const G4int G4ExcitedXiConstructor::iParity[] = {
00321    +1,  +1,   -1,  -1,  +1
00322 };
00323 
00324 
00325 const G4int G4ExcitedXiConstructor::encodingOffset[] = {
00326       0, 20000, 10000, 30000, 10000
00327 };
00328 
00329 const G4double G4ExcitedXiConstructor::bRatio[ G4ExcitedXiConstructor::NStates ][ G4ExcitedXiConstructor::NumberOfDecayModes] = 
00330 {
00331    {  0.98, 0.02,  0.0,  0.0}, 
00332    {  0.10,  0.0, 0.70, 0.20}, 
00333    {  0.15,  0.0, 0.70, 0.15}, 
00334    {  0.25,  0.0, 0.50, 0.25}, 
00335    {  0.10,  0.0, 0.20, 0.70}
00336 };
00337 
00338 
00339 
00340 
00341 
00342 
00343 
00344 
00345 
00346 
00347 

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