Hi,
A toy example using hepevt is following. You can also have a look
at TGenerator::ImportParticles to see how to convert a hepevt structure
into a TClonesArray of TParticle objects.
Rene Brun
typedef struct {
Int_t nevhep;
Int_t nhep;
Int_t isthep[2000];
Int_t idhep[2000];
Int_t jmohep[2000][2];
Int_t jdahep[2000][2];
Double_t phep[2000][5];
Double_t vhep[2000][4];
} HEPEVT;
void hepevt()
{
HEPEVT event;
TFile f("hepevt.root","recreate");
TTree *T = new TTree("T","hepevt ntuple");
T->Branch("nhep", &event.nhep, "nhep/I");
T->Branch("isthep",&event.isthep,"isthep[nhep]/I");
T->Branch("idhep", &event.idhep, "idhep[nhep]/I");
T->Branch("jmohep",&event.jmohep,"jmohep[nhep][2]/I");
T->Branch("jdahep",&event.jdahep,"jdahep[nhep][2]/I");
T->Branch("phep", &event.phep, "phep[nhep][5]/I");
T->Branch("vhep", &event.vhep, "vhep[nhep][4]/I");
TRandom r;
Double_t px,py,pz,p,E;
Int_t id, nevent = 100;
for (Int_t i=0;i<nevent;i++) {
event.nhep = gRandom->Rndm()*499;
for (Int_t n=0;n<event.nhep;n++) {
event.isthep[n] = (Int_t)(r.Rndm()*2);
event.idhep[n] = id = (Int_t)(r.Rndm()*100);
event.jmohep[n][0] = 1;
event.jmohep[n][1] = 2;
event.jdahep[n][0] = 0;
event.jdahep[n][1] = 0;
event.phep[n][0] = px = r.Gaus(0,1);
event.phep[n][1] = py = r.Gaus(0,1);
event.phep[n][2] = pz = r.Gaus(0,10);
event.phep[n][3] = p = TMath::Sqrt(px*px+py*py+pz*pz);
event.vhep[n][4] = E = TMath::Sqrt(p*p+id);
event.vhep[n][0] = r.Gaus(0,1e-3);
event.vhep[n][1] = r.Gaus(0,1e-3);
event.vhep[n][2] = r.Gaus(0,10);
event.vhep[n][3] = r.Gaus(0,1e-9);
}
T->Fill();
}
T->Print();
T->Write();
f.Close();
}
On Tue, 2 Jan 2001, Muge Karagoz wrote:
> Hello all,
>
> I have a file in hepevt format.I would like to convert the contents of
> this file to a root ntuple.
> Is there an example/already existing program to do it? Could anyone please
> give me a suggestion?
>
> Thank you very much,
>
>
>
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:33 MET