testAveragePowerSpectrum.cxx
1 /*****************************************************************************************************************
2  Author: Ben Strutt
3  Email: b.strutt.12@ucl.ac.uk
4 
5  Description:
6  Program to test the functionality of the CrossCorrelator class, nothing more complicated than that. Writes some output to /tmp.
7 
8 *************************************************************************************************************** */
9 
10 
11 #include "AveragePowerSpectrum.h"
12 #include "FancyFFTs.h"
13 #include "RootTools.h"
14 #include "FFTtools.h"
15 
16 #include "TGraph.h"
17 #include "TFile.h"
18 #include "TTree.h"
19 #include "TChain.h"
20 
21 #include <RawAnitaHeader.h>
22 #include <UsefulAnitaEvent.h>
23 #include <CalibratedAnitaEvent.h>
24 
25 void testAveragePowerSpectrum();
26 
27 int main(){
28 
29  testAveragePowerSpectrum();
30  return 0;
31 
32 }
33 
34 void testAveragePowerSpectrum(){
35 
36  char eventFileName[1024];
37 
38  Int_t run = 352;
39  sprintf(eventFileName, "~/UCL/ANITA/calibratedFlight1415/run%d/calEventFile%d.root", run, run);
40 
41  TFile* eventFile = TFile::Open(eventFileName);
42  TTree* eventTree = (TTree*) eventFile->Get("eventTree");
43 
44  char rawHeaderFileName[1024];
45  sprintf(rawHeaderFileName, "~/UCL/ANITA/flight1415/root/run%d/headFile%d.root", run, run);
46 
47  TFile* rawHeaderFile = TFile::Open(rawHeaderFileName);
48  TTree* headTree = (TTree*) rawHeaderFile->Get("headTree");
49 
50  CalibratedAnitaEvent* event = NULL;
51  eventTree->SetBranchAddress("event", &event);
52 
53  RawAnitaHeader* header = NULL;
54  headTree->SetBranchAddress("header", &header);
55 
56  TFile* outFile = new TFile("/tmp/testAveragePowerSpectrum.root","recreate");
57 
58 
59  const Long64_t numEntries = 1000;
60  // const Int_t numSamps = 256;
61  const Int_t numSamps = 256;
62  const Double_t deltaT = 1./2.6;
63 
64  AveragePowerSpectrum aps("aps", "Antenna 16TH");
65  AveragePowerSpectrum aps2("aps2", "Antenna 8MH");
66 
67  for(Long64_t entry=0; entry<numEntries; entry++){
68 
69  headTree->GetEntry(entry);
70  eventTree->GetEntry(entry);
71  UsefulAnitaEvent* realEvent = new UsefulAnitaEvent(event);
72 
73  TGraph* gr = realEvent->getGraph(16, AnitaPol::kHorizontal);
74  TGraph* grInterp = RootTools::interpolateWithStartTime(gr, gr->GetX()[0], deltaT, numSamps);
75  // RootTools::printTGraphInfo(grInterp);
76  aps.add(grInterp);
77  delete gr;
78  delete grInterp;
79 
80  TGraph* gr2 = realEvent->getGraph(16+8, AnitaPol::kHorizontal);
81  TGraph* grInterp2 = RootTools::interpolateWithStartTime(gr2, gr2->GetX()[0], deltaT, numSamps);
82  aps2.add(grInterp2);
83  delete gr2;
84  delete grInterp2;
85 
86  delete realEvent;
87 
88  }
89 
90  TGraph* gr = aps.makeAvePowSpecTGraph();
91  gr->Write();
92  TGraph* gr2 = aps2.makeAvePowSpecTGraph_dB();
93  gr2->Write();
94 
95  aps.fitAllRayleighHistograms();
96 
97  aps.Write();
98  aps2.Write();
99 
100  outFile->Write();
101  outFile->Close();
102 
103 }
104 
105 
106 
Takes in waveforms and averages averages their power spectra.
TGraph * interpolateWithStartTime(TGraph *grIn, Double_t startTime, Double_t dt, Int_t nSamp)
Wrapper function for ROOT&#39;s interpolator, can zero pad the front to start from a particular time...
Definition: RootTools.cxx:679