int ana_raw(){ ////////////////////////////////////////////////////////// // This file has been automatically generated // (Fri Mar 16 10:21:40 2018 by ROOT version5.34/10) // from TTree save/save // found on file: raw_run_028695.root ////////////////////////////////////////////////////////// //Reset ROOT and connect tree file gROOT->Reset(); TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject("raw_run_028695.root"); if (!f) { f = new TFile("raw_run_028695.root"); } // f->GetObject("save",tree); TTree * save = (TTree *) gDirectory->Get("save"); //Declaration of leaves types UInt_t fUniqueID; UInt_t fBits; Int_t fRunID; Int_t fEventID; Int_t fSpillID; Int_t fTriggerBits; Short_t fTargetPos; Int_t fTurnID; Int_t fRFID; Int_t fIntensity[33]; Short_t fTriggerEmu; Short_t fNRoads[4]; Int_t fNHits[63]; UInt_t fAllHits_fUniqueID[5970]; UInt_t fAllHits_fBits[5970]; Int_t fAllHits_index[5970]; Short_t fAllHits_detectorID[5970]; Short_t fAllHits_elementID[5970]; Float_t fAllHits_tdcTime[5970]; Float_t fAllHits_driftDistance[5970]; Float_t fAllHits_pos[5970]; UShort_t fAllHits_flag[5970]; UInt_t fTriggerHits_fUniqueID[0]; UInt_t fTriggerHits_fBits[0]; Int_t fTriggerHits_index[0]; Short_t fTriggerHits_detectorID[0]; Short_t fTriggerHits_elementID[0]; Float_t fTriggerHits_tdcTime[0]; Float_t fTriggerHits_driftDistance[0]; Float_t fTriggerHits_pos[0]; UShort_t fTriggerHits_flag[0]; // Set branch addresses. // save->SetBranchAddress("rawEvent",&rawEvent); save->SetBranchAddress("fUniqueID",&fUniqueID); save->SetBranchAddress("fBits",&fBits); save->SetBranchAddress("fRunID",&fRunID); save->SetBranchAddress("fEventID",&fEventID); save->SetBranchAddress("fSpillID",&fSpillID); save->SetBranchAddress("fTriggerBits",&fTriggerBits); save->SetBranchAddress("fTargetPos",&fTargetPos); save->SetBranchAddress("fTurnID",&fTurnID); save->SetBranchAddress("fRFID",&fRFID); save->SetBranchAddress("fIntensity[33]",fIntensity); save->SetBranchAddress("fTriggerEmu",&fTriggerEmu); save->SetBranchAddress("fNRoads[4]",fNRoads); save->SetBranchAddress("fNHits[63]",fNHits); save->SetBranchAddress("fAllHits",&fAllHits_); save->SetBranchAddress("fAllHits.fUniqueID",fAllHits_fUniqueID); save->SetBranchAddress("fAllHits.fBits",fAllHits_fBits); save->SetBranchAddress("fAllHits.index",fAllHits_index); save->SetBranchAddress("fAllHits.detectorID",fAllHits_detectorID); save->SetBranchAddress("fAllHits.elementID",fAllHits_elementID); save->SetBranchAddress("fAllHits.tdcTime",fAllHits_tdcTime); save->SetBranchAddress("fAllHits.driftDistance",fAllHits_driftDistance); save->SetBranchAddress("fAllHits.pos",fAllHits_pos); save->SetBranchAddress("fAllHits.flag",fAllHits_flag); save->SetBranchAddress("fTriggerHits",&fTriggerHits_); save->SetBranchAddress("fTriggerHits.fUniqueID",&fTriggerHits_fUniqueID); save->SetBranchAddress("fTriggerHits.fBits",&fTriggerHits_fBits); save->SetBranchAddress("fTriggerHits.index",&fTriggerHits_index); save->SetBranchAddress("fTriggerHits.detectorID",&fTriggerHits_detectorID); save->SetBranchAddress("fTriggerHits.elementID",&fTriggerHits_elementID); save->SetBranchAddress("fTriggerHits.tdcTime",&fTriggerHits_tdcTime); save->SetBranchAddress("fTriggerHits.driftDistance",&fTriggerHits_driftDistance); save->SetBranchAddress("fTriggerHits.pos",&fTriggerHits_pos); save->SetBranchAddress("fTriggerHits.flag",&fTriggerHits_flag); //-- define histograms --- TCanvas * c1 = new TCanvas("c1","raw data: elementID", 10, 20, 800, 800); TCanvas * c2 = new TCanvas("c2","raw data: tdcTime", 100, 200, 800, 800); // -- channel hits TH1F * st1q1 = new TH1f("st1q1","DP St1Q1", 100, 0,100); TH1F * st1q2 = new TH1f("st1q2","DP St1Q2", 100, 0,100); TH1F * st1q3 = new TH1f("st1q2","DP St1Q3", 100, 0,100); TH1F * st1q4 = new TH1f("st1q2","DP St1Q4", 100, 0,100); TH1F * st2q1 = new TH1f("st2q1","DP St2Q1", 100, 0,100); TH1F * st2q2 = new TH1f("st2q2","DP St2Q2", 100, 0,100); TH1F * st2q3 = new TH1f("st2q3","DP St2Q3", 100, 0,100); TH1F * st2q4 = new TH1f("st2q4","DP St2Q4", 100, 0,100); // -- channel TDC TH1F * st2q1tdc = new TH1f("st2q1tdc","DP St2Q1 TDC", 400, 1500,1900); TH1F * st2q1tdc = new TH1f("st2q1tdc","DP St2Q1 TDC", 400, 1500,1900); TH1F * st2q1tdc = new TH1f("st2q1tdc","DP St2Q1 TDC", 400, 1500,1900); TH1F * st2q1tdc = new TH1f("st2q1tdc","DP St2Q1 TDC", 400, 1500,1900); // This is the loop skeleton // To read only selected branches, Insert statements like: // save->SetBranchStatus("*",0); // disable all branches // TTreePlayer->SetBranchStatus("branchname",1); // activate branchname Long64_t nentries = save->GetEntries(); cout << "nentries =" << nentries << endl; Long64_t nbytes = 0; // for (Long64_t i=0; iGetEntry(i); //fill histograms if ( (flag-2) < -0.5 ) return; // flag= 2 intime, 0 out of time; //elementID if ( fabs(detectorID-55) < 0.5 ) { st1q1->Fill(elementID); } elseif ( fabs(detectorID-56) < 0.5 ) { st1q2->Fill(elementID); } elseif ( fabs(detectorID-57) < 0.5 ) { st1q3->Fill(elementID); } elseif ( fabs(detectorID-58) < 0.5 ) { st1q4->Fill(elementID); } else { cout << "detectorID is out of range for DP trigger!" << endl; } //tdcTime if ( fabs(detectorID-55) < 0.5 ) { st1q1tdc->Fill(tdcTime); } elseif ( fabs(detectorID-56) < 0.5 ) { st1q2tdc->Fill(tdcTime); } elseif ( fabs(detectorID-57) < 0.5 ) { st1q3tdc->Fill(tdcTime); } elseif ( fabs(detectorID-58) < 0.5 ) { st1q4tdc->Fill(tdcTime); } else { cout << "tdcTime is out of range for DP trigger!" << endl; } } // event loop //-- make plots --- //-- channel hits c1->cd(); c1->Divide(2,4); c1->cd(1); st1q1->Draw(); c1->cd(2); st1q2->Draw(); c1->cd(3); st1q3->Draw(); c1->cd(4); st1q4->Draw(); //--- TDC --- c2->cd(); c2->Divide(2,4); c2->cd(1); st1q1tdc->Draw(); c2->cd(2); st1q2tdc->Draw(); c2->cd(3); st1q3tdc->Draw(); c2->cd(4); st1q4tdc->Draw(); return nentries; }