]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/Tauola/TauolaHEPEVTEvent.cxx
Fixes for object target dependencies
[u/mrichter/AliRoot.git] / TEvtGen / Tauola / TauolaHEPEVTEvent.cxx
CommitLineData
0ca57c2f 1#include "TauolaHEPEVTEvent.h"
2
e1938fed 3#include "TauolaLog.h"
0ca57c2f 4
5namespace Tauolapp
6{
7
8TauolaHEPEVTEvent::~TauolaHEPEVTEvent()
9{
10 for(unsigned int i=0;i<particle_list.size();i++) delete particle_list[i];
11}
12
13TauolaHEPEVTEvent::TauolaHEPEVTEvent() {}
14
15void TauolaHEPEVTEvent::addParticle(TauolaHEPEVTParticle *p)
16{
17 p->setEvent(this);
18
19 p->setBarcode(particle_list.size());
20 particle_list.push_back(p);
21}
22
23TauolaHEPEVTParticle *TauolaHEPEVTEvent::getParticle(int i)
24{
25 if( i<0 || i>=(int)particle_list.size() ) return NULL;
26 return particle_list[i];
27}
28
29int TauolaHEPEVTEvent::getParticleCount()
30{
31 return particle_list.size();
32}
33
34// we have conflict in names, looks for -pdg_id also...
35std::vector<TauolaParticle*> TauolaHEPEVTEvent::findParticles(int pdg_id){
36
37 std::vector<TauolaParticle*> list;
38
39 // Loop over all particles in the event looking
40 // for tau (or other) particle with specified pdg_id and -pdg_id
41 for(unsigned int i=0; i<particle_list.size(); i++)
42 {
43 if( abs(particle_list[i]->getPdgID() ) == pdg_id)
44 list.push_back(particle_list[i]);
45 }
46
47 return list;
48}
49
50// we have conflict in names, should be findStableTaus or have another argument.
51std::vector<TauolaParticle*> TauolaHEPEVTEvent::findStableParticles(int pdg_id){
52
53 std::vector<TauolaParticle*> tau_list = findParticles(pdg_id);
54 std::vector<TauolaParticle*> stable_tau_list;
55
56 for(int i=0; i<(int) tau_list.size(); i++){
57
58 if(!tau_list.at(i)->hasDaughters())
59 stable_tau_list.push_back(tau_list[i]);
60 else
61 {
62 std::vector<TauolaParticle*> t = tau_list[i]->getDaughters();
63 //Ignore taus that we won't be decaying anyway
64 if(t.size()==1) continue;
65 if(t.size()==2 && (abs(t[0]->getPdgID())==15 || abs(t[1]->getPdgID())==15) ) continue;
66 Log::Warning()<<"Particle with pdg code "<<tau_list.at(i)->getPdgID()
67 <<" already has daughters" <<endl;
68 }
69 }
70
71 return stable_tau_list;
72
73}
74
75void TauolaHEPEVTEvent::print()
76{
77 printf("TauolaHEPEVTEvent\n-----------------\n");
78 for(unsigned int i=0;i<particle_list.size();i++) particle_list[i]->print();
79}
80
81void TauolaHEPEVTEvent::clear()
82{
83 for(unsigned int i=0;i<particle_list.size();i++) delete particle_list[i];
84 particle_list.clear();
85}
86
87#ifdef USE_HEPEVT_INTERFACE
88
89void TauolaHEPEVTEvent::read_event_from_HEPEVT(TauolaHEPEVTEvent *evt)
90{
91 if(evt==NULL) return;
92
93 for(int i=0; i<hepevt_.nhep; i++)
94 {
95 TauolaHEPEVTParticle *p = new TauolaHEPEVTParticle
96 (
97 hepevt_.idhep [i],
98 hepevt_.isthep[i],
99 hepevt_.phep [i][0],
100 hepevt_.phep [i][1],
101 hepevt_.phep [i][2],
102 hepevt_.phep [i][3],
103 hepevt_.phep [i][4],
104 hepevt_.jmohep[i][0]-1,
105 hepevt_.jmohep[i][1]-1,
106 hepevt_.jdahep[i][0]-1,
107 hepevt_.jdahep[i][1]-1
108 );
109 evt->addParticle(p);
110 }
111}
112
113void TauolaHEPEVTEvent::write_event_to_HEPEVT(TauolaHEPEVTEvent *evt)
114{
115 if(evt==NULL) return;
116
117 hepevt_.nhep = evt->getParticleCount();
118
119 for(int i=0; i<hepevt_.nhep; i++)
120 {
121 TauolaHEPEVTParticle *p = evt->getParticle(i);
122
123 hepevt_.idhep [i] =p->getPdgID();
124 hepevt_.isthep[i] =p->getStatus();
125 hepevt_.phep [i][0]=p->getPx();
126 hepevt_.phep [i][1]=p->getPy();
127 hepevt_.phep [i][2]=p->getPz();
128 hepevt_.phep [i][3]=p->getE();
129 hepevt_.phep [i][4]=p->getMass();
130 hepevt_.jmohep[i][0]=p->getFirstMotherIndex() +1;
131 hepevt_.jmohep[i][1]=p->getSecondMotherIndex() +1;
132 hepevt_.jdahep[i][0]=p->getDaughterRangeStart()+1;
133 hepevt_.jdahep[i][1]=p->getDaughterRangeEnd() +1;
134 hepevt_.vhep [i][0]=0.0;
135 hepevt_.vhep [i][1]=0.0;
136 hepevt_.vhep [i][2]=0.0;
137 hepevt_.vhep [i][3]=0.0;
138 }
139}
140
141#endif
142
143} // namespace Tauolapp