Rene Brun ??: > Hi, > > Your file eff.root seems to be corrupted. > Could you send teh output of teh following short session > root > TFile f("eff.root") > root > f.ls() > root > f.Map() > > Rene Brun > Dear Mr. Brun, The file eff.root is generated by the attached macro "divide_kmax_event.C". I also attach the macro "ph_psd_generate.C". Are there some incorrect statements within the generationg macro? Thank you for your help. Exaos /////////////////////////////////////////////////////////////////////////// // $Name: $ - $Id: divide_kmax_event.C,v 1.3 2003/07/24 18:48:45 cvs Exp $ // Divide tree "kmax_event" to two tree: monitor & detectors // // Author: Exaos Lee (schlie@iris.ciae.ac.cn) //------------------------------------------------------------------------- // monitor: phm psdm tofm // kmax_event: var9/8. var10/8. var11/4. //------------------------------------------------------------------------- // detectors: ph0 ph1 psd1 ph2 psd2 ph3 psd3 // kmax_event: var0/8. var1/8. var2/8. var3/8. var4/8. var5/8. var6/8. //---- // ph4 psd4 tof01 tof02 tof03 tof04 // var7/8. var8/8. var12/8. var13/8. var14/8. var15/8. //---- // tof0 tof1 tof2 tof3 tof4 // var16/4. var17/4. var18/4. var19/4. var20/4. /////////////////////////////////////////////////////////////////////////// { gROOT->Reset(); TFile *oldfile = new TFile("n2n.root"); TChain *chain = (TChain *)oldfile->Get("kmax_event"); Int_t nentries = (Int_t)chain->GetEntries(); TString str; //////////////////////////////////////////////////////////////////////// // Generate tree for monitor TFile *monfile = new TFile("monitor.root","recreate"); float phm, psdm, tofm; // Set branch addresses chain->SetBranchAddress("var9",&phm); chain->SetBranchAddress("var10",&psdm); chain->SetBranchAddress("var11",&tofm); // Active and deactive branchs chain->SetBranchStatus("*",0); chain->SetBranchStatus("var9",1); chain->SetBranchStatus("var10",1); chain->SetBranchStatus("var11",1); // Get calibration TDirectory *monitor = (TDirectory *)oldfile->Get("monitor"); TH1F *hline_monitor = (TH1F *)monitor->Get("hline_monitor"); TF1 *fline_monitor = (TF1 *)monitor->Get("fline_monitor"); // Clone tree printf("Cloning monitor tree ......\n"); TTree *mon_tree = chain->CloneTree(0); for(Int_t i=0;i<nentries;i++) { chain->GetEntry(i); phm /= 8.; psdm /= 8.; tofm /= 4.; if( phm>fline_monitor->Eval(472./4.)) // Event selection: > 1/4 Cs mon_tree->Fill(); if(!((i+1)%10000)) printf("."); } printf("\n"); // Change branch names and titles mon_tree->GetBranch("var9")->SetName("phm"); mon_tree->GetBranch("phm")->SetTitle("phm"); mon_tree->GetBranch("var10")->SetName("psdm"); mon_tree->GetBranch("psdm")->SetTitle("psdm"); mon_tree->GetBranch("var11")->SetName("tofm"); mon_tree->GetBranch("tofm")->SetTitle("tofm"); // Change tree name and title mon_tree->SetName("mon_tree"); mon_tree->SetTitle("Monitor Tree"); mon_tree->Print(); // Write cuts printf("Generating cuts ...\n"); str = "phm>"; str += fline_monitor->Eval(472./4.); TCut cut1_mon("cut1_mon",str); cut1_mon.Write(); str = "phm>"; str += fline_monitor->Eval(472./3.); TCut cut2_mon("cut1_mon",str); cut2_mon.Write(); // Histograms // -- 1/4 Cs printf("Generating histograms with LLD = 1/4 Cs ...\n"); TH1F *phm_1=new TH1F("phm_1","PH of Monitor",1024, 0., 1024.); TH1F *psdm_1 = new TH1F("psdm_1","PSD of Monitor",1024, 0., 1024.); TH2F *phm_psdm_1 = new TH2F("phm_psdm_1","PH-PSD of Monitor", 512, 0., 1024., 512, 0., 1024.); mon_tree->Project("phm_1","phm",cut1_mon); mon_tree->Project("psdm_1","psdm",cut1_mon && "psdm >0"); mon_tree->Project("phm_psdm_1","phm:psdm", cut1_mon && "psdm>0"); phm_1->Write(); psdm_1->Write(); phm_psdm_1->Write(); // -- 1/3 Cs printf("Generating histograms with LLD = 1/3 Cs ...\n"); TH1F *phm_2=new TH1F("phm_2","PH of Monitor",1024, 0., 1024.); TH1F *psdm_2 = new TH1F("psdm_2","PSD of Monitor",1024, 0., 1024.); TH2F *phm_psdm_2 = new TH2F("phm_psdm_2","PH-PSD of Monitor", 512, 0., 1024., 512, 0., 1024.); mon_tree->Project("phm_2","phm",cut2_mon); mon_tree->Project("psdm_2","psdm",cut2_mon && "psdm >0"); mon_tree->Project("phm_psdm_2","phm:psdm", cut2_mon && "psdm>0"); phm_2->Write(); psdm_2->Write(); phm_psdm_2->Write(); hline_monitor->Write(); fline_monitor->Write(); mon_tree->Write(); monfile->Close(); printf("File monitor.root is closed.\n"); delete monfile; delete hline_monitor; delete fline_monitor; //////////////////////////////////////////////////////////////////// // Generate tree for detectors printf("Recreate file eff.root ...\n"); TFile *detfile = new TFile("eff.root","recreate"); // Define variables Float_t ph0, ph1, ph2, ph3, ph4; Float_t psd1, psd2, psd3, psd4; Float_t tof0, tof1, tof2, tof3, tof4; Float_t tof01,tof02,tof03,tof04; // Activate branchs chain->SetBranchStatus("*",1); chain->SetBranchStatus("var9",0); chain->SetBranchStatus("var10",0); chain->SetBranchStatus("var11",0); // Set branch addresses chain->SetBranchAddress("var0", &ph0); chain->SetBranchAddress("var1", &ph1); chain->SetBranchAddress("var2", &psd1); chain->SetBranchAddress("var3", &ph2); chain->SetBranchAddress("var4", &psd2); chain->SetBranchAddress("var5", &ph3); chain->SetBranchAddress("var6", &psd3); chain->SetBranchAddress("var7", &ph4); chain->SetBranchAddress("var8", &psd4); chain->SetBranchAddress("var12",&tof01); chain->SetBranchAddress("var13",&tof02); chain->SetBranchAddress("var14",&tof03); chain->SetBranchAddress("var15",&tof04); chain->SetBranchAddress("var16",&tof0); chain->SetBranchAddress("var17",&tof1); chain->SetBranchAddress("var18",&tof2); chain->SetBranchAddress("var19",&tof3); chain->SetBranchAddress("var20",&tof4); // Get calibration histograms TH1F *hline_det0 = (TH1F *)oldfile->Get("hline_det0"); TH1F *hline_det1 = (TH1F *)((TDirectory *)oldfile->Get("det1"))->Get("hline_det1"); TH1F *hline_det2 = (TH1F *)((TDirectory *)oldfile->Get("det2"))->Get("hline_det2"); TH1F *hline_det3 = (TH1F *)((TDirectory *)oldfile->Get("det3"))->Get("hline_det3"); TH1F *hline_det4 = (TH1F *)((TDirectory *)oldfile->Get("det4"))->Get("hline_det4"); // Get calibration functions TF1 *fline_det0 = (TF1 *)oldfile->Get("fline_det0"); TF1 *fline_det1 = (TF1 *)((TDirectory *)oldfile->Get("det1"))->Get("fline_det1"); TF1 *fline_det2 = (TF1 *)((TDirectory *)oldfile->Get("det2"))->Get("fline_det2"); TF1 *fline_det3 = (TF1 *)((TDirectory *)oldfile->Get("det3"))->Get("fline_det3"); TF1 *fline_det4 = (TF1 *)((TDirectory *)oldfile->Get("det4"))->Get("fline_det4"); // Clone tree printf("Cloning tree of main detectors ... ... \n"); TTree *det_tree = chain->CloneTree(0); for(Int_t i=0;i<nentries;i++) { chain->GetEntry(i); ph0/= 8.; ph1/=8.; ph2/=8.; ph3/=8.; ph4/=8.; psd1/=8.; psd2/=8.; psd3/=8.; psd4/=8.; tof0/=4.; tof1/=4.; tof2/=4.; tof3/=4.; tof4/=4.; tof01/=8.; tof02/=8.; tof03/=8.; tof04/=8.; if( ph0>fline_det0->Eval(472./4.) || // Select events above 1/4 Cs ph1>fline_det1->Eval(472./4.) || ph2>fline_det2->Eval(472./4.) || ph3>fline_det3->Eval(472./4.) || ph4>fline_det4->Eval(472./4.)) det_tree->Fill(); if(!((i+1)%10000)) printf("."); } printf("\n"); // Change branch names and titles det_tree->GetBranch("var0")->SetName("ph0"); det_tree->GetBranch("var1")->SetName("ph1"); det_tree->GetBranch("var2")->SetName("psd1"); det_tree->GetBranch("var3")->SetName("ph2"); det_tree->GetBranch("var4")->SetName("psd2"); det_tree->GetBranch("var5")->SetName("ph3"); det_tree->GetBranch("var6")->SetName("psd3"); det_tree->GetBranch("var7")->SetName("ph4"); det_tree->GetBranch("var8")->SetName("psd4"); det_tree->GetBranch("var12")->SetName("tof01"); det_tree->GetBranch("var13")->SetName("tof02"); det_tree->GetBranch("var14")->SetName("tof03"); det_tree->GetBranch("var15")->SetName("tof04"); det_tree->GetBranch("var16")->SetName("tof0"); det_tree->GetBranch("var17")->SetName("tof1"); det_tree->GetBranch("var18")->SetName("tof2"); det_tree->GetBranch("var19")->SetName("tof3"); det_tree->GetBranch("var20")->SetName("tof4"); // Change tree name and title det_tree->SetName("det_tree"); det_tree->SetTitle("Tree of Detectors"); det_tree->Print(); det_tree->Write(); // Write calibrations to a new directory printf("Writing calibration information ...\n"); detfile->mkdir("calibrate"); TDirectory *cali=(TDirectory *)detfile->Get("calibrate"); cali->cd(); hline_det0->SetDirectory(cali); hline_det0->Write(); hline_det1->SetDirectory(cali); hline_det1->Write(); hline_det2->SetDirectory(cali); hline_det2->Write(); hline_det3->SetDirectory(cali); hline_det3->Write(); hline_det4->SetDirectory(cali); hline_det4->Write(); fline_det0->Write(); fline_det1->Write(); fline_det2->Write(); fline_det3->Write(); fline_det4->Write(); // Dir: cut printf("Generating cuts ...\n"); detfile->mkdir("cut"); TDirectory *cut=(TDirectory *)detfile->Get("cut"); cut->cd(); // -- 1/4 Cs str = "ph0>" ; str += fline_det0->Eval(472./4); TCut cut1_det0("cut1_det0",str); cut1_det0.Write(); str = "ph1>" ; str += fline_det1->Eval(472./4); TCut cut1_det1("cut1_det1",str); cut1_det1.Write(); str = "ph2>" ; str += fline_det2->Eval(472./4); TCut cut1_det2("cut1_det2",str); cut1_det2.Write(); str = "ph3>" ; str += fline_det3->Eval(472./4); TCut cut1_det3("cut1_det3",str); cut1_det3.Write(); str = "ph4>" ; str += fline_det4->Eval(472./4); TCut cut1_det4("cut1_det4",str); cut1_det4.Write(); TCut cut1_det01 = cut1_det0 && cut1_det1; cut1_det01.SetName("cut1_det01"); cut1_det01.Write(); TCut cut1_det02 = cut1_det0 && cut1_det2; cut1_det02.SetName("cut1_det02"); cut1_det02.Write(); TCut cut1_det03 = cut1_det0 && cut1_det3; cut1_det03.SetName("cut1_det03"); cut1_det03.Write(); TCut cut1_det04 = cut1_det0 && cut1_det4; cut1_det04.SetName("cut1_det04"); cut1_det04.Write(); // -- 1/3 Cs str = "ph0>" ; str += fline_det0->Eval(472./3); TCut cut2_det0("cut2_det0",str); cut2_det0.Write(); str = "ph1>" ; str += fline_det1->Eval(472./3); TCut cut2_det1("cut2_det1",str); cut2_det1.Write(); str = "ph2>" ; str += fline_det2->Eval(472./3); TCut cut2_det2("cut2_det2",str); cut2_det2.Write(); str = "ph3>" ; str += fline_det3->Eval(472./3); TCut cut2_det3("cut2_det3",str); cut2_det3.Write(); str = "ph4>" ; str += fline_det4->Eval(472./3); TCut cut2_det4("cut2_det4",str); cut2_det4.Write(); TCut cut2_det01 = cut2_det0 && cut2_det1; cut1_det01.SetName("cut2_det01"); cut2_det01.Write(); TCut cut2_det02 = cut2_det0 && cut2_det2; cut1_det02.SetName("cut2_det02"); cut2_det02.Write(); TCut cut2_det03 = cut2_det0 && cut2_det3; cut1_det03.SetName("cut2_det03"); cut2_det03.Write(); TCut cut2_det04 = cut2_det0 && cut2_det4; cut1_det04.SetName("cut2_det04"); cut2_det04.Write(); // TOF detfile->mkdir("tofs_1"); detfile->mkdir("tofs_2"); // PH-PSD spectra // -- see macro "ph_psd_generate.C" //detfile->mkdir("ph_psd_1"); // 1/4 Cs //detfile->mkdir("ph_psd_2"); // 1/3 Cs // Close file //detfile->Write(); detfile->Close(); delete detfile; printf("File eff.root is closed.\n"); delete oldfile; } //____________________________________________________________________ // // // { gROOT->Reset(); TFile *detfile = new TFile("eff.root","update"); det_tree = (TNtuple *)detfile->Get("det_tree"); // Get cuts TDirectory *cut=(TDirectory *)detfile->Get("cut"); TCut *cut1_det0 = (TCut *)cut->Get("cut1_det0"); TCut *cut1_det1 = (TCut *)cut->Get("cut1_det1"); TCut *cut1_det2 = (TCut *)cut->Get("cut1_det2"); TCut *cut1_det3 = (TCut *)cut->Get("cut1_det3"); TCut *cut1_det4 = (TCut *)cut->Get("cut1_det4"); TCut *cut2_det0 = (TCut *)cut->Get("cut2_det0"); TCut *cut2_det1 = (TCut *)cut->Get("cut2_det1"); TCut *cut2_det2 = (TCut *)cut->Get("cut2_det2"); TCut *cut2_det3 = (TCut *)cut->Get("cut2_det3"); TCut *cut2_det4 = (TCut *)cut->Get("cut2_det4"); // PH, PSD histograms TH1F *ph0=new TH1F("ph0","PH of Det #0",1024, 0, 1024.); TH1F *ph1=new TH1F("ph1","PH of Det #1",1024, 0, 1024.); TH1F *ph2=new TH1F("ph2","PH of Det #2",1024, 0, 1024.); TH1F *ph3=new TH1F("ph3","PH of Det #3",1024, 0, 1024.); TH1F *ph4=new TH1F("ph4","PH of Det #4",1024, 0, 1024.); TH1F *psd1=new TH1F("psd1","PSD of Det #1",1024, 0., 1024.); TH1F *psd2=new TH1F("psd2","PSD of Det #2",1024, 0., 1024.); TH1F *psd3=new TH1F("psd3","PSD of Det #3",1024, 0., 1024.); TH1F *psd4=new TH1F("psd4","PSD of Det #4",1024, 0., 1024.); TH2F *ph1_psd1=new TH2F("ph1_psd1","PH-PSD of Det #1",512,0.,1024.,512,0.,1024.); TH2F *ph2_psd2=new TH2F("ph2_psd2","PH-PSD of Det #2",512,0.,1024.,512,0.,1024.); TH2F *ph3_psd3=new TH2F("ph3_psd3","PH-PSD of Det #3",512,0.,1024.,512,0.,1024.); TH2F *ph4_psd4=new TH2F("ph4_psd4","PH-PSD of Det #4",512,0.,1024.,512,0.,1024.); // -- 1/4 Cs printf("Generating ph & psd histograms with LLD = 1/4 Cs ... ...\n"); detfile->mkdir("ph_psd1"); TDirectory *ph_psd1=(TDirectory *)detfile->Get("ph_psd1"); ph_psd1->cd(); det_tree->Project("ph0","ph0",(*cut1_det0)); det_tree->Project("ph1","ph1",(*cut1_det1)); det_tree->Project("ph2","ph2",(*cut1_det2)); det_tree->Project("ph3","ph3",(*cut1_det3)); det_tree->Project("ph4","ph4",(*cut1_det4)); ph0->SetDirectory(ph_psd1); ph0->Write(); ph1->SetDirectory(ph_psd1); ph1->Write(); ph2->SetDirectory(ph_psd1); ph2->Write(); ph3->SetDirectory(ph_psd1); ph3->Write(); ph4->SetDirectory(ph_psd1); ph4->Write(); det_tree->Project("psd1","psd1", (*cut1_det1) && "psd1>0."); det_tree->Project("psd2","psd2", (*cut1_det2) && "psd2>0."); det_tree->Project("psd3","psd3", (*cut1_det3) && "psd3>0."); det_tree->Project("psd4","psd4", (*cut1_det4) && "psd4>0."); psd1->SetDirectory(ph_psd1); psd1->Write(); psd2->SetDirectory(ph_psd1); psd2->Write(); psd3->SetDirectory(ph_psd1); psd3->Write(); psd4->SetDirectory(ph_psd1); psd4->Write(); det_tree->Project("ph1_psd1","ph1:psd1",(*cut1_det1) && "psd1>0."); det_tree->Project("ph2_psd2","ph2:psd2",(*cut1_det2) && "psd2>0."); det_tree->Project("ph3_psd3","ph3:psd3",(*cut1_det3) && "psd3>0."); det_tree->Project("ph4_psd4","ph4:psd4",(*cut1_det4) && "psd4>0."); ph1_psd1->SetDirectory(ph_psd1); ph1_psd1->Write(); ph2_psd2->SetDirectory(ph_psd1); ph2_psd2->Write(); ph3_psd3->SetDirectory(ph_psd1); ph3_psd3->Write(); ph4_psd4->SetDirectory(ph_psd1); ph4_psd4->Write(); // -- 1/3 Cs printf("Generating ph & psd histograms with LLD = 1/3 Cs ... ...\n"); detfile->mkdir("ph_psd2"); TDirectory *ph_psd2=(TDirectory *)detfile->Get("ph_psd2"); ph_psd2->cd(); det_tree->Project("ph0","ph0", (*cut2_det0)); det_tree->Project("ph1","ph1", (*cut2_det1)); det_tree->Project("ph2","ph2", (*cut2_det2)); det_tree->Project("ph3","ph3", (*cut2_det3)); det_tree->Project("ph4","ph4", (*cut2_det4)); ph0->SetDirectory(ph_psd2); ph0->Write(); ph1->SetDirectory(ph_psd2); ph1->Write(); ph2->SetDirectory(ph_psd2); ph2->Write(); ph3->SetDirectory(ph_psd2); ph3->Write(); ph4->SetDirectory(ph_psd2); ph4->Write(); det_tree->Project("psd1","psd1",(*cut2_det1) && "psd1>0."); det_tree->Project("psd2","psd2",(*cut2_det2) && "psd2>0."); det_tree->Project("psd3","psd3",(*cut2_det3) && "psd3>0."); det_tree->Project("psd4","psd4",(*cut2_det4) && "psd4>0."); psd1->SetDirectory(ph_psd2); psd1->Write(); psd2->SetDirectory(ph_psd2); psd2->Write(); psd3->SetDirectory(ph_psd2); psd3->Write(); psd4->SetDirectory(ph_psd2); psd4->Write(); det_tree->Project("ph1_psd1","ph1:psd1",(*cut2_det1) && "psd1>0."); det_tree->Project("ph2_psd2","ph2:psd2",(*cut2_det2) && "psd2>0."); det_tree->Project("ph3_psd3","ph3:psd3",(*cut2_det3) && "psd3>0."); det_tree->Project("ph4_psd4","ph4:psd4",(*cut2_det4) && "psd4>0."); ph1_psd1->SetDirectory(ph_psd2); ph1_psd1->Write(); ph2_psd2->SetDirectory(ph_psd2); ph2_psd2->Write(); ph3_psd3->SetDirectory(ph_psd2); ph3_psd3->Write(); ph4_psd4->SetDirectory(ph_psd2); ph4_psd4->Write(); }
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:14 MET