00001 #include "GaudiKernel/MsgStream.h"
00002 #include "GaudiKernel/SmartDataPtr.h"
00003 #include "GaudiKernel/SmartRefVector.h"
00004
00005 #include "EventModel/EventHeader.h"
00006
00007 #include "McTruth/McParticle.h"
00008
00009 #include "DumpDecayTreeAlg/DumpDecayTreeAlg.h"
00010
00011 #include <vector>
00012 #include <string>
00013 #include <map>
00014
00015 using namespace std;
00016
00017
00019
00020 DumpDecayTreeAlg::DumpDecayTreeAlg(const std::string& name, ISvcLocator* pSvcLocator) :
00021 Algorithm(name, pSvcLocator) {
00022
00023
00024 declareProperty( "Frequency", m_freq = 1 );
00025
00026 declareProperty( "BesEvtGenOnly", m_BesEvtGenOnly = true );
00027 declareProperty( "PrintParticles", m_PrintParticles = true );
00028
00029 declareProperty( "FindRunEvent", m_FindRunEvent = false );
00030 declareProperty( "FindRun", m_FindRun = -5040 );
00031 declareProperty( "FindEvent", m_FindEvent = 20 );
00032 }
00033
00034
00035 StatusCode DumpDecayTreeAlg::initialize(){
00036 MsgStream log(msgSvc(), name());
00037
00038 log << MSG::INFO << "in initialize()" << endmsg;
00039
00040 StatusCode status;
00041
00042 m_eventCounter = 0;
00043
00044
00045 m_map.insert(make_pair(1,"d"));
00046 m_map.insert(make_pair(-1,"anti-d"));
00047 m_map.insert(make_pair(2,"u"));
00048 m_map.insert(make_pair(-2,"anti-u"));
00049 m_map.insert(make_pair(3,"s"));
00050 m_map.insert(make_pair(-3,"anti-s"));
00051 m_map.insert(make_pair(4,"c"));
00052 m_map.insert(make_pair(-4,"anti-c"));
00053 m_map.insert(make_pair(5,"b"));
00054 m_map.insert(make_pair(-5,"anti-b"));
00055 m_map.insert(make_pair(6,"t"));
00056 m_map.insert(make_pair(-6,"anti-t"));
00057 m_map.insert(make_pair(7,"b'"));
00058 m_map.insert(make_pair(-7,"anti-b'"));
00059 m_map.insert(make_pair(8,"t'"));
00060 m_map.insert(make_pair(-8,"anti-t'"));
00061 m_map.insert(make_pair(21,"g"));
00062 m_map.insert(make_pair(11,"e-"));
00063 m_map.insert(make_pair(-11,"e+"));
00064 m_map.insert(make_pair(12,"nu_e"));
00065 m_map.insert(make_pair(-12,"anti-nu_e"));
00066 m_map.insert(make_pair(13,"mu-"));
00067 m_map.insert(make_pair(-13,"mu+"));
00068 m_map.insert(make_pair(14,"nu_mu"));
00069 m_map.insert(make_pair(-14,"anti-nu_mu"));
00070 m_map.insert(make_pair(15,"tau-"));
00071 m_map.insert(make_pair(-15,"tau+"));
00072 m_map.insert(make_pair(16,"nu_tau"));
00073 m_map.insert(make_pair(-16,"anti-nu_tau"));
00074 m_map.insert(make_pair(17,"L-"));
00075 m_map.insert(make_pair(-17,"L+"));
00076 m_map.insert(make_pair(18,"nu_L"));
00077 m_map.insert(make_pair(-18,"anti-nu_L"));
00078 m_map.insert(make_pair(22,"gamma"));
00079 m_map.insert(make_pair(-22,"gammaFSR"));
00080 m_map.insert(make_pair(10022,"vpho"));
00081 m_map.insert(make_pair(20022,"Cerenkov"));
00082 m_map.insert(make_pair(23,"Z0"));
00083 m_map.insert(make_pair(24,"W+"));
00084 m_map.insert(make_pair(-24,"W-"));
00085 m_map.insert(make_pair(25,"Higgs0"));
00086 m_map.insert(make_pair(28,"reggeon"));
00087 m_map.insert(make_pair(29,"pomeron"));
00088 m_map.insert(make_pair(32,"Z'0"));
00089 m_map.insert(make_pair(33,"Z''0"));
00090 m_map.insert(make_pair(34,"W'+"));
00091 m_map.insert(make_pair(-34,"W'-"));
00092 m_map.insert(make_pair(35,"Higgs'0"));
00093 m_map.insert(make_pair(36,"A0"));
00094 m_map.insert(make_pair(37,"Higgs+"));
00095 m_map.insert(make_pair(-37,"Higgs-"));
00096 m_map.insert(make_pair(40,"R0"));
00097 m_map.insert(make_pair(-40,"anti-R0"));
00098 m_map.insert(make_pair(41,"Xu0"));
00099 m_map.insert(make_pair(42,"Xu+"));
00100 m_map.insert(make_pair(-42,"Xu-"));
00101 m_map.insert(make_pair(81,"specflav"));
00102 m_map.insert(make_pair(82,"rndmflav"));
00103 m_map.insert(make_pair(-82,"anti-rndmflav"));
00104 m_map.insert(make_pair(83,"phasespa"));
00105 m_map.insert(make_pair(84,"c-hadron"));
00106 m_map.insert(make_pair(-84,"anti-c-hadron"));
00107 m_map.insert(make_pair(85,"b-hadron"));
00108 m_map.insert(make_pair(-85,"anti-b-hadron"));
00109 m_map.insert(make_pair(86,"t-hadron"));
00110 m_map.insert(make_pair(-86,"anti-t-hadron"));
00111 m_map.insert(make_pair(87,"b'-hadron"));
00112 m_map.insert(make_pair(-87,"anti-b'-hadron"));
00113 m_map.insert(make_pair(88,"t'-hadron"));
00114 m_map.insert(make_pair(-88,"anti-t'-hadron"));
00115 m_map.insert(make_pair(89,"Wvirt+"));
00116 m_map.insert(make_pair(-89,"Wvirt-"));
00117 m_map.insert(make_pair(90,"diquark"));
00118 m_map.insert(make_pair(-90,"anti-diquark"));
00119 m_map.insert(make_pair(91,"cluster"));
00120 m_map.insert(make_pair(92,"string"));
00121 m_map.insert(make_pair(93,"indep"));
00122 m_map.insert(make_pair(94,"CMshower"));
00123 m_map.insert(make_pair(95,"SPHEaxis"));
00124 m_map.insert(make_pair(96,"THRUaxis"));
00125 m_map.insert(make_pair(97,"CLUSjet"));
00126 m_map.insert(make_pair(98,"CELLjet"));
00127 m_map.insert(make_pair(99,"table"));
00128 m_map.insert(make_pair(111,"pi0"));
00129 m_map.insert(make_pair(211,"pi+"));
00130 m_map.insert(make_pair(-211,"pi-"));
00131 m_map.insert(make_pair(210,"pi_diff+"));
00132 m_map.insert(make_pair(-210,"pi_diff-"));
00133 m_map.insert(make_pair(20111,"pi(2S)0"));
00134 m_map.insert(make_pair(20211,"pi(2S)+"));
00135 m_map.insert(make_pair(-20211,"pi(2S)-"));
00136 m_map.insert(make_pair(221,"eta"));
00137 m_map.insert(make_pair(20221,"eta(2S)"));
00138 m_map.insert(make_pair(331,"eta'"));
00139 m_map.insert(make_pair(113,"rho0"));
00140 m_map.insert(make_pair(110,"rho_diff0"));
00141 m_map.insert(make_pair(213,"rho+"));
00142 m_map.insert(make_pair(-213,"rho-"));
00143 m_map.insert(make_pair(30113,"rho(2S)0"));
00144 m_map.insert(make_pair(30213,"rho(2S)+"));
00145 m_map.insert(make_pair(-30213,"rho(2S)-"));
00146 m_map.insert(make_pair(40113,"rho(3S)0"));
00147 m_map.insert(make_pair(40213,"rho(3S)+"));
00148 m_map.insert(make_pair(-40213,"rho(3S)-"));
00149 m_map.insert(make_pair(223,"omega"));
00150 m_map.insert(make_pair(220,"omega_diff"));
00151 m_map.insert(make_pair(30223,"omega(2S)"));
00152 m_map.insert(make_pair(333,"phi"));
00153 m_map.insert(make_pair(330,"phi_diff"));
00154 m_map.insert(make_pair(10111,"a_00"));
00155 m_map.insert(make_pair(10211,"a_0+"));
00156 m_map.insert(make_pair(-10211,"a_0-"));
00157 m_map.insert(make_pair(9010221,"f_0"));
00158 m_map.insert(make_pair(10221,"f'_0"));
00159 m_map.insert(make_pair(10113,"b_10"));
00160 m_map.insert(make_pair(10213,"b_1+"));
00161 m_map.insert(make_pair(-10213,"b_1-"));
00162 m_map.insert(make_pair(10223,"h_1"));
00163 m_map.insert(make_pair(10333,"h'_1"));
00164 m_map.insert(make_pair(20113,"a_10"));
00165 m_map.insert(make_pair(20213,"a_1+"));
00166 m_map.insert(make_pair(-20213,"a_1-"));
00167 m_map.insert(make_pair(20223,"f_1"));
00168 m_map.insert(make_pair(115,"a_20"));
00169 m_map.insert(make_pair(215,"a_2+"));
00170 m_map.insert(make_pair(-215,"a_2-"));
00171 m_map.insert(make_pair(225,"f_2"));
00172 m_map.insert(make_pair(50221,"f_0(1500)"));
00173 m_map.insert(make_pair(335,"f'_2"));
00174 m_map.insert(make_pair(9020221,"eta(1405)"));
00175 m_map.insert(make_pair(10335,"eta2(1870)"));
00176 m_map.insert(make_pair(10331,"f_0(1710)"));
00177 m_map.insert(make_pair(229,"f_4(2050)"));
00178 m_map.insert(make_pair(20333,"f'_1"));
00179 m_map.insert(make_pair(8888888,"f_0(1790)"));
00180 m_map.insert(make_pair(9000223,"f_1(1510)"));
00181 m_map.insert(make_pair(9050225,"f_2(1950)"));
00182 m_map.insert(make_pair(9080221,"eta(2225)"));
00183 m_map.insert(make_pair(9040221,"eta(1760)"));
00184 m_map.insert(make_pair(9999999,"x(1835)"));
00185 m_map.insert(make_pair(311,"K0"));
00186 m_map.insert(make_pair(-311,"anti-K0"));
00187 m_map.insert(make_pair(310,"K_S0"));
00188 m_map.insert(make_pair(130,"K_L0"));
00189 m_map.insert(make_pair(321,"K+"));
00190 m_map.insert(make_pair(-321,"K-"));
00191 m_map.insert(make_pair(313,"K*0"));
00192 m_map.insert(make_pair(-313,"anti-K*0"));
00193 m_map.insert(make_pair(323,"K*+"));
00194 m_map.insert(make_pair(-323,"K*-"));
00195 m_map.insert(make_pair(10311,"K_0*0"));
00196 m_map.insert(make_pair(-10311,"anti-K_0*0"));
00197 m_map.insert(make_pair(10321,"K_0*+"));
00198 m_map.insert(make_pair(-10321,"K_0*-"));
00199 m_map.insert(make_pair(10313,"K_10"));
00200 m_map.insert(make_pair(-10313,"anti-K_10"));
00201 m_map.insert(make_pair(10323,"K_1+"));
00202 m_map.insert(make_pair(-10323,"K_1-"));
00203 m_map.insert(make_pair(315,"K_2*0"));
00204 m_map.insert(make_pair(-315,"anti-K_2*0"));
00205 m_map.insert(make_pair(325,"K_2*+"));
00206 m_map.insert(make_pair(-325,"K_2*-"));
00207 m_map.insert(make_pair(20313,"K'_10"));
00208 m_map.insert(make_pair(-20313,"anti-K'_10"));
00209 m_map.insert(make_pair(20323,"K'_1+"));
00210 m_map.insert(make_pair(-20323,"K'_1-"));
00211 m_map.insert(make_pair(100313,"K'*0"));
00212 m_map.insert(make_pair(-100313,"anti-K'*0"));
00213 m_map.insert(make_pair(100323,"K'*+"));
00214 m_map.insert(make_pair(-100323,"K'*-"));
00215 m_map.insert(make_pair(30313,"K''*0"));
00216 m_map.insert(make_pair(-30313,"anti-K''*0"));
00217 m_map.insert(make_pair(30323,"K''*+"));
00218 m_map.insert(make_pair(-30323,"K''*-"));
00219 m_map.insert(make_pair(317,"K_3*0"));
00220 m_map.insert(make_pair(-317,"anti-K_3*0"));
00221 m_map.insert(make_pair(327,"K_3*+"));
00222 m_map.insert(make_pair(-327,"K_3*-"));
00223 m_map.insert(make_pair(319,"K_4*0"));
00224 m_map.insert(make_pair(-319,"anti-K_4*0"));
00225 m_map.insert(make_pair(329,"K_4*+"));
00226 m_map.insert(make_pair(-329,"K_4*-"));
00227 m_map.insert(make_pair(411,"D+"));
00228 m_map.insert(make_pair(-411,"D-"));
00229 m_map.insert(make_pair(421,"D0"));
00230 m_map.insert(make_pair(-421,"anti-D0"));
00231 m_map.insert(make_pair(413,"D*+"));
00232 m_map.insert(make_pair(-413,"D*-"));
00233 m_map.insert(make_pair(423,"D*0"));
00234 m_map.insert(make_pair(-423,"anti-D*0"));
00235 m_map.insert(make_pair(10411,"D_0*+"));
00236 m_map.insert(make_pair(-10411,"D_0*-"));
00237 m_map.insert(make_pair(10421,"D_0*0"));
00238 m_map.insert(make_pair(-10421,"anti-D_0*0"));
00239 m_map.insert(make_pair(10413,"D_1+"));
00240 m_map.insert(make_pair(-10413,"D_1-"));
00241 m_map.insert(make_pair(10423,"D_10"));
00242 m_map.insert(make_pair(-10423,"anti-D_10"));
00243 m_map.insert(make_pair(415,"D_2*+"));
00244 m_map.insert(make_pair(-415,"D_2*-"));
00245 m_map.insert(make_pair(425,"D_2*0"));
00246 m_map.insert(make_pair(-425,"anti-D_2*0"));
00247 m_map.insert(make_pair(20413,"D'_1+"));
00248 m_map.insert(make_pair(-20413,"D'_1-"));
00249 m_map.insert(make_pair(20423,"D'_10"));
00250 m_map.insert(make_pair(-20423,"anti-D'_10"));
00251 m_map.insert(make_pair(431,"D_s+"));
00252 m_map.insert(make_pair(-431,"D_s-"));
00253 m_map.insert(make_pair(433,"D_s*+"));
00254 m_map.insert(make_pair(-433,"D_s*-"));
00255 m_map.insert(make_pair(10431,"D_s0*+"));
00256 m_map.insert(make_pair(-10431,"D_s0*-"));
00257 m_map.insert(make_pair(10433,"D_s1+"));
00258 m_map.insert(make_pair(-10433,"D_s1-"));
00259 m_map.insert(make_pair(435,"D_s2*+"));
00260 m_map.insert(make_pair(-435,"D_s2*-"));
00261 m_map.insert(make_pair(20433,"D'_s1+"));
00262 m_map.insert(make_pair(-20433,"D'_s1-"));
00263 m_map.insert(make_pair(30411,"D(2S)+"));
00264 m_map.insert(make_pair(-30411,"D(2S)-"));
00265 m_map.insert(make_pair(30421,"D(2S)0"));
00266 m_map.insert(make_pair(-30421,"anti-D(2S)0"));
00267 m_map.insert(make_pair(30413,"D*(2S)+"));
00268 m_map.insert(make_pair(-30413,"D*(2S)-"));
00269 m_map.insert(make_pair(30423,"D*(2S)0"));
00270 m_map.insert(make_pair(-30423,"anti-D*(2S)0"));
00271 m_map.insert(make_pair(511,"B0"));
00272 m_map.insert(make_pair(-511,"anti-B0"));
00273 m_map.insert(make_pair(150,"B0L"));
00274 m_map.insert(make_pair(510,"B0H"));
00275 m_map.insert(make_pair(521,"B+"));
00276 m_map.insert(make_pair(-521,"B-"));
00277 m_map.insert(make_pair(513,"B*0"));
00278 m_map.insert(make_pair(-513,"anti-B*0"));
00279 m_map.insert(make_pair(523,"B*+"));
00280 m_map.insert(make_pair(-523,"B*-"));
00281 m_map.insert(make_pair(10511,"B_0*0"));
00282 m_map.insert(make_pair(-10511,"anti-B_0*0"));
00283 m_map.insert(make_pair(10521,"B_0*+"));
00284 m_map.insert(make_pair(-10521,"B_0*-"));
00285 m_map.insert(make_pair(10513,"B_10"));
00286 m_map.insert(make_pair(-10513,"anti-B_10"));
00287 m_map.insert(make_pair(10523,"B_1+"));
00288 m_map.insert(make_pair(-10523,"B_1-"));
00289 m_map.insert(make_pair(515,"B_2*0"));
00290 m_map.insert(make_pair(-515,"anti-B_2*0"));
00291 m_map.insert(make_pair(525,"B_2*+"));
00292 m_map.insert(make_pair(-525,"B_2*-"));
00293 m_map.insert(make_pair(20513,"B'_10"));
00294 m_map.insert(make_pair(-20513,"anti-B'_10"));
00295 m_map.insert(make_pair(20523,"B'_1+"));
00296 m_map.insert(make_pair(-20523,"B'_1-"));
00297 m_map.insert(make_pair(531,"B_s0"));
00298 m_map.insert(make_pair(-531,"anti-B_s0"));
00299 m_map.insert(make_pair(350,"B_s0L"));
00300 m_map.insert(make_pair(530,"B_s0H"));
00301 m_map.insert(make_pair(533,"B_s*0"));
00302 m_map.insert(make_pair(-533,"anti-B_s*0"));
00303 m_map.insert(make_pair(10531,"B_s0*0"));
00304 m_map.insert(make_pair(-10531,"anti-B_s0*0"));
00305 m_map.insert(make_pair(10533,"B_s10"));
00306 m_map.insert(make_pair(-10533,"anti-B_s10"));
00307 m_map.insert(make_pair(535,"B_s2*0"));
00308 m_map.insert(make_pair(-535,"anti-B_s2*0"));
00309 m_map.insert(make_pair(20533,"B'_s10"));
00310 m_map.insert(make_pair(-20533,"anti-B'_s10"));
00311 m_map.insert(make_pair(541,"B_c+"));
00312 m_map.insert(make_pair(-541,"B_c-"));
00313 m_map.insert(make_pair(543,"B_c*+"));
00314 m_map.insert(make_pair(-543,"B_c*-"));
00315 m_map.insert(make_pair(10541,"B_c0*+"));
00316 m_map.insert(make_pair(-10541,"B_c0*-"));
00317 m_map.insert(make_pair(10543,"B_c1+"));
00318 m_map.insert(make_pair(-10543,"B_c1-"));
00319 m_map.insert(make_pair(545,"B_c2*+"));
00320 m_map.insert(make_pair(-545,"B_c2*-"));
00321 m_map.insert(make_pair(20543,"B'_c1+"));
00322 m_map.insert(make_pair(-20543,"B'_c1-"));
00323 m_map.insert(make_pair(441,"eta_c"));
00324 m_map.insert(make_pair(20441,"eta_c(2S)"));
00325 m_map.insert(make_pair(443,"J/psi"));
00326 m_map.insert(make_pair(440,"psi_diff"));
00327 m_map.insert(make_pair(100443,"psi(2S)"));
00328 m_map.insert(make_pair(30443,"psi(3770)"));
00329 m_map.insert(make_pair(9000443,"psi(4040)"));
00330 m_map.insert(make_pair(9010443,"psi(4160)"));
00331 m_map.insert(make_pair(9020443,"psi(4415)"));
00332 m_map.insert(make_pair(10443,"h_c"));
00333 m_map.insert(make_pair(10441,"chi_c0"));
00334 m_map.insert(make_pair(20443,"chi_c1"));
00335 m_map.insert(make_pair(445,"chi_c2"));
00336 m_map.insert(make_pair(551,"eta_b"));
00337 m_map.insert(make_pair(20551,"eta_b(2S)"));
00338 m_map.insert(make_pair(40551,"eta_b(3S)"));
00339 m_map.insert(make_pair(553,"Upsilon"));
00340 m_map.insert(make_pair(30553,"Upsilon(2S)"));
00341 m_map.insert(make_pair(60553,"Upsilon(3S)"));
00342 m_map.insert(make_pair(70553,"Upsilon(4S)"));
00343 m_map.insert(make_pair(80553,"Upsilon(5S)"));
00344 m_map.insert(make_pair(10553,"h_b"));
00345 m_map.insert(make_pair(40553,"h_b(2P)"));
00346 m_map.insert(make_pair(100553,"h_b(3P)"));
00347 m_map.insert(make_pair(10551,"chi_b0"));
00348 m_map.insert(make_pair(20553,"chi_b1"));
00349 m_map.insert(make_pair(555,"chi_b2"));
00350 m_map.insert(make_pair(30551,"chi_b0(2P)"));
00351 m_map.insert(make_pair(50553,"chi_b1(2P)"));
00352 m_map.insert(make_pair(10555,"chi_b2(2P)"));
00353 m_map.insert(make_pair(50551,"chi_b0(3P)"));
00354 m_map.insert(make_pair(110553,"chi_b1(3P)"));
00355 m_map.insert(make_pair(20555,"chi_b2(3P)"));
00356 m_map.insert(make_pair(40555,"eta_b2(1D)"));
00357 m_map.insert(make_pair(60555,"eta_b2(2D)"));
00358 m_map.insert(make_pair(120553,"Upsilon_1(1D)"));
00359 m_map.insert(make_pair(30555,"Upsilon_2(1D)"));
00360 m_map.insert(make_pair(557,"Upsilon_3(1D)"));
00361 m_map.insert(make_pair(130553,"Upsilon_1(2D)"));
00362 m_map.insert(make_pair(50555,"Upsilon_2(2D)"));
00363 m_map.insert(make_pair(10557,"Upsilon_3(2D)"));
00364 m_map.insert(make_pair(10222,"sigma_0"));
00365 m_map.insert(make_pair(1114,"Delta-"));
00366 m_map.insert(make_pair(-1114,"anti-Delta+"));
00367 m_map.insert(make_pair(2110,"n_diffr"));
00368 m_map.insert(make_pair(-2110,"anti-n_diffr"));
00369 m_map.insert(make_pair(2112,"n0"));
00370 m_map.insert(make_pair(-2112,"anti-n0"));
00371 m_map.insert(make_pair(2114,"Delta0"));
00372 m_map.insert(make_pair(-2114,"anti-Delta0"));
00373 m_map.insert(make_pair(2210,"p_diff+"));
00374 m_map.insert(make_pair(-2210,"anti-p_diff-"));
00375 m_map.insert(make_pair(2212,"p+"));
00376 m_map.insert(make_pair(-2212,"anti-p-"));
00377 m_map.insert(make_pair(2214,"Delta+"));
00378 m_map.insert(make_pair(-2214,"anti-Delta-"));
00379 m_map.insert(make_pair(2224,"Delta++"));
00380 m_map.insert(make_pair(-2224,"anti-Delta--"));
00381 m_map.insert(make_pair(3112,"Sigma-"));
00382 m_map.insert(make_pair(-3112,"anti-Sigma+"));
00383 m_map.insert(make_pair(3114,"Sigma*-"));
00384 m_map.insert(make_pair(-3114,"anti-Sigma*+"));
00385 m_map.insert(make_pair(3122,"Lambda0"));
00386 m_map.insert(make_pair(-3122,"anti-Lambda0"));
00387 m_map.insert(make_pair(13122,"Lambda(1405)0"));
00388 m_map.insert(make_pair(-13122,"anti-Lambda(1405)0"));
00389 m_map.insert(make_pair(3124,"Lambda(1520)0"));
00390 m_map.insert(make_pair(-3124,"anti-Lambda(1520)0"));
00391 m_map.insert(make_pair(23122,"Lambda(1600)0"));
00392 m_map.insert(make_pair(-23122,"anti-Lambda(1600)0"));
00393 m_map.insert(make_pair(33122,"Lambda(1670)0"));
00394 m_map.insert(make_pair(-33122,"anti-Lambda(1670)0"));
00395 m_map.insert(make_pair(13124,"Lambda(1690)0"));
00396 m_map.insert(make_pair(-13124,"anti-Lambda(1690)0"));
00397 m_map.insert(make_pair(43122,"Lambda(1800)0"));
00398 m_map.insert(make_pair(-43122,"anti-Lambda(1800)0"));
00399 m_map.insert(make_pair(53122,"Lambda(1810)0"));
00400 m_map.insert(make_pair(-53122,"anti-Lambda(1810)0"));
00401 m_map.insert(make_pair(3126,"Lambda(1820)0"));
00402 m_map.insert(make_pair(-3126,"anti-Lambda(1820)0"));
00403 m_map.insert(make_pair(13126,"Lambda(1830)0"));
00404 m_map.insert(make_pair(-13126,"anti-Lambda(1830)0"));
00405 m_map.insert(make_pair(13212,"Sigma(1660)0"));
00406 m_map.insert(make_pair(-13212,"anti-Sigma(1660)0"));
00407 m_map.insert(make_pair(13214,"Sigma(1670)0"));
00408 m_map.insert(make_pair(-13214,"anti-Sigma(1670)0"));
00409 m_map.insert(make_pair(23212,"Sigma(1750)0"));
00410 m_map.insert(make_pair(-23212,"anti-Sigma(1750)0"));
00411 m_map.insert(make_pair(3216,"Sigma(1775)0"));
00412 m_map.insert(make_pair(-3216,"anti-Sigma(1775)0"));
00413 m_map.insert(make_pair(3212,"Sigma0"));
00414 m_map.insert(make_pair(-3212,"anti-Sigma0"));
00415 m_map.insert(make_pair(3214,"Sigma*0"));
00416 m_map.insert(make_pair(-3214,"anti-Sigma*0"));
00417 m_map.insert(make_pair(3222,"Sigma+"));
00418 m_map.insert(make_pair(-3222,"anti-Sigma-"));
00419 m_map.insert(make_pair(3224,"Sigma*+"));
00420 m_map.insert(make_pair(-3224,"anti-Sigma*-"));
00421 m_map.insert(make_pair(3312,"Xi-"));
00422 m_map.insert(make_pair(-3312,"anti-Xi+"));
00423 m_map.insert(make_pair(3314,"Xi*-"));
00424 m_map.insert(make_pair(-3314,"anti-Xi*+"));
00425 m_map.insert(make_pair(3322,"Xi0"));
00426 m_map.insert(make_pair(-3322,"anti-Xi0"));
00427 m_map.insert(make_pair(3324,"Xi*0"));
00428 m_map.insert(make_pair(-3324,"anti-Xi*0"));
00429 m_map.insert(make_pair(3334,"Omega-"));
00430 m_map.insert(make_pair(-3334,"anti-Omega+"));
00431 m_map.insert(make_pair(14122,"Lambda_c(2593)+"));
00432 m_map.insert(make_pair(-14122,"anti-Lambda_c(2593)-"));
00433 m_map.insert(make_pair(14124,"Lambda_c(2625)+"));
00434 m_map.insert(make_pair(-14124,"anti-Lambda_c(2625)-"));
00435 m_map.insert(make_pair(4112,"Sigma_c0"));
00436 m_map.insert(make_pair(-4112,"anti-Sigma_c0"));
00437 m_map.insert(make_pair(4114,"Sigma_c*0"));
00438 m_map.insert(make_pair(-4114,"anti-Sigma_c*0"));
00439 m_map.insert(make_pair(4212,"Sigma_c+"));
00440 m_map.insert(make_pair(-4212,"anti-Sigma_c-"));
00441 m_map.insert(make_pair(4214,"Sigma_c*+"));
00442 m_map.insert(make_pair(-4214,"anti-Sigma_c*-"));
00443 m_map.insert(make_pair(4222,"Sigma_c++"));
00444 m_map.insert(make_pair(-4222,"anti-Sigma_c--"));
00445 m_map.insert(make_pair(4224,"Sigma_c*++"));
00446 m_map.insert(make_pair(-4224,"anti-Sigma_c*--"));
00447 m_map.insert(make_pair(4312,"Xi'_c0"));
00448 m_map.insert(make_pair(-4312,"anti-Xi'_c0"));
00449 m_map.insert(make_pair(4322,"Xi'_c+"));
00450 m_map.insert(make_pair(-4322,"anti-Xi'_c-"));
00451 m_map.insert(make_pair(4324,"Xi_c*+"));
00452 m_map.insert(make_pair(-4324,"anti-Xi_c*-"));
00453 m_map.insert(make_pair(4122,"Lambda_c+"));
00454 m_map.insert(make_pair(-4122,"anti-Lambda_c-"));
00455 m_map.insert(make_pair(4132,"Xi_c0"));
00456 m_map.insert(make_pair(-4132,"anti-Xi_c0"));
00457 m_map.insert(make_pair(4232,"Xi_c+"));
00458 m_map.insert(make_pair(-4232,"anti-Xi_c-"));
00459 m_map.insert(make_pair(4314,"Xi_c*0"));
00460 m_map.insert(make_pair(-4314,"anti-Xi_c*0"));
00461 m_map.insert(make_pair(4332,"Omega_c0"));
00462 m_map.insert(make_pair(-4332,"anti-Omega_c0"));
00463 m_map.insert(make_pair(4334,"Omega_c*0"));
00464 m_map.insert(make_pair(-4334,"anti-Omega_c*0"));
00465 m_map.insert(make_pair(5112,"Sigma_b-"));
00466 m_map.insert(make_pair(-5112,"anti-Sigma_b+"));
00467 m_map.insert(make_pair(5114,"Sigma_b*-"));
00468 m_map.insert(make_pair(-5114,"anti-Sigma_b*+"));
00469 m_map.insert(make_pair(5122,"Lambda_b0"));
00470 m_map.insert(make_pair(-5122,"anti-Lambda_b0"));
00471 m_map.insert(make_pair(5132,"Xi_b-"));
00472 m_map.insert(make_pair(-5132,"anti-Xi_b+"));
00473 m_map.insert(make_pair(5212,"Sigma_b0"));
00474 m_map.insert(make_pair(-5212,"anti-Sigma_b0"));
00475 m_map.insert(make_pair(5214,"Sigma_b*0"));
00476 m_map.insert(make_pair(-5214,"anti-Sigma_b*0"));
00477 m_map.insert(make_pair(5222,"Sigma_b+"));
00478 m_map.insert(make_pair(-5222,"anti-Sigma_b-"));
00479 m_map.insert(make_pair(5224,"Sigma_b*+"));
00480 m_map.insert(make_pair(-5224,"anti-Sigma_b*-"));
00481 m_map.insert(make_pair(5232,"Xi_b0"));
00482 m_map.insert(make_pair(-5232,"anti-Xi_b0"));
00483 m_map.insert(make_pair(5312,"Xi'_b-"));
00484 m_map.insert(make_pair(-5312,"anti-Xi'_b+"));
00485 m_map.insert(make_pair(5314,"Xi_b*-"));
00486 m_map.insert(make_pair(-5314,"anti-Xi_b*+"));
00487 m_map.insert(make_pair(5322,"Xi'_b0"));
00488 m_map.insert(make_pair(-5322,"anti-Xi'_b0"));
00489 m_map.insert(make_pair(5324,"Xi_b*0"));
00490 m_map.insert(make_pair(-5324,"anti-Xi_b*0"));
00491 m_map.insert(make_pair(5332,"Omega_b-"));
00492 m_map.insert(make_pair(-5332,"anti-Omega_b+"));
00493 m_map.insert(make_pair(5334,"Omega_b*-"));
00494 m_map.insert(make_pair(-5334,"anti-Omega_b*+"));
00495 m_map.insert(make_pair(1101,"dd_0"));
00496 m_map.insert(make_pair(-1101,"anti-dd_0"));
00497 m_map.insert(make_pair(2101,"ud_0"));
00498 m_map.insert(make_pair(-2101,"anti-ud_0"));
00499 m_map.insert(make_pair(2201,"uu_0"));
00500 m_map.insert(make_pair(-2201,"anti-uu_0"));
00501 m_map.insert(make_pair(3101,"sd_0"));
00502 m_map.insert(make_pair(-3101,"anti-sd_0"));
00503 m_map.insert(make_pair(3201,"su_0"));
00504 m_map.insert(make_pair(-3201,"anti-su_0"));
00505 m_map.insert(make_pair(3301,"ss_0"));
00506 m_map.insert(make_pair(-3301,"anti-ss_0"));
00507 m_map.insert(make_pair(4101,"cd_0"));
00508 m_map.insert(make_pair(-4101,"anti-cd_0"));
00509 m_map.insert(make_pair(4201,"cu_0"));
00510 m_map.insert(make_pair(-4201,"anti-cu_0"));
00511 m_map.insert(make_pair(4301,"cs_0"));
00512 m_map.insert(make_pair(-4301,"anti-cs_0"));
00513 m_map.insert(make_pair(4401,"cc_0"));
00514 m_map.insert(make_pair(-4401,"anti-cc_0"));
00515 m_map.insert(make_pair(5101,"bd_0"));
00516 m_map.insert(make_pair(-5101,"anti-bd_0"));
00517 m_map.insert(make_pair(5201,"bu_0"));
00518 m_map.insert(make_pair(-5201,"anti-bu_0"));
00519 m_map.insert(make_pair(5301,"bs_0"));
00520 m_map.insert(make_pair(-5301,"anti-bs_0"));
00521 m_map.insert(make_pair(5401,"bc_0"));
00522 m_map.insert(make_pair(-5401,"anti-bc_0"));
00523 m_map.insert(make_pair(5501,"bb_0"));
00524 m_map.insert(make_pair(-5501,"anti-bb_0"));
00525 m_map.insert(make_pair(1103,"dd_1"));
00526 m_map.insert(make_pair(-1103,"anti-dd_1"));
00527 m_map.insert(make_pair(2103,"ud_1"));
00528 m_map.insert(make_pair(-2103,"anti-ud_1"));
00529 m_map.insert(make_pair(2203,"uu_1"));
00530 m_map.insert(make_pair(-2203,"anti-uu_1"));
00531 m_map.insert(make_pair(3103,"sd_1"));
00532 m_map.insert(make_pair(-3103,"anti-sd_1"));
00533 m_map.insert(make_pair(3203,"su_1"));
00534 m_map.insert(make_pair(-3203,"anti-su_1"));
00535 m_map.insert(make_pair(3303,"ss_1"));
00536 m_map.insert(make_pair(-3303,"anti-ss_1"));
00537 m_map.insert(make_pair(4103,"cd_1"));
00538 m_map.insert(make_pair(-4103,"anti-cd_1"));
00539 m_map.insert(make_pair(4203,"cu_1"));
00540 m_map.insert(make_pair(-4203,"anti-cu_1"));
00541 m_map.insert(make_pair(4303,"cs_1"));
00542 m_map.insert(make_pair(-4303,"anti-cs_1"));
00543 m_map.insert(make_pair(4403,"cc_1"));
00544 m_map.insert(make_pair(-4403,"anti-cc_1"));
00545 m_map.insert(make_pair(5103,"bd_1"));
00546 m_map.insert(make_pair(-5103,"anti-bd_1"));
00547 m_map.insert(make_pair(5203,"bu_1"));
00548 m_map.insert(make_pair(-5203,"anti-bu_1"));
00549 m_map.insert(make_pair(5303,"bs_1"));
00550 m_map.insert(make_pair(-5303,"anti-bs_1"));
00551 m_map.insert(make_pair(5403,"bc_1"));
00552 m_map.insert(make_pair(-5403,"anti-bc_1"));
00553 m_map.insert(make_pair(5503,"bb_1"));
00554 m_map.insert(make_pair(-5503,"anti-bb_1"));
00555 m_map.insert(make_pair(1011,"deuteron"));
00556 m_map.insert(make_pair(-1011,"anti-deuteron"));
00557 m_map.insert(make_pair(1021,"tritium"));
00558 m_map.insert(make_pair(-1021,"anti-tritium"));
00559 m_map.insert(make_pair(1012,"He3"));
00560 m_map.insert(make_pair(-1012,"anti-He3"));
00561 m_map.insert(make_pair(1022,"alpha"));
00562 m_map.insert(make_pair(-1022,"anti-alpha"));
00563 m_map.insert(make_pair(100,"geantino"));
00564 m_map.insert(make_pair(101,"chargedgeantino"));
00565 m_map.insert(make_pair(30343,"Xsd"));
00566 m_map.insert(make_pair(-30343,"anti-Xsd"));
00567 m_map.insert(make_pair(30353,"Xsu"));
00568 m_map.insert(make_pair(-30353,"anti-Xsu"));
00569 m_map.insert(make_pair(30373,"Xdd"));
00570 m_map.insert(make_pair(-30373,"anti-Xdd"));
00571 m_map.insert(make_pair(30383,"Xdu"));
00572 m_map.insert(make_pair(-30383,"anti-Xdu"));
00573 m_map.insert(make_pair(30363,"Xss"));
00574 m_map.insert(make_pair(-30363,"anti-Xss"));
00575 m_map.insert(make_pair(51,"dummy00_1"));
00576 m_map.insert(make_pair(52,"dummy10_1"));
00577 m_map.insert(make_pair(53,"dummy01_1"));
00578 m_map.insert(make_pair(54,"dummy11_1"));
00579 m_map.insert(make_pair(-51,"anti-dummy00_1"));
00580 m_map.insert(make_pair(-52,"anti-dummy10_1"));
00581 m_map.insert(make_pair(-53,"anti-dummy01_1"));
00582 m_map.insert(make_pair(-54,"anti-dummy11_1"));
00583 m_map.insert(make_pair(55,"dummy00_2"));
00584 m_map.insert(make_pair(56,"dummy10_2"));
00585 m_map.insert(make_pair(57,"dummy01_2"));
00586 m_map.insert(make_pair(58,"dummy11_2"));
00587 m_map.insert(make_pair(-55,"anti-dummy00_2"));
00588 m_map.insert(make_pair(-56,"anti-dummy10_2"));
00589 m_map.insert(make_pair(-57,"anti-dummy01_2"));
00590 m_map.insert(make_pair(-58,"anti-dummy11_2"));
00591
00592
00593
00594
00595
00596
00597 log << MSG::INFO << "successfully return from initialize()" <<endmsg;
00598 return StatusCode::SUCCESS;
00599
00600 }
00601
00602
00603 StatusCode DumpDecayTreeAlg::execute() {
00604
00605 MsgStream log(msgSvc(), name());
00606 log << MSG::INFO << "in execute()" << endreq;
00607
00608
00610 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00611
00612 if( !eventHeader ) {
00613 log << MSG::FATAL << "Could not find EventHeader" << endreq;
00614 return StatusCode::FAILURE;
00615 }
00616
00617
00619 SmartDataPtr<Event::McParticleCol> mcParticleCol(eventSvc(), EventModel::MC::McParticleCol);
00620
00621 if( !mcParticleCol ) {
00622 log << MSG::FATAL << "Could not find McParticleCol" << endreq;
00623 return StatusCode::FAILURE;
00624 }
00625
00626
00628 ++m_eventCounter;
00629
00630 if ( ((m_eventCounter % m_freq) == 0) || m_FindRunEvent ) {
00631
00633 int run = eventHeader->runNumber();
00634 int event = eventHeader->eventNumber();
00635
00637 bool validEvent = false;
00638 if(m_FindRunEvent && (run == m_FindRun) && (event == m_FindEvent)) validEvent = true;
00639 if(!m_FindRunEvent) validEvent = true;
00640
00642 if(validEvent) {
00643
00644 cout << endl << endl << "-------------------------" << endl;
00645 cout << "Run: " << run << ", Event: " << event << endl;
00646
00647
00650 cout << "Vertices: " << endl;
00651
00652
00653 bool foundClusterAsMother = false;
00654 if(!m_BesEvtGenOnly) foundClusterAsMother = true;
00655
00656 Event::McParticleCol::iterator iter_mc = mcParticleCol->begin();
00657 for ( ; iter_mc != mcParticleCol->end(); iter_mc++) {
00658
00659 if(!(*iter_mc)->primaryParticle()) {
00660 if((*iter_mc)->mother().particleProperty() == 91) foundClusterAsMother = true;
00661 }
00662 if(!foundClusterAsMother) continue;
00663
00664 const SmartRefVector<Event::McParticle>& gc = (*iter_mc)->daughterList();
00665
00666 if( gc.size() > 0) {
00667 cout << " " << (m_map.find((*iter_mc)->particleProperty()))->second << " ["
00668 << (*iter_mc)->trackIndex() << "] -> ";
00669
00670 for(unsigned int ii = 0; ii < gc.size(); ii++) {
00671 if(ii != (gc.size()-1))
00672 cout << (m_map.find(gc[ii]->particleProperty()))->second << " ["
00673 << gc[ii]->trackIndex() << "], ";
00674 else
00675 cout << (m_map.find(gc[ii]->particleProperty()))->second
00676 << " [" << gc[ii]->trackIndex() << "]" << endl;
00677 }
00678
00679 }
00680
00681 }
00682
00683
00686
00687 if(m_PrintParticles) {
00688
00689 cout << endl << "Particles: [#Children, primParticle, leafParticle, decayFromGen, decayInFlight] " << endl;
00690
00691 foundClusterAsMother = false;
00692 if(!m_BesEvtGenOnly) foundClusterAsMother = true;
00693
00694 bool firstDecayInFlight = true;
00695 iter_mc = mcParticleCol->begin();
00696 for ( ; iter_mc != mcParticleCol->end(); iter_mc++) {
00697
00698 if(!(*iter_mc)->primaryParticle()) {
00699 if((*iter_mc)->mother().particleProperty() == 91) foundClusterAsMother = true;
00700 }
00701 if(!foundClusterAsMother) continue;
00702
00703 const SmartRefVector<Event::McParticle>& gc = (*iter_mc)->daughterList();
00704 int numChildren = gc.size();
00705
00706 string primaryParticle = "F";
00707 if((*iter_mc)->primaryParticle()) primaryParticle = "T";
00708
00709 string leafParticle = "F";
00710 if((*iter_mc)->leafParticle()) leafParticle = "T";
00711
00712 string decayFromGen = "F";
00713 if((*iter_mc)->decayFromGenerator()) decayFromGen = "T";
00714
00715 string decayInFlight = "F";
00716 if((*iter_mc)->decayInFlight()) {
00717 decayInFlight = "T";
00718
00719 if(firstDecayInFlight) {
00720 cout << endl;
00721 firstDecayInFlight = false;
00722 }
00723 }
00724
00725 cout << " " << (*iter_mc)->trackIndex() << ": "
00726 << (m_map.find((*iter_mc)->particleProperty()))->second
00727 << " p4 = " << (*iter_mc)->initialFourMomentum() << " ["
00728 << numChildren << ", "
00729 << primaryParticle << ", " << leafParticle << ", "
00730 << decayFromGen << ", " << decayInFlight << "]"
00731 << endl;
00732
00733 }
00734 }
00735
00736 }
00737 }
00738
00739
00740 return StatusCode::SUCCESS;
00741 }
00742
00743
00744
00745 StatusCode DumpDecayTreeAlg::finalize() {
00746
00747 MsgStream log(msgSvc(), name());
00748 log << MSG::INFO << "in finalize()" << endmsg;
00749
00750 return StatusCode::SUCCESS;
00751 }