101 Error(
"ReadEvent",
"No PrimaryGenerator!");
108 Error(
"ReadEvent",
"Error: No stack found!");
112 Float_t polar[3] = {0, 0, 0};
120 TLorentzVector* mom =
new TLorentzVector();
123 static TClonesArray* particles;
124 if (!particles) particles =
new TClonesArray(
"TParticle", 1000);
128 Info(
"ReadEvent",
"nPrimaries = %d and ntracks = %d before fast decayer", nPrimStack, nTrackStack);
131 primGen->DoTracking(kTRUE);
135 std::vector<int>::iterator it;
138 for (Int_t iTrack = 0; iTrack < nTrackStack; ++iTrack) {
142 Int_t pdg = part->GetPdgCode();
151 if ( part->GetNDaughters() > 0) {
152 Info(
"ReadEvent",
"Attention: particle %d is already decayed (code:%d,daughters:%d)!", pdg, part->GetStatusCode(),
153 part->GetNDaughters());
158 part->SetStatusCode(11);
161 mom->SetPxPyPzE(part->Px(), part->Py(), part->Pz(), part->Energy());
167 np =
fDecayer->ImportParticles(particles);
170 Int_t* trackIt =
new Int_t[np];
171 Int_t* pParent =
new Int_t[np];
173 Info(
"ReadEvent",
"number of products: np = %d for mother: %d", np - 1, pdg);
176 for (
int i = 0; i < np; i++) {
183 TParticle* iparticle = 0;
185 for (
int i = 1; i < np; i++) {
186 iparticle = (TParticle*) particles->At(i);
187 Int_t ks = iparticle->GetStatusCode();
188 Int_t pdgd = iparticle->GetPdgCode();
205 origin0[0] = part->Vx();
206 origin0[1] = part->Vy();
207 origin0[2] = part->Vz();
218 for (
int i = 1; i < np; i++) {
219 TParticle* iparticle = (TParticle*) particles->At(i);
220 Int_t
kf = iparticle->GetPdgCode();
221 Int_t ksc = iparticle->GetStatusCode();
222 Int_t jpa = iparticle->GetFirstMother() - 1;
229 Info(
"ReadEvent",
"FirstMother = %d (iparent %d), indicePart = %d, pdg = %d ", jpa, iparent, i,
kf);
232 och[0] = origin0[0] + iparticle->Vx();
233 och[1] = origin0[1] + iparticle->Vy();
234 och[2] = origin0[2] + iparticle->Vz();
235 pc[0] = iparticle->Px();
236 pc[1] = iparticle->Py();
237 pc[2] = iparticle->Pz();
238 tof = part->T() + iparticle->T();
239 Double_t ee = iparticle->Energy();
245 " Add track %d to primary Generator: pdg=%d with parent=%d and do "
246 "tracking %d (stack primaries: %d, tracks: %d)",
249 primGen->AddTrack(
kf, pc[0], pc[1], pc[2], och[0], och[1], och[2], iparent - nTrackStack, trackIt[i], ee);
255 if (trackIt)
delete[] trackIt;
256 if (pParent)
delete[] pParent;
260 primGen->DoTracking(kFALSE);