SumTreeReductionSelector.cxx
1 #include "SumTreeReductionSelector.h"
2 #include "TProofOutputFile.h"
3 
9 Acclaim::SumTreeReductionSelector::SumTreeReductionSelector(const char* outFileName, const char* reducedSumTreeName)
10  : fOutSum(NULL), fOutTree(NULL), fProofOutFile(NULL), fOutFileName("fOutFileName", outFileName), fReducedSumTreeName("fReducedSumTreeName", reducedSumTreeName)
11 {
12 
13 }
14 
17 
18  // Does this mean the slaves can find this?
19  fInput->Add(&fOutFileName);
20  fInput->Add(&fReducedSumTreeName);
21 }
22 
23 
25 
26  fOutFileName = *(dynamic_cast<TNamed*>(fInput->FindObject("fOutFileName")));
27  fReducedSumTreeName = *(dynamic_cast<TNamed*>(fInput->FindObject("fReducedSumTreeName")));
28 
29  // https://root-forum.cern.ch/t/proof-tree-merging/8097/2
30  // https://root.cern.ch/handling-large-outputs-root-files
31  fProofOutFile = new TProofOutputFile(fOutFileName.GetTitle(), TProofOutputFile::kMerge);
32  GetOutputList()->Add(fProofOutFile);
33 
34  fOut = fProofOutFile->OpenFile("recreate");
35  fOutTree = new TTree("sumTree", "sumTree");
36  fOutTree->Branch("sum", &fOutSum);
37 
38  SummarySelector::SlaveBegin(tree); // Optional analysisCutTree needs to be booked after TProofOutputFile
39 
40 }
41 
42 
44 
45  Bool_t matchSelection = SummarySelector::Process(entry);
46  if(matchSelection){
47  // *fOutSum = *fSum;
48  fOutTree->Fill();
49  }
50  return matchSelection;
51 }
52 
55 
56  fOut->Write();
57  fOut->Close();
58  fOut = NULL;
59  fOutTree = NULL; // should have been written to disk
60 }
61 
64 
65  TList* l = GetOutputList();
66  fProofOutFile = dynamic_cast<TProofOutputFile*>(l->FindObject(fOutFileName.GetTitle()));
67  if(fProofOutFile){
68  TFile* f = fProofOutFile->OpenFile("read");
69  TTree* t = dynamic_cast<TTree*>(f->Get(fReducedSumTreeName.GetTitle()));
70  if(t){
71  std::cout << "Created " << t->GetName() << " in file " << f->GetName() << " has "
72  << t->GetEntries() << " entries..." << std::endl;
73  // t->Print();
74  }
75  f->Close();
76  // write to file, maybe...
77  }
78 }
virtual Bool_t Process(Long64_t entry)
Reads the AnitaEventSummary TTree entry and sets the fSum pointer. Cycles through the fCuts...
virtual void Begin(TTree *tree)
SumTreeReductionSelector(const char *outFileName="reduced", const char *reducedSumTreeName="sumTree")
virtual void SlaveBegin(TTree *tree)
virtual Bool_t Process(Long64_t entry)
Reads the AnitaEventSummary TTree entry and sets the fSum pointer. Cycles through the fCuts...