FlyoDoc_2011 Pisa 2011 by GmP --- 011

flyopunta/src/src_dbs/part_db_dbs.cpp

00001 /***************************************************************************
00002                           carte.cpp  -  description
00003                              -------------------
00004     begin                : Sat Dec 9 2000
00005     copyright            : (C) 2000 by Giuseppe M Pierazzini
00006     email                : pierazzini@unipi.it
00007  ***************************************************************************
00008  *                                                                         *
00009  *   NA48  simulation program.           New version    3.02.2005                               *
00010  *                                                                         *
00011  ***************************************************************************/
00012 #include <parm.h>
00013 #include <part_db.h>
00014 
00015 //using namespace std;
00016 
00032 //--------------------------
00033 void Part_db::Controlla_rates()
00034 {
00035     Part_db *ptr=this;
00036 
00037     if (ptr==0)return;
00038 
00039     if (ptr->ncan==0)
00040     {
00041         ptr=ptr->next;
00042         if (ptr!=0) ptr->Controlla_rates();
00043         return;
00044     }
00045 
00046     int Nc=ptr->ncan;
00047 //     Gout<<"\n  decadimento per  "<< ptr->nome << " in calali "<<Nc;
00048     if (Nc>1)
00049     {
00050         double totr=0;
00051         for (int i=0;i<Nc;i++)
00052         {
00053             totr+=ptr->Canale[i].rate;
00054 
00055 //        Gout<<"\n "<< ptr->nome << " canale "<<i<<" rate "<< ptr->Canale[i].rate
00056 //                  <<" totr "<<totr;
00057 
00058 
00059         }
00060         if (totr<=0.) {
00061             Gout<<"\n Errore in particle data_base for "<< ptr->nome
00062             <<" \n tot Rate  "<<totr
00063             << "  รจ errato.. Exit! ....Controlla";
00064             exit(0);
00065         }
00066         if (totr<1.)
00067         {
00068             double norma=1./totr;
00069             for (int i=0;i<Nc;i++)
00070             {
00071                 ptr->Canale[i].rate*=norma;
00072             }
00073             Gout<<"\n Rinormalizzata ad 1. la decay _chain della particella "<<ptr->nome;
00074         }
00075     }
00076     ptr=ptr->next;
00077     if (ptr!=0) ptr->Controlla_rates();
00078     return;
00079 
00080 }
00081 //-------------------
00082 
00083 void Crea_part_db()
00084 {
00085 
00086     Part_db *ptr;
00087     // define the particle data base
00088     //             Nome   vis     ch   massa      width    ctau(cm)
00089     ptr=new Part_db ( "gam",   1,  0,      0.0,      0.0,    -1.0 );
00090     Gam  =ptr->Get_Nome();
00091     ptr_Gam=ptr;
00092     ptr=new Part_db ( "nu",    0,  0,      0.0,      0.0,    -1.0 );
00093     Neutrino=ptr->Get_Nome();
00094     ptr_Neutrino=ptr;
00095     ptr=new Part_db ( "elec",  1, -1,  0.00051,      0.0,    -1.0 );
00096     Elec =ptr->Get_Nome();
00097     ptr_Elec=ptr;
00098     ptr=new Part_db ( "elep",  1,  1,  0.00051,      0.0,    -1.0 );
00099     Elep =ptr->Get_Nome();
00100     ptr_Elep=ptr;
00101     ptr=new Part_db ( "mum",   1, -1,  0.10565,      0.0, 65865.4 );
00102     Mum  =ptr->Get_Nome();
00103     ptr_Mum=ptr;
00104     ptr=new Part_db ( "mup",   1,  1,  0.10565,      0.0, 65865.4 );
00105     Mup  =ptr->Get_Nome();
00106     ptr_Mup=ptr;
00107     ptr=new Part_db ( "pim",   1, -1,  0.13957018,   0.0,  780.45 );
00108     Pim  =ptr->Get_Nome();
00109     ptr_Pim=ptr;
00110     ptr=new Part_db ( "pip",   1,  1,  0.13957018,   0.0,  780.45 );
00111     Pip  =ptr->Get_Nome();
00112     ptr_Pip=ptr;
00113     ptr=new Part_db ( "pi0",   0,  0,  0.1349766,    0.0,     0.0 );
00114     Pi0  =ptr->Get_Nome();
00115     ptr_Pi0=ptr;
00116     ptr=new Part_db ( "Km",    1, -1,  0.493677,     0.0,   371.3 );
00117     Kapm =ptr->Get_Nome();
00118     ptr_Kapm=ptr;
00119     ptr=new Part_db ( "Kp",    1,  1,  0.493677,     0.0,   371.3 );
00120     Kapp =ptr->Get_Nome();
00121     ptr_Kapp=ptr;
00122     ptr=new Part_db ( "Kl",    1,  0,  0.497648,     0.0,  1534.0 );
00123     Kapl =ptr->Get_Nome();
00124     ptr_Kapl=ptr;
00125     ptr=new Part_db ( "Ks",    1,  0,  0.497648,     0.0,  2.6842 );
00126     Kaps =ptr->Get_Nome();
00127     ptr_Kaps=ptr;
00128     ptr=new Part_db ( "K0",    1,  0,  0.497648,     0.0,     0.0 );
00129     Kap0 =ptr->Get_Nome();
00130     ptr_Kap0=ptr;
00131     ptr=new Part_db ( "a_K0",  1,  0,   0.4977,       0.,   0. );
00132     A_Kap0=ptr->Get_Nome();
00133     ptr=new Part_db ( "eta",   0,  0,  0.54880,      0.0,     0.0 );
00134     Eta  =ptr->Get_Nome();
00135     ptr_Eta=ptr;
00136 //
00137     ptr=new Part_db ( "Ro",    1,  0,  0.77000,    0.153,     0.0 );
00138     ptr=new Part_db ( "W",     1,  0,  0.78300,    0.008,     0.0 );
00139     ptr=new Part_db ( "p"  ,   1,  1,  0.93827,      0.0,    -1.0 );
00140     Protone =ptr->Get_Nome();
00141     ptr_Protone=ptr;
00142     ptr=new Part_db ( "a_p",   1, -1,   0.93827,       0.,  -1. );
00143     A_Protone=ptr->Get_Nome();
00144     ptr=new Part_db ( "n"  ,   1,  0,  0.93957,      0.0,    -1.0 );
00145     Neutrone=ptr->Get_Nome();
00146     ptr_Neutrone=ptr;
00147     ptr=new Part_db ( "a_n",   1,  0,   0.93957,       0.,  -1. );
00148     A_Neutrone=ptr->Get_Nome();
00149     ptr=new Part_db ( "fy",    1,  0,  1.01940,  0.00441,     0.0 );
00150     ptr=new Part_db ( "a_lam", 1,  0,   1.1156,       0.,   7.89 );
00151     A_Lambda=ptr->Get_Nome();
00152     ptr_A_Lambda=ptr;
00153     ptr=new Part_db ( "lam",   1,  0,   1.1156,       0.,   7.89 );
00154     Lambda=ptr->Get_Nome();
00155     ptr_Lambda=ptr;
00156 // attenzione sono messi non visibili........?????
00157     ptr=new Part_db ( "uus",   0,  1,   1.1894,       0.,   0. );
00158     Uus=ptr->Get_Nome();
00159     ptr_Uus=ptr;
00160     ptr=new Part_db ( "a_uus", 0, -1,   1.1894,       0.,   0. );
00161     A_Uus=ptr->Get_Nome();
00162     ptr_A_Uus=ptr;
00163     ptr=new Part_db ( "uds",   0,  0,   1.1925,       0.,   0. );
00164     Uds=ptr->Get_Nome();
00165     ptr_Uds=ptr;
00166     ptr=new Part_db ( "a_uds", 0,  0,   1.1925,       0.,   0. );
00167     A_Uds=ptr->Get_Nome();
00168     ptr_A_Uds=ptr;
00169     ptr=new Part_db ( "dds",   0, -1,   1.1974,       0.,   0. );
00170     Dds=ptr->Get_Nome();
00171     ptr_Dds=ptr;
00172     ptr=new Part_db ( "a_dds", 0,  1,   1.1974,       0.,   0. );
00173     A_Dds=ptr->Get_Nome();
00174     ptr_A_Dds=ptr;
00175     ptr=new Part_db ( "uss",   0,  0,   1.3149,       0.,   0. );
00176     Uss=ptr->Get_Nome();
00177     ptr_Uss=ptr;
00178     ptr=new Part_db ( "a_uss", 0,  0,   1.3149,       0.,   0. );
00179     A_Uss=ptr->Get_Nome();
00180     ptr_A_Uss=ptr;
00181     ptr=new Part_db ( "dss",   0, -1,   1.3213,       0.,   0. );
00182     Dss=ptr->Get_Nome();
00183     ptr_Dss=ptr;
00184     ptr=new Part_db ( "a_dss", 0,  1,   1.3213,       0.,   0. );
00185     A_Dss=ptr->Get_Nome();
00186     ptr_A_Dss=ptr;
00187     ptr=new Part_db ( "sss",   0, -1,   1.6724,       0.,   0. );
00188     Sss=ptr->Get_Nome();
00189     ptr_Sss=ptr;
00190     ptr=new Part_db ( "a_sss",   0, -1,   1.6724,     0.,   0. );
00191     A_Sss=ptr->Get_Nome();
00192     ptr_A_Sss=ptr;
00193 
00194 // lista degli ioni usati paer le interazioni su Gas...vedi reagas.h e reags.cpp
00195     ptr=new Part_db ( "AT33",  1,  1,   1.8756,       0.,  -1. );   // AT33= ptr->Get_Nome()
00196     ptr=new Part_db ( "AT34",  1,  2,   2.8084,       0.,  -1. );   // AT34= ptr->Get_Nome()
00197     ptr=new Part_db ( "AT35",  1,  1,   2.8089,       0.,  -1. );   // AT35= ptr->Get_Nome()
00198     ptr=new Part_db ( "AT36",  1,  2,   3.7274,       0.,  -1. );   // AT36= ptr->Get_Nome()
00199     ptr=new Part_db ( "AT37",  1,  3,   5.6015,       0.,  -1. );   // AT37= ptr->Get_Nome()
00200     ptr=new Part_db ( "AT38",  1,  2,   5.6055,       0.,  -1. );   // AT38= ptr->Get_Nome()
00201     ptr=new Part_db ( "AT39",  1,  3,   6.5338,       0.,  -1. );   // AT39= ptr->Get_Nome()
00202     ptr=new Part_db ( "AT40",  1,  4,   6.5342,       0.,  -1. );   // AT40= ptr->Get_Nome()
00203     ptr=new Part_db ( "AT41",  1,  3,   7.4714,       0.,  -1. );   //AT41= ptr->Get_Nome()
00204     ptr=new Part_db ( "AT42",  1,  5,   7.4723,       0.,  -1. );   // AT42= ptr->Get_Nome()
00205     ptr=new Part_db ( "AT43",  1,  2,   7.4825,       0.,  -1. );   // AT43= ptr->Get_Nome()
00206     ptr=new Part_db ( "AT44",  1,  4,   8.3928,       0.,  -1. );   // AT44= ptr->Get_Nome()
00207     ptr=new Part_db ( "AT45",  1,  3,   8.4069,       0.,  -1. );   // AT45= ptr->Get_Nome()
00208     ptr=new Part_db ( "AT46",  1,  6,   8.4093,       0.,  -1. );   //AT46= ptr->Get_Nome()
00209     ptr=new Part_db ( "AT47",  1,  5,   9.3244,       0.,  -1. );   //AT47= ptr->Get_Nome()
00210     ptr=new Part_db ( "AT48",  1,  4,   9.3255,       0.,  -1. );   // AT48= ptr->Get_Nome()
00211     ptr=new Part_db ( "AT49",  1,  6,   9.3276,       0.,  -1. );   // AT49= ptr->Get_Nome()
00212     ptr=new Part_db ( "AT50",  1,  5,  10.2526,       0.,  -1. );   // AT50= ptr->Get_Nome()
00213     ptr=new Part_db ( "AT51",  1,  6,  10.2540,       0.,  -1. );   // AT51= ptr->Get_Nome()
00214     ptr=new Part_db ( "AT52",  1,  4,  10.2646,       0.,  -1. );   // AT52= ptr->Get_Nome()
00215     ptr=new Part_db ( "AT53",  1,  3,  10.2857,       0.,  -1. );   // AT53= ptr->Get_Nome()
00216     ptr=new Part_db ( "AT54",  1,  8,  10.2882,       0.,  -1. );   // AT54= ptr->Get_Nome()
00217     ptr=new Part_db ( "AT55",  1,  6,  11.1749,       0.,  -1. );   // AT55= ptr->Get_Nome()
00218     ptr=new Part_db ( "AT56",  1,  5,  11.1887,       0.,  -1. );   //AT56= ptr->Get_Nome()
00219     ptr=new Part_db ( "AT57",  1,  7,  11.1917,       0.,  -1. );   // AT57= ptr->Get_Nome()
00220     ptr=new Part_db ( "AT58",  1,  4,  11.2010,       0.,  -1. );   // AT58= ptr->Get_Nome()
00221     ptr=new Part_db ( "AT59",  1,  6,  12.1095,       0.,  -1. );   // AT59= ptr->Get_Nome()
00222     ptr=new Part_db ( "AT60",  1,  7,  12.1112,       0.,  -1. );   // AT60= ptr->Get_Nome()
00223     ptr=new Part_db ( "AT61",  1,  5,  12.1234,       0.,  -1. );   // AT61= ptr->Get_Nome()
00224     ptr=new Part_db ( "AT62",  1,  8,  12.1285,       0.,  -1. );   // AT62= ptr->Get_Nome()
00225     ptr=new Part_db ( "AT63",  1,  7,  13.0402,       0.,  -1. );   // AT63= ptr->Get_Nome()
00226     ptr=new Part_db ( "AT64",  1,  6,  13.0409,       0.,  -1. );   // AT64= ptr->Get_Nome()
00227     ptr=new Part_db ( "AT65",  1,  8,  13.0448,       0.,  -1. );   //AT65= ptr->Get_Nome()
00228     ptr=new Part_db ( "AT66",  1,  7,  13.9689,       0.,  -1. );   //AT66= ptr->Get_Nome()
00229     ptr=new Part_db ( "AT67",  1,  8,  13.9712,       0.,  -1. );   //AT67= ptr->Get_Nome()
00230     ptr=new Part_db ( "Boo!",  0,  0,      0.0,      0.0,     0.0 );
00231     Booh =ptr->Get_Nome();
00232     ptr_boo=ptr;
00233 
00234 //  dummy particles
00235     ptr=new Part_db ( "res",   0,  0,      0.0,      0.0,     0.0 );
00236     Res  =ptr->Get_Nome();
00237     ptr=new Part_db ( "res2",  0,  0,      0.0,      0.0,     0.0 );
00238     Res2 =ptr->Get_Nome();
00239     ptr=new Part_db ( "res3",  0,  0,      0.0,      0.0,     0.0 );
00240     Res3 =ptr->Get_Nome();
00241     ptr=new Part_db ( "res4",  0,  0,      0.0,      0.0,     0.0 );
00242     Res4 =ptr->Get_Nome();
00243     ptr=new Part_db ( "res5",  0,  0,      0.0,      0.0,     0.0 );
00244     Res5 =ptr->Get_Nome();
00245     ptr=new Part_db ( "dum",   0,  0,      0.0,      0.0,     0.0 );
00246     Dum  =ptr->Get_Nome();
00247     ptr_dum=ptr;
00248     ptr=new Part_db ( "dum2",  0,  0,      0.0,      0.0,     0.0 );
00249     Dum2 =ptr->Get_Nome();
00250     ptr=new Part_db ( "dlz",   0,  0,      0.0,      0.0,     0.0 );
00251     Dlz  =ptr->Get_Nome();
00252     ptr=new Part_db ( "pic2",  0,  0,      0.0,      0.0,     0.0 );
00253     Pic2 =ptr->Get_Nome();
00254     ptr=new Part_db ( "pi02",  0,  0,      0.0,      0.0,     0.0 );
00255     Pi02 =ptr->Get_Nome();
00256     ptr=new Part_db ( "cms",   0,  0,      0.0,      0.0,     0.0 );
00257     Cms  =ptr->Get_Nome();
00258     ptr=new Part_db ( "pvv",   0,  0,      0.0,      0.0,     0.0 );
00259     Pvv  =ptr->Get_Nome();
00260 //      ************  lisat decadimenti elementari   *****
00261     ptr_Mum->Canale=new Decadimento[1];
00262     ptr_Mum->Canale[0].Define(1.00,Elec,Neutrino,Neutrino);
00263     ptr_Mum->ncan=1;
00264 
00265     ptr_Mup->Canale=new Decadimento[1];
00266     ptr_Mup->Canale[0].Define(1.00,Elep,Neutrino,Neutrino);
00267     ptr_Mup->ncan=1;
00268 
00269     ptr_Pim->Canale= new Decadimento[1];
00270     ptr_Pim->Canale[0].Define(1.00,Mum,Neutrino);
00271     ptr_Pim->ncan=1;
00272 
00273     ptr_Pip->Canale= new Decadimento[1];
00274     ptr_Pip->Canale[0].Define(1.00,Mup,Neutrino);
00275     ptr_Pip->ncan=1;
00276 
00277     ptr_Pi0->Canale= new Decadimento[1];
00278     ptr_Pi0->Canale[0].Define(1.00,Gam,Gam);
00279     ptr_Pi0->ncan=1;
00280 
00281     ptr_Kapm->Canale=new Decadimento[1];
00282     ptr_Kapm->Canale[0].Define(1.00,Mum,Neutrino);
00283     ptr_Kapm->ncan=1;
00284 
00285     ptr_Kapp->Canale=new Decadimento[1];
00286     ptr_Kapp->Canale[0].Define(1.00,Mup,Neutrino);
00287     ptr_Kapp->ncan=1;
00288 
00289     ptr_Kaps->Canale=new Decadimento[2];
00290     ptr_Kaps->Canale[0].Define(0.6920,Pip,Pim);
00291     ptr_Kaps->Canale[1].Define(0.3069,Pi0,Pi0);
00292     ptr_Kaps->ncan=2;
00293 
00294     ptr_Kapl->Canale=new Decadimento[6];
00295     ptr_Kapl->Canale[0].Define(0.2027,Pip,Elec,Neutrino);
00296     ptr_Kapl->Canale[1].Define(0.2027,Pim,Elep,Neutrino);
00297     ptr_Kapl->Canale[2].Define(0.1352,Pip,Mum,Neutrino);
00298     ptr_Kapl->Canale[3].Define(0.1352,Pim,Mup,Neutrino);
00299     ptr_Kapl->Canale[4].Define(0.1952,Pi0,Pi0,Pi0);
00300     ptr_Kapl->Canale[5].Define(0.1254,Pip,Pim,Pi0);
00301     
00302     ptr_Kapl->ncan=6;
00303 
00304     ptr_Lambda->Canale=new Decadimento[2];
00305     ptr_Lambda->Canale[0].Define(0.639,Protone,Pim);
00306     ptr_Lambda->Canale[1].Define(0.358,Neutrone,Pi0);
00307     ptr_Lambda->ncan=2;
00308 
00309     ptr_A_Lambda->Canale=new Decadimento[2];
00310     ptr_A_Lambda->Canale[0].Define(0.639,A_Protone,Pip);
00311     ptr_A_Lambda->Canale[1].Define(0.358,A_Neutrone,Pi0);
00312     ptr_A_Lambda->ncan=2;
00313 
00314     ptr_Uus->Canale=new Decadimento[2];
00315     ptr_Uus->Canale[0].Define(0.5157,Protone,Pi0);
00316     ptr_Uus->Canale[1].Define(0.4843,Neutrone,Pip);
00317     ptr_Uus->ncan=2;
00318 
00319     ptr_A_Uus->Canale=new Decadimento[2];
00320     ptr_A_Uus->Canale[0].Define(0.5157,A_Protone,Pi0);
00321     ptr_A_Uus->Canale[1].Define(0.4843,A_Neutrone,Pim);
00322     ptr_A_Uus->ncan=2;
00323 
00324     ptr_Uds->Canale=new Decadimento[1];
00325     ptr_Uds->Canale[0].Define(1.0,Lambda,Gam);
00326     ptr_Uds->ncan=1;
00327 
00328     ptr_A_Uds->Canale=new Decadimento[1];
00329     ptr_A_Uds->Canale[0].Define(1.0,A_Lambda,Gam);
00330     ptr_A_Uds->ncan=1;
00331 
00332     ptr_Dds->Canale=new Decadimento[1];
00333     ptr_Dds->Canale[0].Define(1.0,Neutrone,Pim);
00334     ptr_Dds->ncan=1;
00335 
00336     ptr_A_Dds->Canale=new Decadimento[1];
00337     ptr_A_Dds->Canale[0].Define(1.0,A_Neutrone,Pip);
00338     ptr_A_Dds->ncan=1;
00339 
00340     ptr_Uss->Canale=new Decadimento[1];
00341     ptr_Uss->Canale[0].Define(1.0,Lambda,Pi0);
00342     ptr_Uss->ncan=1;
00343 
00344     ptr_A_Uss->Canale=new Decadimento[1];
00345     ptr_A_Uss->Canale[0].Define(1.0,A_Lambda,Pi0);
00346     ptr_A_Uss->ncan=1;
00347 
00348     ptr_Dss->Canale=new Decadimento[1];
00349     ptr_Dss->Canale[0].Define(1.0,Lambda,Pim);
00350     ptr_Dss->ncan=1;
00351 
00352 // controllo della decay_chain
00353 
00354     Gout<<"\n ==== Particle Data_base and Chaining done  si ha da fa "<<std::endl;
00355     Matter->Controlla_rates();
00356     Gout<<"\n ==== Particle Data_base and Chaining done ======"<<std::endl;
00357 }
00358 
00359 
00360 
00361 
00362 
00363 
00364 
00365 
00366 
00367 
00368 
 All Classes Namespaces Files Functions Variables