bool Soft_Cluster_Handler:: AttachHadronsToBlob(Cluster_List * clin,Blob * blob) { Cluster_Iterator cit(clin->begin()); Particle * part; Cluster * cluster; while (cit!=clin->end()) { cluster = (*cit); switch (cluster->size()) { case 1: part = cluster->GetSelf(); part->SetFinalMass(); blob->AddToOutParticles(part); msg_Tracking()<<"$$ attach one hadron ("<<part->Flav()<<", " <<part->Momentum()<<", " <<"pt = "<<part->Momentum().PPerp()<<", " <<"y = "<<part->Momentum().Y()<<") " <<"from cluster "<<cluster->Number()<<", " <<"m = "<<cluster->Mass()<<".\n"; delete cluster->GetTrip(); delete cluster->GetAnti(); delete cluster; cit = clin->erase(cit); break; case 2: FixHHDecay(cluster,blob,(*cluster)[0],(*cluster)[1]); delete cluster->GetTrip(); delete cluster->GetAnti(); delete cluster; cit = clin->erase(cit); break; case 0: cit++; break; default: cit++; break; } } return true; }
bool Soft_Cluster_Handler::CheckIfAllowed(Cluster_List * clin,double & E) { double totmass(0.); Vec4D totmom(0.,0.,0.,0.); Cluster * cluster; for (Cluster_Iterator cit=clin->begin();cit!=clin->end();cit++) { cluster = (*cit); msg_Tracking()<<METHOD<<"("<<cluster->Number()<<").\n"; switch (cluster->size()) { case 1: totmass += (*cluster)[0].HadMass(); break; case 2: case 0: default: totmass += cluster->Mass(); break; } if (E<0) totmom += cluster->Momentum(); } if (E<0) E = sqrt(totmom.Abs2()); return (totmass<E); }