70 Double_t px, Double_t py, Double_t pz,
71 Double_t e, Double_t vx, Double_t vy, Double_t vz,
72 Double_t time, Double_t polx, Double_t poly,
73 Double_t polz, TMCProcess proc, Int_t& ntr,
74 Double_t weight, Int_t is)
89 Double_t px, Double_t py, Double_t pz,
90 Double_t e, Double_t vx, Double_t vy, Double_t vz,
91 Double_t time, Double_t polx, Double_t poly,
92 Double_t polz, TMCProcess proc, Int_t& ntr,
93 Double_t weight, Int_t is, Int_t secondparentID)
103 Int_t daughter1Id = -1;
104 Int_t daughter2Id = -1;
105 TParticle* particle =
106 new(partArray[
fNParticles++]) TParticle(pdgCode, trackId, parentId,nPoints,
107 daughter1Id, daughter2Id, px, py, pz, e, vx, vy, vz, time);
111 particle->SetPolarisation(polx, poly, polz);
112 particle->SetWeight(weight);
113 particle->SetUniqueID(proc);
116 particle->SetFirstMother(secondparentID);
117 particle->SetLastMother(secondparentID);
120 particle->SetFirstMother(parentId);
121 particle->SetLastMother(parentId);
274 LOG(DEBUG) <<
"ShipStack: Updating track indizes...";
280 Int_t iMotherOld = track->GetMotherId();
283 LOGF(fatal,
"ShipStack: Particle index %i not found in dex map! ", iMotherOld);
285 track->SetMotherId( (*fIndexIter).second );
291 fDetIter = detList->MakeIterator();
297 FairDetector* det = NULL;
298 while( (det = (FairDetector*)fDetIter->Next() ) ) {
303 TClonesArray* hitArray;
304 while ( (hitArray = det->GetCollection(iColl++)) ) {
306 Int_t nPoints = hitArray->GetEntriesFast();
309 for (Int_t iPoint=0; iPoint<nPoints; iPoint++) {
310 FairMCPoint* point = (FairMCPoint*)hitArray->At(iPoint);
311 Int_t iTrack = point->GetTrackID();
315 LOGF(fatal,
"ShipStack: Particle index %i not found in index map! ", iTrack);
317 point->SetTrackID((*fIndexIter).second);
318 point->SetLink(FairLink(
"MCTrack", (*fIndexIter).second));
323 LOGF(debug,
"...stack and %i collections updated.", nColl);
433 Bool_t store = kTRUE;
436 Int_t iMother = thisPart->GetMother(0);
438 thisPart->Momentum(p);
439 Double_t energy = p.E();
440 Double_t mass = p.M();
441 if (std::isnan(mass)) mass == thisPart->GetMass();
442 if (std::isnan(mass)){
443 LOG(WARNING) <<
"ShipStack: NaN particle mass detected => setting to zero for "
444 << thisPart->GetPdgCode();
447 Double_t eKin = energy - mass;
452 pair<Int_t, Int_t> a(i, iDet);
459 if (iMother < 0) { store = kTRUE; }
virtual void PushTrack(Int_t toBeDone, Int_t parentID, Int_t pdgCode, Double_t px, Double_t py, Double_t pz, Double_t e, Double_t vx, Double_t vy, Double_t vz, Double_t time, Double_t polx, Double_t poly, Double_t polz, TMCProcess proc, Int_t &ntr, Double_t weight, Int_t is)