void pisa_to_ntuple() { ////////////////////////////////////////////////////////// // This file has been automatically generated // (Fri Apr 8 17:55:21 2005 by ROOT version4.01/02) // from TTree AncSvx/SVX Ancestors // found on file: ancsvx_057.root // do: // root -l ancsvx_057.root // .ls shows an Ntuple: AncSvx;1 // AncSvx->MakeCode("macroname.C"); // ////////////////////////////////////////////////////////// //Reset ROOT and connect tree file gROOT->Reset(); // This is for a single file: // TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject("ancsvx_softlink.root"); // if (!f) { // cout<<" using ancsvx_softlink.root "<Get("AncSvx"); // This is for a chain of files: TChain chain("AncSvx"); //cout <<"adding ancsvx_40.root"<SetBranchAddress("TRACK",&TRACK); AncSvx->SetBranchAddress("NFILE",&NFILE); AncSvx->SetBranchAddress("PTOT",&PTOT); AncSvx->SetBranchAddress("PTHETA",&PTHETA); AncSvx->SetBranchAddress("PPHI",&PPHI); AncSvx->SetBranchAddress("R_VERTEX",&R_VERTEX); AncSvx->SetBranchAddress("Z_VERTEX",&Z_VERTEX); AncSvx->SetBranchAddress("THET_VER",&THET_VER); AncSvx->SetBranchAddress("PHI_VER",&PHI_VER); AncSvx->SetBranchAddress("ITPARENT",&ITPARENT); AncSvx->SetBranchAddress("IDPARENT",&IDPARENT); AncSvx->SetBranchAddress("IDPART",&IDPART); AncSvx->SetBranchAddress("ITORIGIN",&ITORIGIN); AncSvx->SetBranchAddress("IDORIGIN",&IDORIGIN); AncSvx->SetBranchAddress("IHIT",&IHIT); AncSvx->SetBranchAddress("LAYER",&LAYER); AncSvx->SetBranchAddress("THETA",&THETA); AncSvx->SetBranchAddress("PHI",&PHI); AncSvx->SetBranchAddress("XGLOBAL",&XGLOBAL); AncSvx->SetBranchAddress("YGLOBAL",&YGLOBAL); AncSvx->SetBranchAddress("ZGLOBAL",&ZGLOBAL); AncSvx->SetBranchAddress("PMOMX",&PMOMX); AncSvx->SetBranchAddress("PMOMY",&PMOMY); AncSvx->SetBranchAddress("PMOMZ",&PMOMZ); AncSvx->SetBranchAddress("IPC123",&IPC123); AncSvx->SetBranchAddress("PC1THETA",&PC1THETA); AncSvx->SetBranchAddress("PC1PHI",&PC1PHI); AncSvx->SetBranchAddress("PC1RDIST",&PC1RDIST); AncSvx->SetBranchAddress("PC1ZDIST",&PC1ZDIST); AncSvx->SetBranchAddress("PC2THETA",&PC2THETA); AncSvx->SetBranchAddress("PC2PHI",&PC2PHI); AncSvx->SetBranchAddress("PC2RDIST",&PC2RDIST); AncSvx->SetBranchAddress("PC2ZDIST",&PC2ZDIST); AncSvx->SetBranchAddress("PC3THETA",&PC3THETA); AncSvx->SetBranchAddress("PC3PHI",&PC3PHI); AncSvx->SetBranchAddress("PC3RDIST",&PC3RDIST); AncSvx->SetBranchAddress("PC3ZDIST",&PC3ZDIST); AncSvx->SetBranchAddress("DELE",&DELE); AncSvx->SetBranchAddress("XLOCIN",&XLOCIN); AncSvx->SetBranchAddress("YLOCIN",&YLOCIN); AncSvx->SetBranchAddress("ZLOCIN",&ZLOCIN); AncSvx->SetBranchAddress("XLOCOUT",&XLOCOUT); AncSvx->SetBranchAddress("YLOCOUT",&YLOCOUT); AncSvx->SetBranchAddress("ZLOCOUT",&ZLOCOUT); AncSvx->SetBranchAddress("HITVOL0",&HITVOL0); AncSvx->SetBranchAddress("HITVOL1",&HITVOL1); AncSvx->SetBranchAddress("HITVOL2",&HITVOL2); AncSvx->SetBranchAddress("HITVOL3",&HITVOL3); AncSvx->SetBranchAddress("HITVOL4",&HITVOL4); AncSvx->SetBranchAddress("HITVOL5",&HITVOL5); AncSvx->SetBranchAddress("NHIT",&NHIT); AncSvx->SetBranchAddress("X0_EVENT",&X0_EVENT); AncSvx->SetBranchAddress("Y0_EVENT",&Y0_EVENT); AncSvx->SetBranchAddress("Z0_EVENT",&Z0_EVENT); AncSvx->SetBranchAddress("B_IMPACT",&B_IMPACT); AncSvx->SetBranchAddress("EVENT",&EVENT); TNtuple *p2n; p2n = new TNtuple("p2n","pisa ntuple","event:track:idpart:ptot:x0ev:y0ev:z0ev:x1:y1:z1:x2:y2:z2:x3:y3:z3:x4:y4:z4:x5:y5:z5:x6:y6:z6:x7:y7:z7:x8:y8:z8:x9:y9:z9:x10:y10:z10:x11:y11:z11:x12:y12:z12"); TH1F *t1 = new TH1F("t1","layer ", 20, 0.0, 20); // This is the loop skeleton // To read only selected branches, Insert statements like: // AncSvx->SetBranchStatus("*",0); // disable all branches // TTreePlayer->SetBranchStatus("branchname",1); // activate branchname Long64_t nentries = AncSvx->GetEntries(); Float_t oldevent =0; //Int_t oldevent = -1; Int_t mult0 = 0; Int_t mult1 = 0; Int_t oldtrack = 0; Float_t delz = 0; Int_t nbytes = 0; Float_t phi = 0.0; Float_t phi2 = 0.0; Float_t r = 0.0; Float_t eta, x2, y2, sign; Float_t pi= TMath::Pi(); Float_t degtorad = pi/180.; Float_t r_global, s_global, the_global, phi_global, del_the, del_phi; Float_t z_global, dr_the, dr_phi, resid; float arr[43]; for (int j=0; j<43; j++){arr[j] = 0.0; } for (Long64_t i=0; iGetEntry(i); // pull in the record //cout<<"1) event, track, layer, z = "<Fill(arr); for (int j=0; j<43; j++){arr[j] = 0.0; } } mult0 = 1; // reset multiplicity counter } else { // we're in the same event //cout<<"2) event, track, layer, z = "<Fill(LAYER); if (LAYER>=1 && LAYER<=12) { arr[3+int(LAYER)*3+1] = XGLOBAL; arr[3+int(LAYER)*3+2] = YGLOBAL; arr[3+int(LAYER)*3+3] = ZGLOBAL; } } // same event } // loop over records cout<<"End of file seen: "<Write(); //tfile->Close(); // -------------------------------------- now analyse p2n ------------------------- Long64_t nentries = p2n->GetEntries(); //nentries = 10; cout<<"netries in ntuple p2n = "<SetBranchAddress("ptot",&ptot); p2n->SetBranchAddress("event",&event); p2n->SetBranchAddress("track",&track); p2n->SetBranchAddress("idpart",&idpart); p2n->SetBranchAddress("ptot",&ptot); p2n->SetBranchAddress("x0ev",&x0ev); p2n->SetBranchAddress("y0ev",&y0ev); p2n->SetBranchAddress("z0ev",&z0ev); p2n->SetBranchAddress("x1",&x1); p2n->SetBranchAddress("y1",&y1); p2n->SetBranchAddress("z1",&z1); p2n->SetBranchAddress("x2",&x2); p2n->SetBranchAddress("y2",&y2); p2n->SetBranchAddress("z2",&z2); p2n->SetBranchAddress("x3",&x3); p2n->SetBranchAddress("y3",&y3); p2n->SetBranchAddress("z3",&z3); p2n->SetBranchAddress("x4",&x4); p2n->SetBranchAddress("y4",&y4); p2n->SetBranchAddress("z4",&z4); p2n->SetBranchAddress("x5",&x5); p2n->SetBranchAddress("y5",&y5); p2n->SetBranchAddress("z5",&z5); p2n->SetBranchAddress("x6",&x6); p2n->SetBranchAddress("y6",&y6); p2n->SetBranchAddress("z6",&z6); p2n->SetBranchAddress("x7",&x7); p2n->SetBranchAddress("y7",&y7); p2n->SetBranchAddress("z7",&z7); p2n->SetBranchAddress("x8",&x8); p2n->SetBranchAddress("y8",&y8); p2n->SetBranchAddress("z8",&z8); p2n->SetBranchAddress("x9",&x9); p2n->SetBranchAddress("y9",&y9); p2n->SetBranchAddress("z9",&z9); p2n->SetBranchAddress("x10",&x10); p2n->SetBranchAddress("y10",&y10); p2n->SetBranchAddress("z10",&z10); p2n->SetBranchAddress("x11",&x11); p2n->SetBranchAddress("y11",&y11); p2n->SetBranchAddress("z11",&z11); p2n->SetBranchAddress("x12",&x12); p2n->SetBranchAddress("y12",&y12); p2n->SetBranchAddress("z12",&z12); for (Long64_t i=0; iGetEntry(i); // pull in the record } } // end of macro