8 #include "PrettyAnitaEvent.h" 15 void CorSumFCN(Int_t& npar, Double_t*gin,
16 Double_t&f, Double_t* par, Int_t flag)
29 void CorSumFCNanita3(Int_t& npar, Double_t*gin,
30 Double_t&f, Double_t* par, Int_t flag)
61 if(ant<0 || ant>(NUM_SEAVEYS-1)) {
62 std::cerr <<
"Antenna " << ant <<
" is not in range 0-" << (NUM_SEAVEYS-1) << std::endl;
69 can = (TCanvas*) gROOT->FindObject(
"canSixWave");
71 can =
new TCanvas(
"canSixWave",
"canSixWave",800,600);
83 for(
int i=0;i<3;i++) {
85 sprintf(graphTitle,
"Ant: %d",topAnts[i]);
89 grTop->SetLineColor(getPrettyColour(i));
90 grTop->SetTitle(graphTitle);
95 sprintf(graphTitle,
"Ant: %d",bottomAnts[i]);
97 TGraph *grBottom =
getGraph(ciBottom);
98 grBottom->SetLineColor(getPrettyColour(i));
99 grBottom->SetTitle(graphTitle);
100 grBottom->Draw(
"al");
108 char graphTitle[180];
111 if(ant<0 || ant>(NUM_SEAVEYS-1)) {
112 std::cerr <<
"Antenna " << ant <<
" is not in range 0-" << (NUM_SEAVEYS-1) << std::endl;
119 can = (TCanvas*) gROOT->FindObject(
"canTenWave");
121 can =
new TCanvas(
"canTenWave",
"canTenWave",1000,600);
135 int newTopAnts[5]={nextFourAnts[0],topAnts[0],topAnts[1],topAnts[2],nextFourAnts[1]};
136 int newBottomAnts[5]={nextFourAnts[2],bottomAnts[0],bottomAnts[1],bottomAnts[2],nextFourAnts[3]};
139 for(
int i=0;i<5;i++) {
141 sprintf(graphTitle,
"Ant: %d",newTopAnts[i]);
145 grTop->SetLineColor(getPrettyColour(i));
146 grTop->SetTitle(graphTitle);
151 sprintf(graphTitle,
"Ant: %d",newBottomAnts[i]);
153 TGraph *grBottom =
getGraph(ciBottom);
154 grBottom->SetLineColor(getPrettyColour(i));
155 grBottom->SetTitle(graphTitle);
156 grBottom->Draw(
"al");
166 char graphTitle[180];
169 if(ant<0 || ant>(NUM_SEAVEYS-1)) {
170 std::cerr <<
"Antenna " << ant <<
" is not in range 0-" << (NUM_SEAVEYS-1) << std::endl;
177 can = (TCanvas*) gROOT->FindObject(
"canSixFFTPower");
179 can =
new TCanvas(
"canSixFFTPower",
"canSixFFTPower",800,600);
191 for(
int i=0;i<3;i++) {
193 sprintf(graphTitle,
"Ant: %d",topAnts[i]);
197 grTop->SetLineColor(getPrettyColour(i));
198 grTop->SetTitle(graphTitle);
203 sprintf(graphTitle,
"Ant: %d",bottomAnts[i]);
206 grBottom->SetLineColor(getPrettyColour(i));
207 grBottom->SetTitle(graphTitle);
208 grBottom->Draw(
"al");
216 char graphTitle[180];
219 if(ant<0 || ant>(NUM_SEAVEYS-1)) {
220 std::cerr <<
"Antenna " << ant <<
" is not in range 0-" <<(NUM_SEAVEYS-1)<< std::endl;
227 can = (TCanvas*) gROOT->FindObject(
"canSixPower");
229 can =
new TCanvas(
"canSixPower",
"canSixPower",800,600);
241 for(
int i=0;i<3;i++) {
243 sprintf(graphTitle,
"Ant: %d",topAnts[i]);
247 grTop->SetLineColor(getPrettyColour(i));
248 grTop->SetTitle(graphTitle);
253 sprintf(graphTitle,
"Ant: %d",bottomAnts[i]);
256 grBottom->SetLineColor(getPrettyColour(i));
257 grBottom->SetTitle(graphTitle);
258 grBottom->Draw(
"al");
266 char graphTitle[180];
269 if(ant<0 || ant>(NUM_SEAVEYS-1)) {
270 std::cerr <<
"Antenna " << ant <<
" is not in range 0-" <<(NUM_SEAVEYS-1) << std::endl;
277 can = (TCanvas*) gROOT->FindObject(
"canSixCorr");
279 can =
new TCanvas(
"canSixCorr",
"canSixCorr",800,600);
291 for(
int i=0;i<3;i++) {
293 sprintf(graphTitle,
"Ants: %d - %d",topAnts[i],bottomAnts[i]);
299 grTop->SetLineColor(getPrettyColour(i));
300 grTop->SetTitle(graphTitle);
305 sprintf(graphTitle,
"Ants: %d - %d",bottomAnts[i],topAnts[i]);
307 grBottom->SetLineColor(getPrettyColour(i));
308 grBottom->SetTitle(graphTitle);
309 grBottom->Draw(
"al");
318 char graphTitle[180];
321 if(ant<0 || ant>(NUM_SEAVEYS-1)) {
322 std::cerr <<
"Antenna " << ant <<
" is not in range 0-" <<(NUM_SEAVEYS-1) << std::endl;
329 can = (TCanvas*) gROOT->FindObject(
"canTenCorr");
331 can =
new TCanvas(
"canTenCorr",
"canTenCorr",1000,600);
345 int topAnts[5]={nextFourAnts[0],topAnts1[0],topAnts1[1],topAnts1[2],nextFourAnts[1]};
346 int bottomAnts[5]={nextFourAnts[2],bottomAnts1[0],bottomAnts1[1],bottomAnts1[2],nextFourAnts[3]};
349 for(
int i=0;i<5;i++) {
351 sprintf(graphTitle,
"Ants: %d - %d",topAnts[i],bottomAnts[i]);
357 grTop->SetLineColor(getPrettyColour(i));
358 grTop->SetTitle(graphTitle);
363 sprintf(graphTitle,
"Ants: %d - %d",bottomAnts[i],topAnts[i]);
365 grBottom->SetLineColor(getPrettyColour(i));
366 grBottom->SetTitle(graphTitle);
367 grBottom->Draw(
"al");
375 char graphTitle[180];
378 if(ant<0 || ant>(NUM_SEAVEYS-1)) {
379 std::cerr <<
"Antenna " << ant <<
" is not in range 0-" <<(NUM_SEAVEYS-1) << std::endl;
386 can = (TCanvas*) gROOT->FindObject(
"canElevenCorr");
388 can =
new TCanvas(
"canElevenCorr",
"canElevenCorr",1000,400);
413 sprintf(graphTitle,
"Ants: %d - %d",topAnts[1],bottomAnts[0]);
415 grL->SetLineColor(getPrettyColour(1));
416 grL->SetTitle(graphTitle);
421 sprintf(graphTitle,
"Ants: %d - %d",topAnts[1],topAnts[0]);
423 grML->SetLineColor(getPrettyColour(2));
424 grML->SetTitle(graphTitle);
428 sprintf(graphTitle,
"Ants: %d - %d",topAnts[1],topAnts[2]);
430 grMR->SetLineColor(getPrettyColour(3));
431 grMR->SetTitle(graphTitle);
435 sprintf(graphTitle,
"Ants: %d - %d",topAnts[1],bottomAnts[2]);
437 grR->SetLineColor(getPrettyColour(4));
438 grR->SetTitle(graphTitle);
448 for(
int i=0;i<3;i++) {
452 sprintf(graphTitle,
"Ants: %d - %d",topAnts[i],bottomAnts[i]);
457 grTop->SetLineColor(getPrettyColour(i));
458 grTop->SetTitle(graphTitle);
468 sprintf(graphTitle,
"Ants: %d - %d",bottomAnts[1],topAnts[0]);
470 grL->SetLineColor(getPrettyColour(1));
471 grL->SetTitle(graphTitle);
476 sprintf(graphTitle,
"Ants: %d - %d",bottomAnts[1],bottomAnts[0]);
478 grML->SetLineColor(getPrettyColour(2));
479 grML->SetTitle(graphTitle);
483 sprintf(graphTitle,
"Ants: %d - %d",bottomAnts[1],bottomAnts[2]);
485 grMR->SetLineColor(getPrettyColour(3));
486 grMR->SetTitle(graphTitle);
490 sprintf(graphTitle,
"Ants: %d - %d",bottomAnts[1],topAnts[2]);
492 grR->SetLineColor(getPrettyColour(4));
493 grR->SetTitle(graphTitle);
504 char graphTitle[180];
507 if(ant<0 || ant>(NUM_SEAVEYS-1)) {
508 std::cerr <<
"Antenna " << ant <<
" is not in range 0-" << (NUM_SEAVEYS-1) <<std::endl;
515 can = (TCanvas*) gROOT->FindObject(
"canElevenIntCorr");
517 can =
new TCanvas(
"canElevenIntCorr",
"canElevenIntCorr",1000,400);
542 sprintf(graphTitle,
"Ants: %d - %d",topAnts[1],bottomAnts[0]);
544 grL->SetLineColor(getPrettyColour(1));
545 grL->SetTitle(graphTitle);
550 sprintf(graphTitle,
"Ants: %d - %d",topAnts[1],topAnts[0]);
552 grML->SetLineColor(getPrettyColour(2));
553 grML->SetTitle(graphTitle);
557 sprintf(graphTitle,
"Ants: %d - %d",topAnts[1],topAnts[2]);
559 grMR->SetLineColor(getPrettyColour(3));
560 grMR->SetTitle(graphTitle);
564 sprintf(graphTitle,
"Ants: %d - %d",topAnts[1],bottomAnts[2]);
566 grR->SetLineColor(getPrettyColour(4));
567 grR->SetTitle(graphTitle);
577 for(
int i=0;i<3;i++) {
581 sprintf(graphTitle,
"Ants: %d - %d",topAnts[i],bottomAnts[i]);
586 grTop->SetLineColor(getPrettyColour(i));
587 grTop->SetTitle(graphTitle);
597 sprintf(graphTitle,
"Ants: %d - %d",bottomAnts[1],topAnts[0]);
599 grL->SetLineColor(getPrettyColour(1));
600 grL->SetTitle(graphTitle);
605 sprintf(graphTitle,
"Ants: %d - %d",bottomAnts[1],bottomAnts[0]);
607 grML->SetLineColor(getPrettyColour(2));
608 grML->SetTitle(graphTitle);
612 sprintf(graphTitle,
"Ants: %d - %d",bottomAnts[1],bottomAnts[2]);
614 grMR->SetLineColor(getPrettyColour(3));
615 grMR->SetTitle(graphTitle);
619 sprintf(graphTitle,
"Ants: %d - %d",bottomAnts[1],topAnts[2]);
621 grR->SetLineColor(getPrettyColour(4));
622 grR->SetTitle(graphTitle);
632 char graphTitle[180];
635 if(ant<0 || ant>(NUM_SEAVEYS-1)) {
636 std::cerr <<
"Antenna " << ant <<
" is not in range 0-" << (NUM_SEAVEYS-1) << std::endl;
643 can = (TCanvas*) gROOT->FindObject(
"canSixIntCorr");
645 can =
new TCanvas(
"canSixIntCorr",
"canSixIntCorr",800,600);
657 for(
int i=0;i<3;i++) {
659 sprintf(graphTitle,
"Ants: %d - %d",topAnts[i],bottomAnts[i]);
665 grTop->SetLineColor(getPrettyColour(i));
666 grTop->SetTitle(graphTitle);
671 sprintf(graphTitle,
"Ants: %d - %d",bottomAnts[i],topAnts[i]);
673 grBottom->SetLineColor(getPrettyColour(i));
674 grBottom->SetTitle(graphTitle);
675 grBottom->Draw(
"al");
683 char graphTitle[180];
686 if(ant<0 || ant>(NUM_SEAVEYS-1)) {
687 std::cerr <<
"Antenna " << ant <<
" is not in range 0-" << (NUM_SEAVEYS-1) << std::endl;
694 can = (TCanvas*) gROOT->FindObject(
"canSixInter");
696 can =
new TCanvas(
"canSixInter",
"canSixInter",800,600);
708 for(
int i=0;i<3;i++) {
710 sprintf(graphTitle,
"Ant: %d",topAnts[i]);
714 grTop->SetLineColor(getPrettyColour(i));
715 grTop->SetTitle(graphTitle);
720 sprintf(graphTitle,
"Ant: %d",bottomAnts[i]);
723 grBottom->SetLineColor(getPrettyColour(i));
724 grBottom->SetTitle(graphTitle);
725 grBottom->Draw(
"al");
733 TGraph *grWave =
getGraph(chanIndex);
742 TGraph *grWave =
getGraph(chanIndex);
744 double x = 0;
double x1 = 0;
745 double y = 0;
double y1 = 0;
747 int numP = grWave->GetN();
749 for(
int i = 1; i < numP; i++){
750 grWave->GetPoint(i,x,y);
751 grWave->GetPoint(i-1,x1,y1);
754 std::cout << x <<
" " << x1 <<
" "<< chanIndex <<
" " << i <<
" " << numP <<
" "<<
eventNumber << std::endl;
759 if(fPassBandFilter || fNotchFilter) {
763 if(fPassBandFilter) {
810 Double_t x1,y1,x2,y2;
811 gr1->GetPoint(0,x1,y1);
813 gr2->GetPoint(0,x2,y2);
818 gr1->GetPoint(1,x2,y2);
837 if(chanIndex1 <0 || chanIndex1>(NUM_DIGITZED_CHANNELS-1))
838 std::cerr <<
"Invalid channel index:\t" << chanIndex1 <<
"\n";
840 if(chanIndex2 <0 || chanIndex2>(NUM_DIGITZED_CHANNELS-1))
841 std::cerr <<
"Invalid channel index:\t" << chanIndex2 <<
"\n";
847 Double_t x1,y1,x2,y2;
848 gr1->GetPoint(0,x1,y1);
850 gr2->GetPoint(0,x2,y2);
855 gr1->GetPoint(1,x2,y2);
887 void PrettyAnitaEvent::setStyleSixCanvas()
889 gStyle->SetPadTopMargin(0.05);
890 gStyle->SetPadBottomMargin(0.05);
891 gStyle->SetPadLeftMargin(0.05);
892 gStyle->SetPadRightMargin(0.05);
898 int top=-1,bottom=-1;
899 int leftTop=-1, rightTop=-1;
900 int leftBottom=-1, rightBottom=-1;
917 bottomAnts[0]=leftBottom;
918 bottomAnts[1]=bottom;
919 bottomAnts[2]=rightBottom;
931 int top=-1,middle=-1,bottom=-1;
932 int leftTop=-1, rightTop=-1;
933 int leftMiddle=-1, rightMiddle=-1;
934 int leftBottom=-1, rightBottom=-1;
955 nineAnts[0] = leftTop;
957 nineAnts[2] = rightTop;
958 nineAnts[3] = leftMiddle;
959 nineAnts[4] = middle;
960 nineAnts[5] = rightMiddle;
961 nineAnts[6] = leftBottom;
962 nineAnts[7] = bottom;
963 nineAnts[8] = rightBottom;
971 int top=-1,bottom=-1;
972 int leftTop=-1, rightTop=-1;
973 int leftLeftTop=-1, rightRightTop=-1;
974 int leftBottom=-1, rightBottom=-1;
975 int leftLeftBottom=-1, rightRightBottom=-1;
993 nextFourAnts[0]=leftLeftTop;
994 nextFourAnts[1]=rightRightTop;
995 nextFourAnts[2]=leftLeftBottom;
996 nextFourAnts[3]=rightRightBottom;
1003 int top=-1,middle=-1,bottom=-1;
1004 int leftTop=-1, rightTop=-1;
1005 int leftLeftTop=-1, rightRightTop=-1;
1006 int leftMiddle=-1, rightMiddle=-1;
1007 int leftLeftMiddle=-1, rightRightMiddle=-1;
1008 int leftBottom=-1, rightBottom=-1;
1009 int leftLeftBottom=-1, rightRightBottom=-1;
1037 nextSixAnts[0]=leftLeftTop;
1038 nextSixAnts[1]=rightRightTop;
1039 nextSixAnts[2]=leftLeftMiddle;
1040 nextSixAnts[3]=rightRightMiddle;
1041 nextSixAnts[4]=leftLeftBottom;
1042 nextSixAnts[5]=rightRightBottom;
1047 void PrettyAnitaEvent::fillNadirArrays(
int ant,
int nadirAnts[5])
1055 int nadirAntNums[NUM_PHI]={32,-1,33,-1,34,-1,35,-1,36,-1,37,-1,38,-1,39,-1};
1057 int left = -1;
int right = -1;
1058 int leftLeft = -1;
int rightRight = -1;
1059 int antBottom = ant;
1065 int nadir = nadirAntNums[antBottom-16];
1071 left = nadirAntNums[antBottom-17];
1073 if((antBottom-15)==16){
1076 right = nadirAntNums[antBottom-15];
1085 leftLeft = nadir - 1;
1091 rightRight = nadir + 1;
1106 nadirAnts[0]=leftLeft;
1107 nadirAnts[1]=rightRight;
1118 int PrettyAnitaEvent::getPrettyColour(
int index)
1120 if(index>10)
return index;
1121 Int_t niceColours[11]={50,38,30,9,8,44,24,12,40,20,41};
1122 return niceColours[index];
1141 for(
int ant=0;ant<32;ant++) {
1144 for(
int samp=0;samp<
fNumPoints[chanIndex];samp++) {
1145 double vSquared=
fVolts[chanIndex][samp]*
fVolts[chanIndex][samp];
1147 if(vSquared>maxVal) {
1153 if(peakPtr) *peakPtr=maxVal;
1162 for(
int ant=0;ant<16;ant++) {
1169 Double_t *y = grCor->GetY();
1170 Double_t peak=TMath::MaxElement(grCor->GetN(),y);
1171 Double_t
rms=TMath::RMS(grCor->GetN(),y);
1173 if((peak/
rms)>maxVal) {
1177 Double_t maxBottom=TMath::MaxElement(
fNumPoints[ciBottom],
fVolts[ciBottom]);
1178 if(maxBottom>maxTop)
1184 if(peakPtr) *peakPtr=maxVal;
1193 double maxVals[16]={0};
1194 for(
int ant=0;ant<16;ant++) {
1204 Double_t *y1 = grCor1->GetY();
1205 Double_t PeakRMS[3];
1206 PeakRMS[0]=TMath::MaxElement(grCor1->GetN(),y1)/TMath::RMS(grCor1->GetN(),y1);
1207 Double_t *y2 = grCor2->GetY();
1208 PeakRMS[1]=TMath::MaxElement(grCor2->GetN(),y2)/TMath::RMS(grCor2->GetN(),y2);
1210 Double_t *y3 = grCor3->GetY();
1211 PeakRMS[2]=TMath::MaxElement(grCor3->GetN(),y3)/TMath::RMS(grCor3->GetN(),y3);
1212 Double_t maxPeakRMS = TMath::MaxElement(3, PeakRMS);
1215 if(maxPeakRMS>maxVals[ant])
1216 maxVals[ant]=maxPeakRMS;
1223 for(
int ant=0;ant<16;ant++) {
1225 if(leftAnt<0) leftAnt=15;
1227 if(rightAnt>15) rightAnt=0;
1235 Double_t newVal=maxVals[leftAnt]+maxVals[ant]+maxVals[rightAnt];
1241 Double_t maxMiddle=TMath::MaxElement(
fNumPoints[ciMiddle],
fVolts[ciMiddle]);
1242 Double_t maxBottom=TMath::MaxElement(
fNumPoints[ciBottom],
fVolts[ciBottom]);
1243 if(maxTop>maxBottom && maxTop>maxMiddle) maxAnt = ant;
1244 else if (maxMiddle>maxBottom) maxAnt = otherAnt;
1245 else maxAnt=otherAnt+16;
1249 if(peakPtr) *peakPtr=maxVal;
1261 int nextFourAnts[4];
1263 int nadirAnts[5]={0};
1264 fillNadirArrays(centreAnt,nadirAnts);
1268 for(
int i=0;i<4;i++)
1301 theSum->
firstAnt[11]=nextFourAnts[0];
1307 theSum->
firstAnt[13]=nextFourAnts[2];
1314 theSum->
firstAnt[15]=nextFourAnts[0];
1320 theSum->
firstAnt[17]=nextFourAnts[2];
1329 if(nadirAnts[4]>-1){
1464 for(
int corInd=0;corInd<35;corInd++) {
1483 double *theTimes = grCor->GetX();
1484 double *theValues = grCor->GetY();
1486 int numPoints=grCor->GetN();
1487 double rmsVal=TMath::RMS(numPoints,theValues);
1488 int maxIndex=TMath::LocMax(numPoints,theValues);
1503 theSum->
maxCorVals[corInd]=theValues[maxIndex];
1516 for(
int i=maxIndex-1;i>=1;i--) {
1518 if(theValues[i]>=theValues[i-1] && theValues[i]>=theValues[i+1]) {
1524 for(
int i=maxIndex+1;i<grCor->GetN();i++) {
1525 if(i>=grCor->GetN()-1)
break;
1526 if(theValues[i]>=theValues[i-1] && theValues[i]>=theValues[i+1]) {
1539 static int firstTime=1;
1541 gMinuit =
new TMinuit(2);
1544 gMinuit->SetObjectFit(theSum);
1545 gMinuit->SetFCN(CorSumFCN);
1546 double par[2]={theSum->
fAntPhi[1][0],0};
1547 double stepSize[2]={0.01,0.01};
1548 double minVal[2]={0,-1*TMath::PiOver2()};
1549 double maxVal[2]={TMath::TwoPi(),TMath::PiOver2()};
1550 char parName[2][20];
1551 sprintf(parName[0],
"phiWave");
1552 sprintf(parName[1],
"thetaWave");
1553 for (
int i=0; i<2; i++){
1554 gMinuit->DefineParameter(i, parName[i], par[i], stepSize[i], minVal[i], maxVal[i]);
1557 Double_t phiWave,thetaWave;
1558 Double_t phiWaveErr,thetaWaveErr;
1560 gMinuit->SetPrintLevel(-1);
1562 gMinuit->GetParameter(0,phiWave,phiWaveErr);
1563 gMinuit->GetParameter(1,thetaWave,thetaWaveErr);
1565 Int_t npari,nparx,istat;
1566 Double_t fmin,fedm,errdef;
1567 gMinuit->mnstat(fmin,fedm,errdef,npari,nparx,istat);
1570 theSum->
setFitResults(phiWave,thetaWave,phiWaveErr,thetaWaveErr,fmin);
1598 for(
int i=0;i<6;i++)
1647 theSum->
firstAnt[20]=nextSixAnts[0];
1651 theSum->
firstAnt[22]=nextSixAnts[2];
1655 theSum->
firstAnt[24]=nextSixAnts[4];
1660 theSum->
firstAnt[26]=nextSixAnts[0];
1664 theSum->
firstAnt[28]=nextSixAnts[2];
1668 theSum->
firstAnt[30]=nextSixAnts[4];
1673 theSum->
firstAnt[32]=nextSixAnts[0];
1675 theSum->
firstAnt[33]=nextSixAnts[4];
1677 theSum->
firstAnt[34]=nextSixAnts[1];
1679 theSum->
firstAnt[35]=nextSixAnts[5];
1682 theSum->
firstAnt[36]=nextSixAnts[0];
1690 theSum->
firstAnt[40]=nextSixAnts[1];
1693 theSum->
firstAnt[41]=nextSixAnts[0];
1708 theSum->
firstAnt[48]=nextSixAnts[1];
1711 theSum->
firstAnt[49] = nineAnts[0];
1713 theSum->
firstAnt[50] = nineAnts[3];
1715 theSum->
firstAnt[51] = nineAnts[6];
1727 for(
int corInd=0;corInd<NUM_CORRELATIONS_ANITA3;corInd++) {
1746 double *theTimes = grCor->GetX();
1747 double *theValues = grCor->GetY();
1749 int numPoints=grCor->GetN();
1750 double rmsVal=TMath::RMS(numPoints,theValues);
1751 int maxIndex=TMath::LocMax(numPoints,theValues);
1767 theSum->
maxCorVals[corInd]=theValues[maxIndex];
1780 for(
int i=maxIndex-1;i>=1;i--) {
1782 if(theValues[i]>=theValues[i-1] && theValues[i]>=theValues[i+1]) {
1788 for(
int i=maxIndex+1;i<grCor->GetN();i++) {
1789 if(i>=grCor->GetN()-1)
break;
1790 if(theValues[i]>=theValues[i-1] && theValues[i]>=theValues[i+1]) {
1803 static int firstTime=1;
1805 gMinuit =
new TMinuit(2);
1808 gMinuit->SetObjectFit(theSum);
1809 gMinuit->SetFCN(CorSumFCNanita3);
1810 double par[2]={theSum->
fAntPhi[1][0],0};
1811 double stepSize[2]={0.01,0.01};
1812 double minVal[2]={0,-1*TMath::PiOver2()};
1813 double maxVal[2]={TMath::TwoPi(),TMath::PiOver2()};
1814 char parName[2][20];
1815 sprintf(parName[0],
"phiWave");
1816 sprintf(parName[1],
"thetaWave");
1817 for (
int i=0; i<2; i++){
1818 gMinuit->DefineParameter(i, parName[i], par[i], stepSize[i], minVal[i], maxVal[i]);
1821 Double_t phiWave,thetaWave;
1822 Double_t phiWaveErr,thetaWaveErr;
1824 gMinuit->SetPrintLevel(-1);
1828 gMinuit->GetParameter(0,phiWave,phiWaveErr);
1829 gMinuit->GetParameter(1,thetaWave,thetaWaveErr);
1832 Int_t npari,nparx,istat;
1833 Double_t fmin,fedm,errdef;
1834 gMinuit->mnstat(fmin,fedm,errdef,npari,nparx,istat);
1837 theSum->
setFitResults(phiWave,thetaWave,phiWaveErr,thetaWaveErr,fmin);
UInt_t eventNumber
Event number from software.
double secondCorTimes[35][2]
The time of the next highest correlation values (tore both left and right vals).
double maxCorVals[35]
The maximumn correlation value for each of the 35 possible correlations (3 up-down, 4 left-right, 4 diagonal, 4 outside-neighbour).
void fillErrorsAndFit()
The worker function that actually does the fitting.
void fillErrorsAndFit()
The worker function that actually does the fitting.
TCanvas * getTenWaveformCanvas(int ant, AnitaPol::AnitaPol_t pol, TCanvas *can=0)
Generates a TCanvas with ten waveforms plotted in it.
void fillSixAntArrays(int ant, int topAnts[3], int bottomAnts[3])
Utility to get neighbouring antenna numbers.
void setFitResults(Double_t tPhi, Double_t tTheta, Double_t tPhiErr, Double_t tThetaErr, Double_t tChiSq)
Sets the result of an external fit.
void setFitResults(Double_t tPhi, Double_t tTheta, Double_t tPhiErr, Double_t tThetaErr, Double_t tChiSq)
Sets the result of an external fit.
int nextSixAnts[6]
The numbers of the six outside antennas.
double secondCorVals[35][2]
The peak of the next highest correlation values (tore both left and right vals).
TCanvas * getSixCorrelationCanvas(int ant, AnitaPol::AnitaPol_t pol, TCanvas *can=0)
Generates a TCanvas with six correlations plotted in it.
double rmsCorVals[52]
The rms correlation value for each of the 49 possible correlations (3 top-middle, 3 middle-bottom...
double maxCorTimes[35]
The time of the maximum correlation value for each of the 35 possible correlations (3 up-down...
double maxCorVals[52]
The maximum correlation value for each of the 49 possible correlations (3 top-middle, 3 middle-bottom, 6 left-right, 6 diagonal, 6 outside-centre, 6 outside-neighbour, 4 diagonal with neighbour, 13 top-bottom combinations).
This is the event class, inherited from UsefulAnitaEvent, that has a number of correlation related me...
TGraph * getInterpolatedGraph(int chanIndex, double deltaT)
Wrapper around FFTtools::getInterpolatedGraph.
enum WaveCalType::EWaveCalType WaveCalType_t
The calibration enumeration type.
Double_t getChiSquared(Double_t tPhiWave, Double_t tThetaWave, Int_t numAnts)
Tests a given plane wave hypothesis using a either six or ten antennas.
int getMaxAntennaCorrelationRollingAvg(AnitaPol::AnitaPol_t pol, Double_t *peakPtr=0)
Select the upper antenna with the maximum correlation (defined as peak/rms of the correlation) with i...
PrettyAnitaHk – The prettified ANITA Hk.
double fVolts[12 *9][260]
Array of unwrapped (unless kNoCalib) voltages for each channel.
This is a poorly thought out class that was meant to be a summary of peaks of the correlations of som...
int fNumPoints[12 *9]
Number of poins per channel.
TCanvas * getSixWaveformCanvas(int ant, AnitaPol::AnitaPol_t pol, TCanvas *can=0)
Generates a TCanvas with six waveforms plotted in it.
TCanvas * getSixInterpolatedCorrelationCanvas(int ant, AnitaPol::AnitaPol_t pol, Double_t deltaT=(1./(2.6 *8)), TCanvas *can=0)
Generates a TCanvas with six correlations of interpolated waveforms plotted in it.
TCanvas * getElevenCorrelationCanvas(int ant, AnitaPol::AnitaPol_t pol, TCanvas *can=0)
Generates a TCanvas with eleven correlations (the combinations of six antennas) plotted in it...
int secondAnt[52]
The index of the second antenna in the 49 possible pairs (3 top-middle, 3 middle-bottom, 6 left-right, 6 diagonal, 6 outside-centre, 6 outside-neighbour, 4 diagonal with neighbour, 13 top-bottom combinations).
TGraph * getCorrelationInterpolated(int chanIndex1, int chanIndex2, Double_t deltaT=(1./(2.6 *8)))
Wrapper around FFTtools::getInterpolatedCorrelationGraph.
TCanvas * getElevenInterpolationCorrelationCanvas(int ant, AnitaPol::AnitaPol_t pol, Double_t deltaT=(1./(2.6 *8)), TCanvas *can=0)
Generates a TCanvas with eleven correlations of interpolated waveforms (the 11 correlations are combi...
CorrelationSummaryAnita3 * createCorrelationSummaryAnita3(Int_t centreAnt, AnitaPol::AnitaPol_t pol, Double_t deltaT=0)
Generates a CorrelationSummaryAnita3 object for a set of 15 antennas.
int firstAnt[52]
There are 49 correlations formed from a set of 15 antennas (5-phi sectors).
void fillNextFourAntArrays(int ant, int nextFourAnts[4])
Utility to get next to neighbouring antenna numbers.
Double_t getChiSquared(Double_t tPhiWave, Double_t tThetaWave, Int_t numAnts)
Tests a given plane wave hypothesis using a either six or ten antennas.
TGraph * getSimplePowerEnvelopeGraph(int chanIndex)
Wrapper around FFTtools::getSimplePowerEnvelopeGraph.
TGraph * getGraph(int chanIndex) const
Returns a voltage-time waveform for given channel index.
UsefulAnitaEvent – The Calibrated Useful Anita Event object.
Float_t rms[12 *9]
RMS of the waveform.
int getMaxAntenna(AnitaPol::AnitaPol_t pol, Double_t *peakPtr=0)
Calls getMaxAntennaCorrelation.
TGraph * getFFTMagnitude(TGraph *grIn)
Wrapper around FFTtools::makePowerSpectrum.
double secondCorTimes[52][2]
The time of the next highest correlation values (tore both left and right vals).
TCanvas * getSixPowerEnvelopeCanvas(int ant, AnitaPol::AnitaPol_t pol, TCanvas *can=0)
Generates a TCanvas with six power envelope plots using FFTtools::getSimplePowerEnvelopeGraph.
TGraph * getCorrelation(int chanIndex1, int chanIndex2)
Wrapper around FFTtools::getCorrelationGraph.
CalibratedAnitaEvent – The Calibrated Calibrated Anita Event object.
double maxCorTimes[52]
The time of the maximum correlation value for each of the 49 possible correlations (3 top-middle...
void fillNineAntArrays(int ant, int nineAnts[9])
Utility to get neighbouring antenna numbers ( Top 0-2, Middle 3-5, Bottom 6-8)
int firstAnt[35]
There are 35 correlations formed from a set of 13 antennas (5-phi sectors).
TCanvas * getSixInterpolatedCanvas(int ant, AnitaPol::AnitaPol_t pol, Double_t deltaT=(1./(2.6 *8)), TCanvas *can=0)
Generates a TCanvas with six interpolated waveforms plotted in it.
This is a poorly thought out class that was meant to be a summary of peaks of the correlations of som...
CorrelationSummaryAnita3 * getCorrelationSummaryAnita3(Int_t centreAnt, AnitaPol::AnitaPol_t pol, Double_t deltaT=0)
Generates a CorrelationSummaryAnita3 object for a set of 15 antennas.
int getMaxAntennaVSquared(AnitaPol::AnitaPol_t pol, Double_t *peakPtr=0)
Select the antenna with the maximum voltage squared.
double rmsCorVals[35]
The rms correlation value for each of the 35 possible correlations (3 up-down, 4 left-right, 4 diagonal, 4 outside-neighbour).
TCanvas * getSixFFTPowerCanvas(int ant, AnitaPol::AnitaPol_t pol, TCanvas *can=0)
Generates a TCanvas with six FFT power spectral densitity plots.
int getMaxAntennaCorrelation(AnitaPol::AnitaPol_t pol, Double_t *peakPtr=0)
Select the upper antenna with the maximum correlation (defined as peak/rms of the correlation) with i...
int nextFourAnts[4]
The numbers of the four outside antennas.
void fillNextSixAntArrays(int ant, int nextFourAnts[4])
Utility to get next to neighbouring antenna numbers.
double secondCorVals[52][2]
The peak of the next highest correlation values (tore both left and right vals).
CorrelationSummary * getCorrelationSummary(Int_t centreAnt, AnitaPol::AnitaPol_t pol, Double_t deltaT=0)
Generates a CorrelationSummary object for a set of 10 antennas.
int secondAnt[35]
The index of the second antenna in the 35 possible pairs (3 up-down, 4 left-right, 4 diagonal, 4 outside-neighbour).
Double_t fAntPhi[35][2]
A lookup table for antenna postions.
Double_t fAntPhi[52][2]
A lookup table for antenna postions.
enum AnitaPol::EAnitaPol AnitaPol_t
Polarisation enumeration.
TCanvas * getTenCorrelationCanvas(int ant, AnitaPol::AnitaPol_t pol, TCanvas *can=0)
Generates a TCanvas with ten correlations plotted in it.
RawAnitaEvent – The Raw ANITA Event Data.
PrettyAnitaEvent(CalibratedAnitaEvent *calPtr, WaveCalType::WaveCalType_t calType=WaveCalType::kDefault)
The assignment constructor.