#if !defined( __CINT__) || defined(__MAKECINT__) #include #include #include #include #include #include #include #endif #ifndef __IOSTREAM__ #include #endif using namespace std; Int_t fillmatrix(Int_t j, Int_t gen, Int_t line, AliStack *stacks, TH2I* &matrix) { TParticle *part=stacks->Particle(j); Int_t children = part->GetNDaughters(); if(children==0) return line+1; Int_t daughter = part->GetDaughter(0); Int_t k=0; for(Int_t j = 0; j1000000){ continue; matrix->SetBinContent(gen+1,line,daughter); line++; } matrix->SetBinContent(gen+1,line,daughter); line = fillmatrix(daughter,gen+1,line,stacks,matrix); k++; daughter = part->GetDaughter(k); } return line; } void printevent(Int_t event = 0) { AliRunLoader *rl; delete gAlice; gAlice = NULL; rl=AliRunLoader::Open(); rl->LoadHeader(); rl->LoadKinematics(); rl->GetEvent(event); AliStack *stacks=rl->Stack(); TH2I* matrix = new TH2I("matrix","",200,0,200,200,0,200); Int_t Ntracks = stacks->GetNtrack(); Int_t line = 1; for(Int_t track = 0; track< Ntracks; track++){ TParticle *part=stacks->Particle(track); if(part->GetFirstMother()!=-1) continue; matrix->SetBinContent(1,line,track); line = fillmatrix(track,1,line,stacks,matrix); } // for(Int_t l = 1; lGetBinContent(g,l)); // if(TMath::Abs(code)<1000){ // TParticle* part = (stacks->Particle(code)); // Int_t children = part->GetNDaughters(); // printf("%-4i(%-2i)",code,children); // } else printf("%-4i( )",code); // g++; // } // while(matrix->GetBinContent(g,l)==0){ // g++; // printf(" "); // } // while(matrix->GetBinContent(g,l)!=0){ // Int_t code = Int_t(matrix->GetBinContent(g,l)); // if(TMath::Abs(code)<1000){ // TParticle* part = (stacks->Particle(code)); // Int_t children = part->GetNDaughters(); // printf("%-4i(%-2i)",code,children); // } else printf("%-4i( )",code); // g++; // } // cout << endl; // } TDatabasePDG* db = new TDatabasePDG(); const char* partname; for(Int_t l = 1; lParticle(Int_t(matrix->GetBinContent(g,l))); TParticlePDG* parttype = db->GetParticle(part->GetPdgCode()); if(part->GetStatusCode() == 11) printf("-->%-7s|",parttype->GetName()); else printf("-->%-8s",parttype->GetName()); g++; } while(matrix->GetBinContent(g,l)==0){ g++; printf(" "); } while(matrix->GetBinContent(g,l)!=0){ TParticle* part = stacks->Particle(Int_t(matrix->GetBinContent(g,l))); Int_t PDG = part->GetPdgCode(); if(PDG<1000000){ TParticlePDG* parttype = db->GetParticle(PDG); partname = parttype->GetName(); } else partname = "unknown"; if(part->GetStatusCode() < 10) printf("-->%-7s|",partname); else printf("-->%-8s",partname); g++; } cout << endl; } }