G4ExcitedLambdaConstructor.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 //      History: first implementation, based on object model of
00033 //      10 oct 1998  H.Kurashige
00034 // ---------------------------------------------------------------
00035 
00036 
00037 #include "G4ExcitedLambdaConstructor.hh"
00038 
00039 #include "G4SystemOfUnits.hh"
00040 #include "G4ParticleDefinition.hh"
00041 #include "G4ParticleTable.hh"
00042 #include "G4ShortLivedTable.hh"
00043 #include "G4PhaseSpaceDecayChannel.hh"
00044 #include "G4VDecayChannel.hh"
00045 #include "G4DecayTable.hh"
00046 
00047 
00048 G4ExcitedLambdaConstructor::G4ExcitedLambdaConstructor():
00049     G4ExcitedBaryonConstructor(NStates, LambdaIsoSpin)
00050 {
00051 
00052 }
00053 
00054 G4ExcitedLambdaConstructor::~G4ExcitedLambdaConstructor()
00055 {
00056 }
00057 
00058 G4DecayTable* G4ExcitedLambdaConstructor::CreateDecayTable(
00059                                                  const G4String&  parentName,  
00060                                                  G4int iIso3, 
00061                                                  G4int iState,
00062                                                  G4bool fAnti)
00063 {
00064   // create decay table
00065   G4DecayTable* decayTable =  new G4DecayTable();
00066 
00067   G4double br;
00068   if ( (br=bRatio[iState][NK]) >0.0) {
00069     AddNKMode( decayTable, parentName, br, iIso3, fAnti);
00070   }
00071 
00072   if ( (br=bRatio[iState][NKStar]) >0.0) {
00073     AddNKStarMode( decayTable, parentName, br, iIso3, fAnti);
00074   }
00075 
00076   if ( (br=bRatio[iState][SigmaPi]) >0.0) {
00077     AddSigmaPiMode( decayTable, parentName, br, iIso3, fAnti);
00078   }
00079 
00080   if ( (br=bRatio[iState][SigmaStarPi]) >0.0) {
00081     AddSigmaStarPiMode( decayTable, parentName, br, iIso3, fAnti);
00082   }
00083 
00084   if ( (br=bRatio[iState][LambdaGamma]) >0.0) {
00085     AddLambdaGammaMode( decayTable, parentName, br, iIso3, fAnti);
00086   }
00087 
00088   if ( (br=bRatio[iState][LambdaEta]) >0.0) {
00089     AddLambdaEtaMode( decayTable, parentName, br, iIso3, fAnti);
00090   }
00091 
00092   if ( (br=bRatio[iState][LambdaOmega]) >0.0) {
00093     AddLambdaOmegaMode( decayTable, parentName, br, iIso3, fAnti);
00094   }
00095 
00096   return  decayTable;
00097 }
00098 
00099 G4DecayTable*  G4ExcitedLambdaConstructor::AddLambdaGammaMode( 
00100                                    G4DecayTable* decayTable, const G4String& nameParent,
00101                                     G4double br, G4int , G4bool fAnti)
00102 {
00103   G4VDecayChannel* mode;
00104 
00105   // 
00106   G4String lambda = "lambda";  
00107   if (fAnti) lambda = "anti_" + lambda;
00108 
00109   // create decay channel  [parent    BR     #daughters]
00110   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00111                                            lambda,"gamma");
00112   // add decay table
00113   decayTable->Insert(mode);
00114 
00115   return decayTable;
00116 }
00117 G4DecayTable*  G4ExcitedLambdaConstructor::AddLambdaEtaMode( 
00118                                    G4DecayTable* decayTable, const G4String& nameParent,
00119                                     G4double br, G4int , G4bool fAnti)
00120 {
00121   G4VDecayChannel* mode;
00122 
00123   // 
00124   G4String lambda = "lambda";  
00125   if (fAnti) lambda = "anti_" + lambda;
00126 
00127   // create decay channel  [parent    BR     #daughters]
00128   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00129                                            lambda,"eta");
00130   // add decay table
00131   decayTable->Insert(mode);
00132 
00133   return decayTable;
00134 }
00135 
00136 G4DecayTable*  G4ExcitedLambdaConstructor::AddLambdaOmegaMode( 
00137                                    G4DecayTable* decayTable, const G4String& nameParent,
00138                                     G4double br, G4int , G4bool fAnti)
00139 {
00140   G4VDecayChannel* mode;
00141 
00142   // 
00143   G4String lambda = "lambda";  
00144   if (fAnti) lambda = "anti_" + lambda;
00145 
00146   // create decay channel  [parent    BR     #daughters]
00147   mode = new G4PhaseSpaceDecayChannel(nameParent, br, 2,
00148                                            lambda,"omega");
00149   // add decay table
00150   decayTable->Insert(mode);
00151 
00152   return decayTable;
00153 }
00154 
00155 G4DecayTable*  G4ExcitedLambdaConstructor::AddNKMode( 
00156                                     G4DecayTable* decayTable, const G4String& nameParent,
00157                                     G4double br, G4int , G4bool fAnti)
00158 {
00159   G4VDecayChannel* mode;
00160 
00161   G4String daughterN;
00162   G4String daughterK;
00163 
00164   // ------------ N K- ------------ 
00165   // determine daughters
00166   daughterN  = "proton";
00167   if (!fAnti) {
00168     daughterK = "kaon-";
00169   } else {
00170     daughterK = "kaon+";
00171   }
00172   if (fAnti) daughterN = "anti_" + daughterN;
00173   // create decay channel  [parent    BR     #daughters]
00174   mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
00175                                            daughterN,daughterK);
00176   // add decay table
00177   decayTable->Insert(mode);
00178 
00179   // ------------ N K0 ------------ 
00180   // determine daughters
00181   daughterN  = "neutron";
00182   if (!fAnti) {
00183     daughterK = "anti_kaon0";
00184   } else {
00185     daughterK = "kaon0";
00186   }
00187   if (fAnti) daughterN = "anti_" + daughterN;
00188   // create decay channel  [parent    BR     #daughters]
00189   mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
00190                                            daughterN,daughterK);
00191   // add decay table
00192   decayTable->Insert(mode);
00193 
00194 
00195   return decayTable;
00196 }
00197 
00198 G4DecayTable*  G4ExcitedLambdaConstructor::AddNKStarMode( 
00199                                     G4DecayTable* decayTable, const G4String& nameParent,
00200                                     G4double br, G4int , G4bool fAnti)
00201 {
00202   G4VDecayChannel* mode;
00203 
00204   G4String daughterN;
00205   G4String daughterK;
00206 
00207   // ------------ N K- ------------ 
00208   // determine daughters
00209   daughterN  = "proton";
00210   if (!fAnti) {
00211     daughterK = "k_star-";
00212   } else {
00213     daughterK = "k_star+";
00214   }
00215   if (fAnti) daughterN = "anti_" + daughterN;
00216   // create decay channel  [parent    BR     #daughters]
00217   mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
00218                                            daughterN,daughterK);
00219   // add decay table
00220   decayTable->Insert(mode);
00221 
00222   // ------------ N K0 ------------ 
00223   // determine daughters
00224   daughterN  = "neutron";
00225   if (!fAnti) {
00226     daughterK = "anti_k_star0";
00227   } else {
00228     daughterK = "k_star0";
00229   }
00230   if (fAnti) daughterN = "anti_" + daughterN;
00231   // create decay channel  [parent    BR     #daughters]
00232   mode = new G4PhaseSpaceDecayChannel(nameParent, br/2.0, 2,
00233                                            daughterN,daughterK);
00234   // add decay table
00235   decayTable->Insert(mode);
00236 
00237 
00238   return decayTable;
00239 }
00240 
00241 G4DecayTable*  G4ExcitedLambdaConstructor::AddSigmaPiMode( 
00242                                     G4DecayTable* decayTable, const G4String& nameParent,
00243                                     G4double br, G4int , G4bool fAnti)
00244 {
00245   G4VDecayChannel* mode;
00246 
00247   G4String daughterSigma;
00248   G4String daughterPi;
00249 
00250   // ------------ Sigma+ pi - ------------ 
00251   // determine daughters
00252   daughterSigma = "sigma+";
00253   if (!fAnti) {
00254     daughterPi = "pi-";
00255   } else {
00256     daughterPi = "pi+";
00257   }
00258   if (fAnti) daughterSigma = "anti_" + daughterSigma;
00259   // create decay channel  [parent    BR     #daughters]
00260   mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
00261                                            daughterSigma,daughterPi);
00262   // add decay table
00263   decayTable->Insert(mode);
00264 
00265    // ------------ Sigma0 Pi0 ------------ 
00266   // determine daughters
00267   daughterSigma  = "sigma0";
00268   daughterPi = "pi0";
00269 
00270   if (fAnti) daughterSigma = "anti_" + daughterSigma;
00271   // create decay channel  [parent    BR     #daughters]
00272   mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
00273                                            daughterSigma,daughterPi);
00274 
00275   // add decay table
00276   decayTable->Insert(mode);
00277 
00278   // ------------ Sigma- pi + ------------ 
00279   // determine daughters
00280   daughterSigma = "sigma-";
00281   if (!fAnti) {
00282     daughterPi = "pi+";
00283   } else {
00284     daughterPi = "pi-";
00285   }
00286   if (fAnti) daughterSigma = "anti_" + daughterSigma;
00287   // create decay channel  [parent    BR     #daughters]
00288   mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
00289                                            daughterSigma,daughterPi);
00290   // add decay table
00291   decayTable->Insert(mode);
00292 
00293   return decayTable;
00294 }
00295 
00296 
00297 G4DecayTable*  G4ExcitedLambdaConstructor::AddSigmaStarPiMode( 
00298                                     G4DecayTable* decayTable, const G4String& nameParent,
00299                                     G4double br, G4int , G4bool fAnti)
00300 {
00301   G4VDecayChannel* mode;
00302 
00303   G4String daughterSigma;
00304   G4String daughterPi;
00305 
00306   // ------------ Sigma+ pi - ------------ 
00307   // determine daughters
00308   daughterSigma = "sigma(1385)+";
00309   if (!fAnti) {
00310     daughterPi = "pi-";
00311   } else {
00312     daughterPi = "pi+";
00313   }
00314   if (fAnti) daughterSigma = "anti_" + daughterSigma;
00315   // create decay channel  [parent    BR     #daughters]
00316   mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
00317                                            daughterSigma,daughterPi);
00318   // add decay table
00319   decayTable->Insert(mode);
00320 
00321    // ------------ Sigma0 Pi0 ------------ 
00322   // determine daughters
00323   daughterSigma  = "sigma(1385)0";
00324   daughterPi = "pi0";
00325 
00326   if (fAnti) daughterSigma = "anti_" + daughterSigma;
00327   // create decay channel  [parent    BR     #daughters]
00328   mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
00329                                            daughterSigma,daughterPi);
00330 
00331   // add decay table
00332   decayTable->Insert(mode);
00333 
00334   // ------------ Sigma- pi + ------------ 
00335   // determine daughters
00336   daughterSigma = "sigma(1385)-";
00337   if (!fAnti) {
00338     daughterPi = "pi+";
00339   } else {
00340     daughterPi = "pi-";
00341   }
00342   if (fAnti) daughterSigma = "anti_" + daughterSigma;
00343   // create decay channel  [parent    BR     #daughters]
00344   mode = new G4PhaseSpaceDecayChannel(nameParent, br/3.0, 2,
00345                                            daughterSigma,daughterPi);
00346   // add decay table
00347   decayTable->Insert(mode);
00348 
00349   return decayTable;
00350 }
00351 
00352 const char* G4ExcitedLambdaConstructor::name[] = {
00353   "lambda(1405)","lambda(1520)","lambda(1600)","lambda(1670)","lambda(1690)", 
00354   "lambda(1800)","lambda(1810)","lambda(1820)","lambda(1830)","lambda(1890)",
00355   "lambda(2100)","lambda(2110)"
00356 };
00357 
00358 const G4double G4ExcitedLambdaConstructor::mass[] = {
00359   1.4051*GeV,1.5195*GeV, 1.600*GeV, 1.670*GeV,  1.690*GeV, 
00360    1.800*GeV, 1.810*GeV, 1.820*GeV, 1.830*GeV,  1.890*GeV, 
00361    2.100*GeV, 2.110*GeV
00362 };
00363 
00364 const G4double G4ExcitedLambdaConstructor::width[] = {
00365    50.0*MeV,  15.6*MeV, 150.0*MeV,  35.0*MeV,  60.0*MeV,
00366   300.0*MeV, 150.0*MeV,  80.0*MeV,  95.0*MeV, 100.0*MeV,
00367   200.0*MeV, 200.0*MeV
00368 };
00369 
00370 const G4int G4ExcitedLambdaConstructor::iSpin[] = {
00371     1,   3,   1,   1,   3,
00372     1,   1,   5,   5,   3,
00373     7,   5
00374 };
00375 
00376 const G4int G4ExcitedLambdaConstructor::iParity[] = {
00377   -1,  -1,   +1,  -1,  -1,
00378   -1,  +1,   +1,  -1,  +1,
00379   -1,  +1 
00380 };
00381 
00382 const G4int G4ExcitedLambdaConstructor::encodingOffset[] = {
00383   10000,     0, 20000, 30000, 10000,
00384   40000, 50000,     0, 10000, 20000, 
00385       0, 20000
00386 };
00387 
00388 const G4double G4ExcitedLambdaConstructor::bRatio[ G4ExcitedLambdaConstructor::NStates ][ G4ExcitedLambdaConstructor::NumberOfDecayModes] = 
00389 {
00390    {   0.0,  0.0,  1.0,  0.0,  0.0,   0.0,   0.0}, 
00391    {  0.45,  0.0, 0.43, 0.11, 0.01,   0.0,   0.0}, 
00392    {  0.35,  0.0, 0.65,  0.0,  0.0,   0.0,   0.0}, 
00393    {  0.20,  0.0, 0.50,  0.0,  0.0,  0.30,   0.0}, 
00394    {  0.25,  0.0, 0.45, 0.30,  0.0,   0.0,   0.0}, 
00395    {  0.40, 0.20, 0.20, 0.20,  0.0,   0.0,   0.0}, 
00396    {  0.35, 0.45, 0.15, 0.05,  0.0,   0.0,   0.0}, 
00397    {  0.73,  0.0, 0.16, 0.11,  0.0,   0.0,   0.0}, 
00398    {  0.10,  0.0, 0.70, 0.20,  0.0,   0.0,   0.0}, 
00399    {  0.37, 0.21, 0.11, 0.31,  0.0,   0.0,   0.0}, 
00400    {  0.35, 0.20, 0.05, 0.30,  0.0,  0.02,  0.08}, 
00401    {  0.25, 0.45, 0.30,  0.0,  0.0,   0.0,   0.0}
00402 };
00403 
00404 
00405 
00406 
00407 
00408 
00409 
00410 
00411 
00412 
00413 
00414 
00415 
00416 
00417 
00418 

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