1 #include "SummarySet.h" 11 #include "TSeqCollection.h" 12 #include "TChainElement.h" 15 #include "AnitaEventSummary.h" 17 #include "SummarySelector.h" 18 #include "ProgressBar.h" 19 #include "TH2DAntarctica.h" 20 #include "TGraphAntarctica.h" 21 #include "RootTools.h" 25 Acclaim::SummarySet::SummarySet(
const char* pathToSummaryFiles,
const char* treeName,
const char* summaryBranchName,
bool useProof)
26 : fPathToSummaryFiles(pathToSummaryFiles), fTreeName(treeName), fSummaryBranchName(summaryBranchName),
27 fChain(NULL), fSum(NULL), fFirstTime(0), fFirstEventNumber(0), fLastTime(0), fLastEventNumber(0),
28 fUseProof(useProof), fProof(NULL), fBuiltIndex(false), fFlagChain(NULL), fFlags(NULL), fFlagEventNumber(0),
37 Acclaim::SummarySet::~SummarySet(){
52 if(gFile && gFile->IsWritable()){
54 TString title =
"Acclaim::SummarySet ss(\"" + fPathToSummaryFiles +
"\", \"" + fTreeName +
"\", \"" + fSummaryBranchName +
"\")";
55 TNamed note(name, title);
63 std::cerr <<
"Warning in " << __PRETTY_FUNCTION__
64 <<
" won't start new PROOF session if one is already running!" 69 gProof = TProof::Open(
"");
70 const char* anitaUtilInstallDir = getenv(
"ANITA_UTIL_INSTALL_DIR");
71 TString loadAnita = TString::Format(
"%s/share/Acclaim/loadAnita.C", anitaUtilInstallDir);
72 gProof->Load(loadAnita);
73 std::cout <<
"Info in " << __PRETTY_FUNCTION__ <<
", started PROOF!" << std::endl;
83 if(fUseProof && !fProof){
84 fProof = startProof();
87 fChain->SetProof(fUseProof);
92 Long64_t Acclaim::SummarySet::Process(TSelector* selector, Option_t* option, Long64_t nentries, Long64_t firstentry){
96 retVal = fChain->Process(selector, option, nentries, firstentry);
102 void Acclaim::SummarySet::addFlagChain(
const char* flagFileGlob,
const char* flagTreeName){
110 fFlagChain =
new TChain(flagTreeName);
111 fFlagChain->Add(flagFileGlob);
113 fFlagChain->SetBranchAddress(
"eventNumber", &fFlagEventNumber);
114 fFlagChain->SetBranchAddress(
"flags", &fFlags);
119 void Acclaim::SummarySet::init(){
122 fChain =
new TChain(fTreeName);
123 fChain->Add(fPathToSummaryFiles);
124 fN = fChain->GetEntries();
125 fChain->SetBranchAddress(fSummaryBranchName, &fSum);
128 std::cerr <<
"Warning in " << __PRETTY_FUNCTION__ <<
", no entries in TChain of AnitaEventSummary" << std::endl;
132 fLastTime = fSum->realTime;
133 fLastEventNumber = fSum->eventNumber;
136 fFirstTime = fSum->realTime;
137 fFirstEventNumber = fSum->eventNumber;
154 Double_t totalSize = 0;
157 TObjArray* fileElements = fChain->GetListOfFiles();
159 TIter next(fileElements);
160 TChainElement* chEl = NULL;
162 while ((chEl = (TChainElement*) next())){
163 TFile f(chEl->GetTitle());
164 totalSize += f.GetSize();
180 Long64_t nb = fChain->GetEntry(entry);
183 fFlagChain->GetEntry(entry);
185 if(fFlagEventNumber!=fSum->eventNumber){
186 std::cerr <<
"Error in " << __PRETTY_FUNCTION__ <<
", fSum->eventNumber = " << fSum->eventNumber
187 <<
", but fFlagEventNumber = " << fFlagEventNumber <<
"!" << std::endl;
192 fSum->flags = *fFlags;
210 fChain->BuildIndex(
"eventNumber");
214 Long64_t entry = fChain->GetEntryNumberWithIndex(eventNumber);
215 return getEntry(entry);
232 for(Long64_t entry=0; entry < N(); entry++){
239 for(
int peakInd=0; peakInd < sum->nPeaks[polInd]; peakInd++){
242 if(sum->peak[polInd][peakInd].theta < 0 && sum->peak[polInd][peakInd].longitude > -9999 && sum->peak[polInd][peakInd].latitude > -9999){
247 prof->Fill(sum->peak[polInd][peakInd].longitude,
248 sum->peak[polInd][peakInd].latitude,
249 sum->peak[polInd][peakInd].value);
270 for(Long64_t entry=0; entry < N(); entry++){
276 for(
int peakInd=0; peakInd < sum->nPeaks[polInd]; peakInd++){
279 if(sum->peak[polInd][peakInd].theta < 0 && sum->peak[polInd][peakInd].longitude > -9999 && sum->peak[polInd][peakInd].latitude > -9999){
284 hist->Fill(sum->peak[polInd][peakInd].longitude,
285 sum->peak[polInd][peakInd].latitude,
286 sum->peak[polInd][peakInd].value);
308 std::vector<TString> tokens;
309 RootTools::tokenize(tokens, varexp,
">>");
312 TString histName =
"htemp";
315 UInt_t i = tokens.size() > 1 ? 1 : 0;
316 std::vector<TString> tokens2;
317 RootTools::tokenize(tokens2, tokens[i],
"(");
319 histName = tokens2.at(0);
323 TObject* obj = gROOT->FindObject(histName);
329 fDrawOutput = obj->Clone();
344 TCanvas* c = gPad->GetCanvas();
345 TString canName = c->GetName();
346 TString command = varexp;
347 TString histName =
"htemp";
348 if(command.Contains(
">>")){
349 std::vector<TString> tokens;
350 RootTools::tokenize(tokens, varexp,
">>");
353 UInt_t i = tokens.size() > 1 ? 1 : 0;
354 std::vector<TString> tokens2;
355 RootTools::tokenize(tokens2, tokens[i],
"(");
357 if(tokens2.size() > 0){
358 histName = tokens2[0];
365 if(canName==histName){
366 TString newCanName = RootTools::nextCanvasName();
367 c->SetName(newCanName);
368 c->SetTitle(newCanName);
374 Long64_t Acclaim::SummarySet::Draw(
const char* varexp,
const TCut &selection, Option_t *option, Long64_t nentries, Long64_t firstentry){
378 Long64_t retVal = fChain->Draw(varexp, selection, option, nentries, firstentry);
381 renameProofCanvas(varexp);
390 Long64_t Acclaim::SummarySet::Draw(
const char* varexp,
const char* selection, Option_t* option, Long64_t nentries, Long64_t firstentry){
391 TCut cut = selection;
392 return Draw(varexp, cut, option, nentries, firstentry);
398 TH2D* Acclaim::SummarySet::bookTimeHistogram(
const char* name,
const char* title,
int nx,
int ny,
double yMin,
double yMax){
399 TH2D* h =
new TH2D(name, title, nx, getFirstTime(), getLastTime(), ny, yMin, yMax);
404 TH2D* Acclaim::SummarySet::bookEventNumberHistogram(
const char* name,
const char* title,
int nx,
int ny,
double yMin,
double yMax){
405 TH2D* h =
new TH2D(name, title, nx, getFirstEventNumber(), getLastEventNumber(), ny, yMin, yMax);
422 for(Long64_t entry=0; entry < n; entry+=stride){
425 gr->
SetPoint(gr->GetN(), sum->anitaLocation.longitude, sum->anitaLocation.latitude);
static TProof * startProof()
You take it, you own it, you delete it.
void renameProofCanvas(const char *varexp)
Long64_t getEntry(Long64_t entry)
Prints a progress bar and timer to stderr.
Long64_t getEvent(UInt_t eventNumber)
TGraphAntarctica * makePayloadLocationGraph(int stride=TGraphAntarctica::defaultGpsTreeStride)
Common analysis format between UCorrelator and Acclaim.
void findHist(const char *varexp)
virtual void SetPoint(Int_t i, Double_t lon, Double_t lat)
enum AnitaPol::EAnitaPol AnitaPol_t
Polarisation enumeration.
Double_t getTotalSize() const