本文整理汇总了C++中TParticle::GetFirstDaughter方法的典型用法代码示例。如果您正苦于以下问题:C++ TParticle::GetFirstDaughter方法的具体用法?C++ TParticle::GetFirstDaughter怎么用?C++ TParticle::GetFirstDaughter使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TParticle
的用法示例。
在下文中一共展示了TParticle::GetFirstDaughter方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: kine_daughters
void kine_daughters(IlcEveTrack* parent, IlcStack* stack,
Double_t min_pt, Double_t min_p,
Bool_t pdg_col, Bool_t recurse)
{
TParticle *p = stack->Particle(parent->GetLabel());
if (p->GetNDaughters() > 0)
{
TEveTrackPropagator* rs = parent->GetPropagator();
for (int d=p->GetFirstDaughter(); d>0 && d<=p->GetLastDaughter(); ++d)
{
TParticle* dp = stack->Particle(d);
if (dp->Pt() < min_pt && dp->P() < min_p) continue;
IlcEveTrack* dtrack = new IlcEveTrack(dp, d, rs);
char form[1000];
sprintf(form,"%s [%d]", dp->GetName(), d);
dtrack->SetName(form);
dtrack->SetStdTitle();
set_track_color(dtrack, pdg_col);
gEve->AddElement(dtrack, parent);
if (recurse)
kine_daughters(dtrack, stack, min_pt, min_p, pdg_col, recurse);
}
}
}
示例2: GetFinalDecayProducts
void GetFinalDecayProducts(Int_t ind, IlcStack & stack , TArrayI & ar){
// Recursive algorithm to get the final decay products of a particle
//
// ind is the index of the particle in the IlcStack
// stack is the particle stack from the generator
// ar contains the indexes of the final decay products
// ar[0] is the number of final decay products
if (ind<0 || ind>stack.GetNtrack()) {
cerr << "Invalid index of the particle " << ind << endl;
return;
}
if (ar.GetSize()==0) {
ar.Set(10);
ar[0] = 0;
}
TParticle * part = stack.Particle(ind);
Int_t iFirstDaughter = part->GetFirstDaughter();
if( iFirstDaughter<0) {
// This particle is a final decay product, add its index to the array
ar[0]++;
if (ar.GetSize() <= ar[0]) ar.Set(ar.GetSize()+10); // resize if needed
ar[ar[0]] = ind;
return;
}
Int_t iLastDaughter = part->GetLastDaughter();
for (Int_t id=iFirstDaughter; id<=iLastDaughter;id++) {
// Now search for final decay products of the daughters
GetFinalDecayProducts(id,stack,ar);
}
}
示例3: Warning
TEveElement*
kine_track(Int_t label,
Bool_t import_mother, Bool_t import_daughters,
Bool_t pdg_col, Bool_t recurse,
TEveElement* cont)
{
// Create mother and daughters tracks with given label.
// mother -> particle with label
// daughters -> daughters of label
if (label < 0) {
Warning("kine_track", "label not set.");
return 0;
}
IlcRunLoader* rl = IlcEveEventManager::AssertRunLoader();
rl->LoadKinematics();
IlcStack* stack = rl->Stack();
if (!stack)
{
Warning("kine_track", "can not get kinematics.");
return 0;
}
if (label >= stack->GetNtrack())
{
Warning("kine_track", "label out of range.");
return 0;
}
TParticle* p = stack->Particle(label);
if (import_mother || (import_daughters && p->GetNDaughters()))
{
TEveTrackPropagator* rs = 0;
if (cont == 0)
{
TEveTrackList* tlist = new TEveTrackList
(Form("Kinematics of %d %d", label, p->GetNDaughters()));
cont = tlist;
TEveTrackPropagator* trkProp = tlist->GetPropagator();
kine_track_propagator_setup(trkProp);
char tooltip[1000];
sprintf(tooltip,"Ndaughters=%d", p->GetNDaughters());
tlist->SetTitle(tooltip);
trkProp->SetMaxOrbs(2);
trkProp->SetEditPathMarks(kTRUE);
gEve->AddElement(cont);
rs = tlist->GetPropagator();
}
else
{
// check if container is TEveTrackList or IlcEveTrack (has rnr-style)
IlcEveTrack* t = dynamic_cast<IlcEveTrack*>(cont);
if (t) {
rs = t->GetPropagator();
} else {
TEveTrackList* l = dynamic_cast<TEveTrackList*>(cont);
if (l)
rs = l->GetPropagator();
else
Error("kine_tracks.C", "TrackRenderStyle not set.");
}
}
if (import_mother)
{
IlcEveTrack* track = new IlcEveTrack(p, label, rs);
char form[1000];
sprintf(form,"%s [%d]", p->GetName(), label);
track->SetName(form);
track->SetStdTitle();
set_track_color(track, pdg_col);
track->MakeTrack();
gEve->AddElement(track, cont);
cont = track;
}
if (import_daughters && p->GetNDaughters())
{
for (int d=p->GetFirstDaughter(); d>0 && d<=p->GetLastDaughter(); ++d)
{
TParticle* dp = stack->Particle(d);
IlcEveTrack* track = new IlcEveTrack(dp, d, rs);
char form[1000];
sprintf(form,"%s [%d]", dp->GetName(), d);
track->SetName(form);
track->SetStdTitle();
set_track_color(track, pdg_col);
track->MakeTrack();
gEve->AddElement(track, cont);
if (recurse)
kine_daughters(track, stack, 0, 0, pdg_col, recurse);
//.........这里部分代码省略.........