void lv_mass() { TCanvas *c1=new TCanvas(); TCanvas *c2=new TCanvas(); c1->Divide(2,2); c2->Divide(2,2); TH1F *histm=new TH1F("histm","mass",1000,100,2000); TH1F *histpx=new TH1F("histpx","px",100,0,12); TH1F *histpy=new TH1F("histpy","py",100,0,12); TH1F *histpz=new TH1F("histpz","pz",100,0,12); TH1F *histpt = new TH1F("histpt","pt",500,0,20); TRandom2 *random= new TRandom2(1); double_t px, py, pz,p,trans, e,m,energy; for (int i=1; i<=10000; i++){ TF1 *f1 = new TF1("f1","[0]*TMath::Power(([1]/[2]),(x/[2]))*(TMath::Exp(-([1]/[2])))/TMath::Gamma((x/[2])+1)",.02,12);// use this for user defined random poisson value f1->SetParameters(1,1,1); m = gRandom->Uniform(0,2000); // m=random->Gaus(1000,40); px = f1->GetRandom(); py = f1->GetRandom(); pz = f1->GetRandom(); p = sqrt(px*px+py*py+pz*pz); trans = sqrt(px*px+py*py); e = gRandom->Uniform(0,2000); energy=sqrt(px*px+py*py+pz*pz+m*m); histm->Fill(m); histpx->Fill(px); histpy->Fill(py); histpz->Fill(pz); histpt->Fill(trans); } TLorentzVector v; v.SetPxPyPzE(px,py,pz,energy); cout<<"X-component of momentum using lorentz vector= "<cd(1); histm->Draw(); c2->cd(1); histpx->Draw(); c2->cd(2); histpy->Draw(); c2->cd(3); histpz->Draw(); c2->cd(4); histpt->Draw(); }