// This code trims down fullsize fastbus ntuples to // contain only GMS events. The reduction is usually // by about a factor of 100 or so. // // Usage: // Place this macro into the directory containing // the root files to be whittled down and // open root. From the command line type // // .x TrimRootFiles.C("nnnnn") // // where nnnnn is the 5 digit run number you wish // to convert. The resulting file will be created // and named GMS.nnnnn.root // // ***Important // This code, as with all the code I write, was // linked against the root 4.04-02 libraries and // will NOT work with the default jlab root // libraries. Before using this code, invoking root // or anything else, type // // ifarml2> use root/4.04-02 // // so that you'll use these libraries. int TrimRootFiles(char* RunNumber){ gROOT->Reset(); class FASTBUS_MISC{ Int_t QRTmicro; Int_t micropulse; Int_t macropulse; Short_t helicity; Short_t gms_mask; Short_t evt_type; } ; class GMS_REF{ UInt_t ref; UInt_t test1; UInt_t test2; } ; const Int_t nRings = 15; UInt_t adc_bl[nRings]; UInt_t adc_br[nRings]; UInt_t adc_fl[nRings]; UInt_t adc_fr[nRings]; UInt_t tdc_bl[nRings]; UInt_t tdc_br[nRings]; UInt_t tdc_fl[nRings]; UInt_t tdc_fr[nRings]; UInt_t mt_b[nRings]; UInt_t mt_f[nRings]; FASTBUS_MISC misc; GMS_REF gmsref; Float_t q_targ; string MyTree,OldName,NewName; string NewFileName,OldFileName; OldFileName = "G0Fastbus."; OldFileName += RunNumber; OldFileName += ".root"; NewFileName = "GMS."; NewFileName += RunNumber; NewFileName += ".root"; TFile *oldfile = new TFile(OldFileName.c_str()); TFile *newfile = new TFile(NewFileName.c_str(),"recreate"); for(Int_t OctantLoop = 1;OctantLoop<9;OctantLoop++){ // This part is ugly b/c it's a work-around. // Root wouldn't let me convert the Int_t to a char. if(1==OctantLoop){ MyTree="fastbus_nt_01"; } else if(2==OctantLoop) { MyTree="fastbus_nt_02"; } else if(3==OctantLoop){ MyTree="fastbus_nt_03"; } else if(4==OctantLoop){ MyTree="fastbus_nt_04"; } else if(5==OctantLoop){ MyTree="fastbus_nt_05"; } else if(6==OctantLoop){ MyTree="fastbus_nt_06"; } else if(7==OctantLoop){ MyTree="fastbus_nt_07"; } else if(8==OctantLoop){ MyTree="fastbus_nt_08"; } // cout <Get(MyTree.c_str()); oldtree->SetBranchAddress("misc",&misc); oldtree->SetBranchAddress("gmsref",&gmsref); oldtree->SetBranchAddress("01bla", &(adc_bl[0])); oldtree->SetBranchAddress("02bla", &(adc_bl[1])); oldtree->SetBranchAddress("03bla", &(adc_bl[2])); oldtree->SetBranchAddress("04bla", &(adc_bl[3])); oldtree->SetBranchAddress("05bla", &(adc_bl[4])); oldtree->SetBranchAddress("06bla", &(adc_bl[5])); oldtree->SetBranchAddress("07bla", &(adc_bl[6])); oldtree->SetBranchAddress("08bla", &(adc_bl[7])); oldtree->SetBranchAddress("09bla", &(adc_bl[8])); oldtree->SetBranchAddress("10bla", &(adc_bl[9])); oldtree->SetBranchAddress("11bla", &(adc_bl[10])); oldtree->SetBranchAddress("12bla", &(adc_bl[11])); oldtree->SetBranchAddress("13bla", &(adc_bl[12])); oldtree->SetBranchAddress("14bla", &(adc_bl[13])); oldtree->SetBranchAddress("15bla", &(adc_bl[14])); oldtree->SetBranchAddress("01bra", &(adc_br[0])); oldtree->SetBranchAddress("02bra", &(adc_br[1])); oldtree->SetBranchAddress("03bra", &(adc_br[2])); oldtree->SetBranchAddress("04bra", &(adc_br[3])); oldtree->SetBranchAddress("05bra", &(adc_br[4])); oldtree->SetBranchAddress("06bra", &(adc_br[5])); oldtree->SetBranchAddress("07bra", &(adc_br[6])); oldtree->SetBranchAddress("08bra", &(adc_br[7])); oldtree->SetBranchAddress("09bra", &(adc_br[8])); oldtree->SetBranchAddress("10bra", &(adc_br[9])); oldtree->SetBranchAddress("11bra", &(adc_br[10])); oldtree->SetBranchAddress("12bra", &(adc_br[11])); oldtree->SetBranchAddress("13bra", &(adc_br[12])); oldtree->SetBranchAddress("14bra", &(adc_br[13])); oldtree->SetBranchAddress("15bra", &(adc_br[14])); oldtree->SetBranchAddress("01fla", &(adc_fl[0])); oldtree->SetBranchAddress("02fla", &(adc_fl[1])); oldtree->SetBranchAddress("03fla", &(adc_fl[2])); oldtree->SetBranchAddress("04fla", &(adc_fl[3])); oldtree->SetBranchAddress("05fla", &(adc_fl[4])); oldtree->SetBranchAddress("06fla", &(adc_fl[5])); oldtree->SetBranchAddress("07fla", &(adc_fl[6])); oldtree->SetBranchAddress("08fla", &(adc_fl[7])); oldtree->SetBranchAddress("09fla", &(adc_fl[8])); oldtree->SetBranchAddress("10fla", &(adc_fl[9])); oldtree->SetBranchAddress("11fla", &(adc_fl[10])); oldtree->SetBranchAddress("12fla", &(adc_fl[11])); oldtree->SetBranchAddress("13fla", &(adc_fl[12])); oldtree->SetBranchAddress("14fla", &(adc_fl[13])); oldtree->SetBranchAddress("15fla", &(adc_fl[14])); oldtree->SetBranchAddress("01fra", &(adc_fr[0])); oldtree->SetBranchAddress("02fra", &(adc_fr[1])); oldtree->SetBranchAddress("03fra", &(adc_fr[2])); oldtree->SetBranchAddress("04fra", &(adc_fr[3])); oldtree->SetBranchAddress("05fra", &(adc_fr[4])); oldtree->SetBranchAddress("06fra", &(adc_fr[5])); oldtree->SetBranchAddress("07fra", &(adc_fr[6])); oldtree->SetBranchAddress("08fra", &(adc_fr[7])); oldtree->SetBranchAddress("09fra", &(adc_fr[8])); oldtree->SetBranchAddress("10fra", &(adc_fr[9])); oldtree->SetBranchAddress("11fra", &(adc_fr[10])); oldtree->SetBranchAddress("12fra", &(adc_fr[11])); oldtree->SetBranchAddress("13fra", &(adc_fr[12])); oldtree->SetBranchAddress("14fra", &(adc_fr[13])); oldtree->SetBranchAddress("15fra", &(adc_fr[14])); oldtree->SetBranchAddress("01blt", &(tdc_bl[0])); oldtree->SetBranchAddress("02blt", &(tdc_bl[1])); oldtree->SetBranchAddress("03blt", &(tdc_bl[2])); oldtree->SetBranchAddress("04blt", &(tdc_bl[3])); oldtree->SetBranchAddress("05blt", &(tdc_bl[4])); oldtree->SetBranchAddress("06blt", &(tdc_bl[5])); oldtree->SetBranchAddress("07blt", &(tdc_bl[6])); oldtree->SetBranchAddress("08blt", &(tdc_bl[7])); oldtree->SetBranchAddress("09blt", &(tdc_bl[8])); oldtree->SetBranchAddress("10blt", &(tdc_bl[9])); oldtree->SetBranchAddress("11blt", &(tdc_bl[10])); oldtree->SetBranchAddress("12blt", &(tdc_bl[11])); oldtree->SetBranchAddress("13blt", &(tdc_bl[12])); oldtree->SetBranchAddress("14blt", &(tdc_bl[13])); oldtree->SetBranchAddress("15blt", &(tdc_bl[14])); oldtree->SetBranchAddress("01brt", &(tdc_br[0])); oldtree->SetBranchAddress("02brt", &(tdc_br[1])); oldtree->SetBranchAddress("03brt", &(tdc_br[2])); oldtree->SetBranchAddress("04brt", &(tdc_br[3])); oldtree->SetBranchAddress("05brt", &(tdc_br[4])); oldtree->SetBranchAddress("06brt", &(tdc_br[5])); oldtree->SetBranchAddress("07brt", &(tdc_br[6])); oldtree->SetBranchAddress("08brt", &(tdc_br[7])); oldtree->SetBranchAddress("09brt", &(tdc_br[8])); oldtree->SetBranchAddress("10brt", &(tdc_br[9])); oldtree->SetBranchAddress("11brt", &(tdc_br[10])); oldtree->SetBranchAddress("12brt", &(tdc_br[11])); oldtree->SetBranchAddress("13brt", &(tdc_br[12])); oldtree->SetBranchAddress("14brt", &(tdc_br[13])); oldtree->SetBranchAddress("15brt", &(tdc_br[14])); oldtree->SetBranchAddress("01flt", &(tdc_fl[0])); oldtree->SetBranchAddress("02flt", &(tdc_fl[1])); oldtree->SetBranchAddress("03flt", &(tdc_fl[2])); oldtree->SetBranchAddress("04flt", &(tdc_fl[3])); oldtree->SetBranchAddress("05flt", &(tdc_fl[4])); oldtree->SetBranchAddress("06flt", &(tdc_fl[5])); oldtree->SetBranchAddress("07flt", &(tdc_fl[6])); oldtree->SetBranchAddress("08flt", &(tdc_fl[7])); oldtree->SetBranchAddress("09flt", &(tdc_fl[8])); oldtree->SetBranchAddress("10flt", &(tdc_fl[9])); oldtree->SetBranchAddress("11flt", &(tdc_fl[10])); oldtree->SetBranchAddress("12flt", &(tdc_fl[11])); oldtree->SetBranchAddress("13flt", &(tdc_fl[12])); oldtree->SetBranchAddress("14flt", &(tdc_fl[13])); oldtree->SetBranchAddress("15flt", &(tdc_fl[14])); oldtree->SetBranchAddress("01frt", &(tdc_fr[0])); oldtree->SetBranchAddress("02frt", &(tdc_fr[1])); oldtree->SetBranchAddress("03frt", &(tdc_fr[2])); oldtree->SetBranchAddress("04frt", &(tdc_fr[3])); oldtree->SetBranchAddress("05frt", &(tdc_fr[4])); oldtree->SetBranchAddress("06frt", &(tdc_fr[5])); oldtree->SetBranchAddress("07frt", &(tdc_fr[6])); oldtree->SetBranchAddress("08frt", &(tdc_fr[7])); oldtree->SetBranchAddress("09frt", &(tdc_fr[8])); oldtree->SetBranchAddress("10frt", &(tdc_fr[9])); oldtree->SetBranchAddress("11frt", &(tdc_fr[10])); oldtree->SetBranchAddress("12frt", &(tdc_fr[11])); oldtree->SetBranchAddress("13frt", &(tdc_fr[12])); oldtree->SetBranchAddress("14frt", &(tdc_fr[13])); oldtree->SetBranchAddress("15frt", &(tdc_fr[14])); oldtree->SetBranchAddress("01b_mt", &(mt_b[0])); oldtree->SetBranchAddress("02b_mt", &(mt_b[1])); oldtree->SetBranchAddress("03b_mt", &(mt_b[2])); oldtree->SetBranchAddress("04b_mt", &(mt_b[3])); oldtree->SetBranchAddress("05b_mt", &(mt_b[4])); oldtree->SetBranchAddress("06b_mt", &(mt_b[5])); oldtree->SetBranchAddress("07b_mt", &(mt_b[6])); oldtree->SetBranchAddress("08b_mt", &(mt_b[7])); oldtree->SetBranchAddress("09b_mt", &(mt_b[8])); oldtree->SetBranchAddress("10b_mt", &(mt_b[9])); oldtree->SetBranchAddress("11b_mt", &(mt_b[10])); oldtree->SetBranchAddress("12b_mt", &(mt_b[11])); oldtree->SetBranchAddress("13b_mt", &(mt_b[12])); oldtree->SetBranchAddress("14b_mt", &(mt_b[13])); oldtree->SetBranchAddress("15b_mt", &(mt_b[14])); oldtree->SetBranchAddress("01f_mt", &(mt_f[0])); oldtree->SetBranchAddress("02f_mt", &(mt_f[1])); oldtree->SetBranchAddress("03f_mt", &(mt_f[2])); oldtree->SetBranchAddress("04f_mt", &(mt_f[3])); oldtree->SetBranchAddress("05f_mt", &(mt_f[4])); oldtree->SetBranchAddress("06f_mt", &(mt_f[5])); oldtree->SetBranchAddress("07f_mt", &(mt_f[6])); oldtree->SetBranchAddress("08f_mt", &(mt_f[7])); oldtree->SetBranchAddress("09f_mt", &(mt_f[8])); oldtree->SetBranchAddress("10f_mt", &(mt_f[9])); oldtree->SetBranchAddress("11f_mt", &(mt_f[10])); oldtree->SetBranchAddress("12f_mt", &(mt_f[11])); oldtree->SetBranchAddress("13f_mt", &(mt_f[12])); oldtree->SetBranchAddress("14f_mt", &(mt_f[13])); oldtree->SetBranchAddress("15f_mt", &(mt_f[14])); oldtree->SetBranchAddress("q_targ",&q_targ); oldtree->SetBranchStatus("*",0); oldtree->SetBranchStatus("misc",1); oldtree->SetBranchStatus("gmsref",1); oldtree->SetBranchStatus("01*",1); oldtree->SetBranchStatus("02*",1); oldtree->SetBranchStatus("03*",1); oldtree->SetBranchStatus("04*",1); oldtree->SetBranchStatus("05*",1); oldtree->SetBranchStatus("06*",1); oldtree->SetBranchStatus("07*",1); oldtree->SetBranchStatus("08*",1); oldtree->SetBranchStatus("09*",1); oldtree->SetBranchStatus("10*",1); oldtree->SetBranchStatus("11*",1); oldtree->SetBranchStatus("12*",1); oldtree->SetBranchStatus("13*",1); oldtree->SetBranchStatus("14*",1); oldtree->SetBranchStatus("15*",1); oldtree->SetBranchStatus("q_targ",1); oldtree->SetBranchStatus("*",1); TTree *newtree=oldtree->CopyTree("misc.evt_type==5"); newtree->Print(); } newfile->Write(); delete oldfile; delete newfile; return 0; }